MongoDB
 sql >> база данни >  >> NoSQL >> MongoDB

Разлика между базирани на документи и базирани на ключ/стойност бази данни?

Основните разлики са моделът на данните и възможностите за заявки.

Магазини ключ-стойност

Първият тип е много прост и вероятно не се нуждае от допълнително обяснение.

Модел на данни:повече от магазини ключ-стойност

Въпреки че има известен дебат относно правилното име за бази данни като Cassandra, бих искал да ги нарека семейни магазини на колони . Въпреки че двойките ключ-стойност са съществена част от Cassandra, тя не се ограничава само до това. Позволява ви да влагате двойки ключ-стойност, така че ключът може да се отнася до множество двойки подключ-стойност.

Не можете обаче да влагате двойки ключ-стойност за неопределено време. Ограничени сте до три нива (семейства от колони) или четири нива на гнездене (семейства супер колони). В случай, че терминът семейство колони не бие звънец, вижте WTF е статия от SuperColumn, това е добро обяснение на модела на данни на Касандра.

Бази данни с документи , като CouchDB и MongoDB съхраняват цели документи под формата на JSON обекти. Можете да мислите за тези обекти като вложени двойки ключ-стойност. За разлика от Cassandra, можете да влагате двойки ключ-стойност колкото искате. JSON също така поддържа масиви и разбира различни типове данни, като низове, числа и булеви стойности.

Запитване

Вярвам, че магазините за семейство колони могат да бъдат заявени само чрез ключ или чрез писане на функции за намаляване на картата. Не можете да правите заявки за стойностите, както бихте направили в SQL база данни. Ако приложението ви се нуждае от по-сложни заявки, приложението ви ще трябва да създава и поддържа индекси, за да получи достъп до желаните данни.

Базите данни с документи поддържат и заявки по ключ и функции за намаляване на картата, но също така ви позволяват да правите основни заявки по стойност, като например „Дайте ми всички потребители с повече от 10 публикации“. Базите данни с документи са по-гъвкави по този начин.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Списък с индекси в MongoDB?

  2. Как да проектирате индекс на масив след размотаване на масив с MongoDB рамка за агрегиране

  3. Какво е предимството да използвате ObjectId вместо обикновен низ?

  4. Mongo:намерете елементи, които нямат определено поле

  5. MongoDB извлича стойности от BasicDBObject (Java)