NoSql nenahrazuje databáze SQL, ale je platnou alternativou pro mnoho situací, kdy standardní SQL není nejlepší přístup k ukládání vašich dat.
Protože jsme se naučili, že kdykoli potřebujete uložit data do „datového skladu“ a dotazovat se na tato data pro extrakci, SQL je nejlepší řešení, stačí se rozhodnout, který SQL Engine použít, a hra je u konce.
V roce 2012 byl tento návrh chybný, chci říct, že už nemůžete předpokládat, že SQL je „jediný způsob“ ukládání dat, ale měli byste vědět, že existují i jiné alternativy a nazývají se NO SQL. Pod tímto pojmem máme různé úložné mechanismy, které nejsou založeny na SQL, a v .NET máme výjimečný produkt s názvem RavenDB (opravdu dobrý úvod do RavenDb najdete na Mauro blogu).
Prvním velkým rozdílem oproti standardnímu SQL je absence schématu
Jedním z nejnepříjemnějších omezení SQL Serveru je nutnost zadat přesný formát dat, která chcete uložit ve svém úložišti. To je nutné z mnoha dobrých důvodů, ale existují situace, kdy se o to opravdu nestaráte, zvláště pokud je váš software z velké části založen na konceptu OOP. Předpokládejme, že máte tento objekt
1: class player
2: {
3: public String Name { get; set; }
4:
5: public DateTime RegistrationDate { get; set; }
6:
7: public Int32 Age { get; set; }
8: }
Na okamžik se neobáváme, že je tento objekt špatně zapouzdřený (má veřejný způsob jeho získání a instalace), ale soustředí se pouze na potřebu tento objekt někam „uložit“. Pokud používáte standardní úložiště SQL, první věc, kterou musíte udělat, je vytvořit tabulku, poté definovat sloupce, definovat maximální délku pro sloupec Název a nakonec vybrat ORM pro použití nebo vytvořit vyhrazenou datovou vrstvu a konečně můžete objekt uložit.
Pokud pracujete s vránou, je to jediný kód, který potřebujete
1: var store = new DocumentStore { Url = "http://localhost:8080" };
2: store.Initialize();
3: using (var session = store.OpenSession())
4: {
5: var player = new Player
6: {
7: Age = 30,
8: RegistrationDate = DateTime.Now,
9: Name = "Alkampfer",
10: };
11: session.Store(player);
12: session.SaveChanges();
13: }
Server jednoduše vezme objekt a uloží jej.
K uložení objektu do datového skladu jsou potřeba pouze dvě funkce:„Save“ pro sdělení objektu, který chcete uložit do úložiště, a „SaveChanges“, která ve skutečnosti provede uložení.
Co získáte tímto jednoduchým fragmentem kódu? Stačí přejít do standardního prohlížeče na adrese serveru a měli byste vidět obsah databáze.
Obsah databáze po jednoduchém vložení objektu
Na obrázku můžete vidět obsah databáze crow, která obsahuje přehrávač a malá 1 vedle objektu je Id, které Raven interně používá k jedinečné identifikaci tohoto objektu. Další objekt, nazvaný Sys Doc Hilo / Players, se stará o generování identifikátoru pro objekt Players pomocí algoritmu Hilo.
To je vše, není třeba definovat schéma, není potřeba mít speciální vlastnost Id nebo jakýkoli jiný požadavek, aby byl objekt kompatibilní s úložištěm, stačí zavolat metodu Store pro jakýkoli objekt .NET a váš objekt je v databázi, tečka!