NoSql не е заместител на SQL бази данни, но е валидна алтернатива за много ситуации, в които стандартният SQL не е най-добрият подход за съхранение на вашите данни.
Тъй като ни научиха, че всеки път, когато трябва да съхранявате данни в „склад за данни“ и да потърсите тези данни за извличане, SQL е най-доброто решение, трябва само да решите кой SQL Engine да използвате и играта приключи.
През 2012 г. това предложение беше погрешно, искам да кажа, че вече не можете да приемате, че SQL е „единственият начин“ за съхраняване на данни, но трябва да знаете, че има други алтернативи и те се наричат БЕЗ SQL. Под този термин имаме различни механизми за съхранение, които не са базирани на SQL, а в .NET имаме изключителен продукт, наречен RavenDB (можете да намерите наистина добро въведение в RavenDb в блога на Mauro).
Първата голяма разлика със стандартния SQL е липсата на схема
Едно от най-досадните ограничения на SQL Server е необходимостта да посочите точния формат на данните, които искате да съхранявате в хранилището си. Това е необходимо поради много добри причини, но има ситуации, в които наистина не ви пука за това, особено ако вашият софтуер до голяма степен се основава на концепцията за ООП. Да предположим, че имате този обект
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: }
За момент няма притеснения, че този обект е лошо капсулиран (има публичен метод за получаването и инсталирането му), а се фокусира само върху необходимостта да се „съхрани“ този обект някъде. Ако използвате стандартно SQL хранилище, първото нещо, което трябва да направите, е да създадете таблица, след това да дефинирате колоните, да дефинирате максималната дължина за колоната Име и накрая да изберете ORM за използване или създаване на специален слой данни и накрая, можете да запазите обекта.
Ако работите с врана, това е единственият код, който ви трябва
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: }
Сървърът просто взема обекта и го запазва.
За да запазите обект в хранилището на данни, са необходими само две функции:„Запазване“, за да каже на хранилището обекта, който искате да запишете, и „SaveChanges“, които всъщност извършват запазването.
Какво получавате с този прост фрагмент от код? Просто отидете на стандартния браузър на адреса на сървъра и трябва да видите съдържанието на базата данни.
Съдържание на базата данни след просто вмъкване на обект
На фигурата можете да видите съдържанието на базата данни crow, тя съдържа играч и малка 1 до обекта е Id, който Raven използва вътрешно, за да идентифицира уникално този обект. Друг обект, наречен Sys Doc Hilo / Players, се грижи за генерирането на идентификатор за обекта Players с алгоритъма Hilo.
Това е всичко, няма нужда да дефинирате схемата, няма нужда да имате специално свойство Id или друго изискване, за да направите обекта съвместим с хранилището, просто извикайте метода Store за всеки .NET обект и вашия обект е в базата данни, точка!