Bazy NoSQL a ASP .NET MVC

0

Witam serdecznie.

Czy ma ktoś jakieś rozeznanie dotyczące szybkości działania NoSQLowych baz danych takich jak RavenDB w porównaniu do normalnego MS SQLa w aplikacjach webowych ASP .NET MVC?

Czy projekt sklepu internetowego warto oprzeć o bazę RavenDB wbudowaną w projekt aplikacji ( embedded ) i czy można w łatwy sposób korzystać z niej przy użyciu Entity Framework.

Ewentualnie jeśli nie RavenDB to jaką bazę NoSQL polecacie?

Wiem, że można tutaj powiedzieć również o MongoDB i VelocityDB ale nie wiem na jaką się zdecydować.

Pozdrawiam

1

Widzę, że nikt nie odpowiedział to chociaż napisze to co wiem. Nie mam dużego doświadczenia ale jestem an stażu w firmie mającej spory sklep, forum i inne aplikacje webowe i korzystamy z bazy danych MongoDB. Baza bardzo dobrze się sprawuje, jest szybka ale ciężko jest zrobić porównanie, czy jest szybsza niż baza SQL... Ja akurat pracowałem na niej tworząc aplikacje mailingową rozsyłającą około 400 tyś maili i przyznam, że jestem zadowolony z wydajności bazy. Nowe sterowniki do C# są bardzo fajne :)

0

Dzięki za opinie. Coś sobie wybiore :)

1

Ja korzystam z MongoDB już od kilku lat w kilku projektach (zarówno ASP MVC jak i WCF) i nigdy nie miałem żadnych większych problemów z jej obsługą. Sterownik od C# jest dojrzały, masz wsparcie dla LinQ, więc wszystko odbywa się łatwo i bezproblemowo. Wpięcie bazy NoSQL pod EF mija się z celem - bazy NoSQL nie potrzebują mapowania relacji w taki sposób jak klasyczne bazy SQLowe.

Ostatnio zacząłem bawić się RavenDB (hobbistycznie, nie używałem jeszcze na produkcji) i wygląda całkiem obiecująco. Wydaje mi się jednak, że póki co jest dużo mniej dojrzałym produktem wobec MongoDB (dokumentacja, szybkość działania, wsparcie społeczności). Jeśli zależy Ci na stabilności i szybkości działania to Mongo będzie lepszym wyborem.

Większą trudnością jest przejście na projektowanie modeli bazodanowych w nurcie NoSQL. Musisz pożegnać się ze standardowa normalizacją danych i relacjami. Dodatkowo MongoDB nie wspiera transakcji - są tylko operacje atomowe w ramach jednego dokumentu co wymaga uwzględnienia tego faktu juz na etapie projektowania bazy. Potem dochodzi problem wyboru pomiędzy zagnieżdżonymi kolekcjami vs relacja przez ObjectID. Nie jest to temat bardzo skomplikowany, ale zauważyłem że sporo osób ma problem z przestawieniem się z myślenia relacyjnego,

0

Masz racje.

Gdybym chciał skorzystać ze zwykłego SQLa to z Entity Framework, ale ja chce pobawić się trochę bazami NoSQLowymi.

O Mongo dużo słyszałem, w sumie pisaliśmy małą aplikację opartą o Mongo, jest na rynku dłużej niż Raven i na pewno jest bardziej dopracowana.

Wybiore sobie albo Mongo albo Ravena.

0

Mongo jest szybkie tylko jeśli nie masz ustawionej trwałości danych i wszystkie dane zmieszczą się w RAM. Po wyjściu poza dostępny RAM, wydajność jest tragiczna i praktycznie wszystkie NoSQLe jakie miałem okazję dotknąć były szybsze od Mongo.

Musisz sobie odpowiedzieć na 2 pytania:

  1. czy potrzebujesz skalować aplikację poziomo?
  2. czy potrzebujesz bardzo wysokiej dostępności i odporności na awarie; w tym np. możliwość robienia upgrade'u bez przerywania pracy serwisu?

Jeśli odpowiedź na obydwa jest NIE, to NoSQL sobie w ogóle odpuść - weź normalnego, porządnego SQLa (serio, na tym polu każdy SQL będzie lepszy, a co dopiero PostgresSQL czy MSSQL).
Jeżeli na którekolwiek jest TAK, to MongoDB jest zdecydowanie złym pomysłem - bo nie robi dobrze żadnej z tych rzeczy.

http://www.fullcontact.com/blog/mongo-to-cassandra-migration/
http://www.stavros.io/posts/using-mongodb-for-great-science-part-2/

1 użytkowników online, w tym zalogowanych: 0, gości: 1