2012-02-04 15 views
7

Jestem projektowania nowego projektu internetowego, a po studiach kilka opcji służących skalowalność, wpadłem na dwóch rozwiązaniach bazodanowych:lokalne SQLite vs zdalnego MongoDB

  • lokalne pliki SQLite starannie zaprojektowane do skalowalnego mody (jeden nowy plik bazy danych dla każdego użytkownika X, ponieważ zapisy będą zależały od zawartości użytkownika, bez zależności od danych użytkowników);
  • Zdalny serwer MongoDB (np. Mongolab), ponieważ mój serwer hosta nie obsługuje MongoDB.

Nie ufam serwerowi MySQL w bieżącym hoście udostępnionym, ponieważ często pojawia się on (i miałem problemy z MySQL na innym hoście). Z tego samego powodu nie używam PostgreSQL.

Plusy SQLite:

  • To lokalny, więc musi być szybsze (Zajmę z użyciem indeksu i transakcje poprawnie);
  • Nie muszę się martwić o podsłuchiwanie tcp, ponieważ protokół drutu Mongo is not crypted;
  • Nie muszę się martwić o awarię serwera, ponieważ SQLite jest bezserwerowy.

Plusy MongoDB:

  • To łatwiej skalowalne;
  • Nie muszę się martwić o dzielenie baz danych, ponieważ skalowalność wydaje się być naturalna;
  • Nie muszę się martwić zmianami w schemacie, ponieważ Mongo jest bezpodstawne i SQLite doesn't fully support alter table (szczególnie biorąc pod uwagę zmianę wielu plików produkcyjnych itp.).

Chcę pomóc w podjęciu decyzji (a może rozważyć trzecią opcję). Który z nich jest lepszy, gdy operacje zapisu i odczytu rosną?

Mam zamiar użyć Ruby.

+0

MongoDb jest zoptymalizowany do operacji zapisu – Adrian

+0

@Adrian: to dość przesada :-) –

Odpowiedz

9

Jednym z głównych zagrożeń podejścia SQLite jest to, że w miarę zwiększania skali nie będzie można (łatwo) wdrożyć na wielu serwerach aplikacji. Być może będziesz mógł podzielić użytkowników na oddzielne serwery, ale jeśli ten serwer zostanie wyłączony, będziesz miał pewną grupę użytkowników, którzy nie będą mogli uzyskać dostępu do swoich danych.

Użycie MongoDB (lub dowolnej innej scentralizowanej usługi) rozwiązuje ten problem, ponieważ twoje serwery internetowe są bezpaństwowcami - można je dodawać lub usuwać w dowolnym momencie w celu dostosowania obciążenia sieci bez obawy o to, jakie dane znajdują się w danym miejscu.

Powiązane problemy