/ / Wskazówki dotyczące wyboru struktury / silnika bazy danych - c #, sql, oracle, nosql, ravendb

Wskazówki dotyczące wyboru struktury / silnika bazy danych - c #, sql, oracle, nosql, ravendb

W moim miejscu pracy natknęliśmy się naproblem, w którym potrzebujemy stworzyć rodzaj aplikacji inwentaryzacyjnej, która przechowuje różne typy właściwości dla każdego obiektu i z możliwością dynamicznego przetwarzania właściwości / kolumn, tj. nie chcemy modyfikować aplikacji za każdym razem, gdy nowa właściwość dla istniejący obiekt (powiedzmy, teraz musimy wziąć pod uwagę sprzęt bluetooth!) lub kiedy pojawia się nowy obiekt (teraz musimy wziąć pod uwagę gamepady!). Obiekty te będą oczywiście musiały być czytelne, jak również edytowalne.

Chociaż jesteśmy tradycyjnie skoncentrowani na SQL (Oracle,MySQL, MSSQL), nie jestem przeciwny możliwości zrobienia tego w jakikolwiek inny sposób (np. NoSQL), za który nigdy nie rozmawialiśmy i jesteśmy tego rodzaju niepomniani. Musielibyśmy jednak opracować przy użyciu ASP.NET MVC.

Wszelkie wskazówki będą mile widziane. :)

Odpowiedzi:

3 dla odpowiedzi № 1

W rzeczywistości problem, który opisałeś, jest perfekcyjnyrozwiązywalne poprzez relacyjne dbms, ale zajmie to znacznie więcej czasu dla twojego zespołu. Myślę, że baza danych dokumentów to dla ciebie lepszy wybór. RavenDB to świetna baza danych dokumentów, która łączy zalety zarówno bazy danych relacyjnych, jak i dokumentów. Jest w pełni zgodny z ACID, ma wspaniałego dostawcę Linq i jest dość szybki, zwłaszcza najnowsza wersja.

Tak więc moja sugestia byłaby, nigdy nie wiesz dokładniedopóki tego nie spróbujesz. Jedyny problem jaki miałem z ravendbem do tej pory, polegał na indeksowaniu. W dokumentacji brakuje kilku ważnych notatek i mam nadzieję, że Ayende wkrótce rozwiąże ten problem, w przeciwnym razie, po prostu idźcie za tym.

BTW, możesz także spróbować MongoDB. To nie jest zgodne z ACID, nie ma również dostawcy Linq, a pisanie zapytań jest trudniejsze niż w RavenDB, jak się domyślasz, ale jest napisane w C ++, ma operacje atomowe I / O i jest bardzo szybkie.


1 dla odpowiedzi nr 2

Jeśli twoim wymaganiem jest przechowywanie i przetwarzaniedane strukturalne (a może pliki dźwiękowe, obrazy itp.) i jesteś "przyzwyczajony" do Oracle, sugeruję zajrzeć do LOBów i XMLType. Oracle ma wbudowane wsparcie dla technologii XML (sprawdzanie schematu, transformacja xslt, przechowywanie binarne, indeksy xpath mogą być obszarami zainteresowania).