MongoDB

Z Wikipedii, wolnej encyklopedii
Skocz do: nawigacja, szukaj
MongoDB
nierelacyjna baza danych
Producent MongoDB Inc.
Platforma sprzętowa wieloplatformowa
Napisane w C++
Pierwsze wydanie 2009
Aktualna wersja stabilna 2.4.10 - 4 kwietnia 2014
Licencja GNU AGPL
www.mongodb.org

MongoDB (od słowa "humongous") - otwarty, nierelacyjny system zarządzania bazą danych napisany w języku C++. Charakteryzuje się dużą skalowalnością, wydajnością oraz brakiem ściśle zdefiniowanej struktury obsługiwanych baz danych. Zamiast tego dane składowane są jako dokumenty w stylu JSON, co umożliwia aplikacjom bardziej naturalne ich przetwarzanie, przy zachowaniu możliwości tworzenia hierarchii oraz indeksowania.

Historia[edytuj | edytuj kod]

Prace nad systemem rozpoczęła firma 10gen w 2007 roku. Pierwsza stabilna wersja ukazała się w lutym 2009[1].

Możliwości[edytuj | edytuj kod]

  • jednorodne wsparcie dla standardu Unicode,
  • obsługa danych w innych kodowaniach w formacie binarnym,
  • duża liczba obsługiwanych typów danych,
  • obsługa kursorów,
  • zapytania ad-hoc,
  • zapytania do zagnieżdżonych pól dokumentów,
  • indeksowanie,
  • wsparcie dla agregacji danych,
  • możliwość składowania plików w bazie,
  • architektura zaprojektowana z myślą o łatwej replikacji.

Wewnętrznym językiem do definiowania zapytań oraz funkcji agregujących jest JavaScript wykonywany bezpośrednio przez serwer MongoDB.

Użycie[edytuj | edytuj kod]

Interfejsy programistyczne pozwalające obsługiwać bazy MongoDB powstały dla wszystkich wiodących języków programowania, w tym dla C, C++, Javy, PHP, Perla, Pythona i Rubiego. Wśród znanych użytkowników systemu występują:

Krytyka[edytuj | edytuj kod]

MongoDB posiada ograniczone wsparcie dla transakcji — ich zasięg jest ograniczony do zmian w pojedynczym dokumencie, aczkolwiek zmiany te mogą być bardzo skomplikowane. Z tego powodu część użytkowników ogranicza zastosowanie MongoDB do niekrytycznych danych informacyjnych, pozostawiając obsługę krytycznych operacji (np. obsługa zamówień w sklepie) relacyjnym bazom danych, gdzie takie ograniczenia nie występują[6].

MongoDB wspiera jedynie w niewielkim stopniu kodowanie UTF-8, co stanowi poważny problem w przypadku przechowywania tekstu w języku innym niż angielski[7]. Obecnie do sortowania łańcuchów znaków używana jest funkcja memcmp, która nie obsługuje poprawnie danych w UTF-8 w różnych ustawieniach regionalnych. Wprowadzenie zmian jest planowane, ale według twórców MongoDB wymaga to wprowadzenia szeregu poważnych modyfikacji programu, dlatego termin i wersja programu obsługująca poprawne sortowanie nie są jeszcze znane.

Zobacz też[edytuj | edytuj kod]

Odnośniki zewnętrzne[edytuj | edytuj kod]

Przypisy

  1. Oficjalny blog MongoDB - marzec 2009
  2. How Python, TurboGears, and MongoDB are Transforming SourceForge.net (ang.). PyCon 2010, 2010-02-20. [dostęp 2011-01-22]. [zarchiwizowane z tego adresu (2011-02-11)].
  3. MongoDB - diasporatest.com (ang.). [dostęp 2011-01-22].
  4. Jacqueline Mather: Building a Better Submission Form (ang.). NYTimes Open Blog, 2010-05-25. [dostęp 2011-01-22].
  5. Holy Large Hadron Collider, Batman! (ang.). The MongoDB NoSQL Database Blog, 2010-06-03. [dostęp 2011-01-22].
  6. Bulat Shakirzyanov: MongoDB for e-commerce (ang.). [dostęp 2014-04-06].  Cytat: At OpenSky , we decided to use MongoDB for storage of products and use relational databases for order-related data since MongoDB doesn’t support transactions.
  7. Sort by collation (ang.). [dostęp 2014-04-06].