2013-03-23 21 views
20

Schemality jest terminem, który obecnie pływa w świecie NoSql.Co oznacza brak schematu dla bazy danych NoSQL?

  1. Co to oznacza?
  2. Mam dokument z 3 nieruchomościami dzisiaj i przechodzę do produkcji z nim, a następnie co stanie się z moimi danymi, gdy będę musiał dodać 2 dodatkowe właściwości do mojego dokumentu?
  3. Czy jest to problem wyłącznie związany z migracjami, w którym muszę zarządzać moją migracją danych, czy też baza danych NoSql może powodować tak duże tarcie, jak RDBMS lub w jakiś sposób ułatwić?

Odpowiedz

16

Schema mniej jest nieco mylące, to lepiej pomyśleć o tym, jak:

  • SQL = schematu narzuconego przez RDBMS na Write
  • NoSQL = Częściowa Schema egzekwowane przez DBMS Zapis na plus schematu pełni egzekwowane przez aplikację na Read (Zlecanie schematu)

więc gdy domniemany Schema mniej NoSQL danych sklep będzie w teorii pozwala na przechowywanie wszelkich danych chcesz (typica lly par wartości klucza, w dokumencie) bez uprzedniej znajomości kluczy lub typów danych, będzie bezcelowe, chyba że masz jakiś mechanizm do pobierania i używania danych. Zasadniczo schemat jest częściowo przenoszony z RDBMS do kodu aplikacji. Mówię częściowo, ponieważ dodałeś indeksy do zbiorów dokumentów i lub podzieliłeś dane pod kątem wydajności, więc DBB NoSQL będzie miał lokalny schemat częściowy i być może wymuszony przez ograniczenia Unique.

Do dodawania dodatkowych atrybutów do dokumentu/obiektu w sklepie. W zależności od stopnia wypełnienia dokumentu (nieużywanego miejsca) w fizycznym bloku danych dodanie kilku par wartości klucza do dokumentów może spowodować fizyczne przeniesienie dokumentu do większego, ciągłego bloku pamięci, i ponownie zbudowane powiązane indeksy. Jeśli zamierzasz używać nowych kluczy w często wykorzystywanym zapytaniu, będziesz także chciał dodać nowy odpowiedni indeks, który oczywiście będzie wymagał fizycznego przechowywania, trochę czasu na początkową budowę i prawdopodobnie poprowadzi cię do sysadmin do przydziel więcej pamięci do DBMS, aby umożliwić buforowanie nowego indeksu.

+0

Dobra uwaga na temat przydziału miejsca. Ale w szczególności dla punktu 2 i 3, jak zarządzać danymi w.r.t do migracji danych? Czy produkt NoSQl jest na tyle inteligentny, aby wykrywać zmiany, które są przyrostowe i nie łamią się? –

+2

Zależy od produktu, ale ogólnie, jeśli chcesz dodać dodatkowe atrybuty/klucze do dokumentu, wszystko, co musisz zrobić, to zmienić kod aplikacji na przechowywanie/używanie nowych par wartości klucza. DBMS nie dba o to, co jest przechowywane w dokumencie, jeśli nie ma być indeksowany, i zakładając, że jest wystarczająco dużo miejsca przydzielonego dla każdego dokumentu, tak że DBMS nie musi restrukturyzować jego zaplecza. – arober11

+0

Więc musimy wziąć pod uwagę możliwość zwiększenia rozmiaru dokumentu przed rozdaniem? –

2

Trochę późno, ale podczas poszukiwania na ten temat raz znalazłem ten artykuł

http://tech.pro/tutorial/1189/basics-of-ravendb-nosql

podano w punkcie 3, w artykule będę go zacytować ponownie dla ułatwienia.

Dodanie i zmiana modeli danych na RavenDB nie może być prostsze. Od jest to baza danych NoSQL, może obsługiwać dodatki i usunięcia do swoich modeli bardzo prosto. Jeśli właściwość zostanie dodana do twojej klasy, będzie to ustawiona na domyślną wartość tego typu. Jeśli właściwość zostanie usunięta, po deserializacji tej wartości zostanie zignorowana . Koniec z futzing ze skryptami SQL .

Wydaje się, że jest to logiczna odpowiedź dla RavenDB.