MongoDB против Columnar - PullRequest
       2

MongoDB против Columnar

0 голосов
/ 06 марта 2012

Подходит ли MongoDB, когда для запросов используется несколько комбинаций столбцов, поэтому создание индексов для всех столбцов невозможно? Как работает MongoDB, когда, скажем, у вас нет индекса по столбцу, и у вас есть миллионы записей для этого столбца?

1 Ответ

0 голосов
/ 06 марта 2012

Если у вас нет индекса, выполняется сканирование таблицы, как и в любой системе баз данных.

Если документы находятся в памяти, это все равно будет относительно быстро, но все равно займет определенный промежуток времени в зависимости от количества документов в коллекции, поскольку база данных должна просматривать каждый из них. О (п)

Проблема в том, что у вас есть небольшой набор переменных ключей для каждого документа или большое количество ключей, которые должны быть в каждом документе?

Хранилища данных, ориентированные на столбцы, должны хранить большое количество столбцов для моделирования различных атрибутов, но mongodb более гибок из-за модели данных документа.

Если у вас есть документы с небольшим количеством различных атрибутов (из большого набора атрибутов), это индексируется и будет O (logn).

Ваши документы будут выглядеть так:

{ 
  "name":"some name", 
  "attrs":[ 
    {"n":"subject","v":"the subject"}, 
    {"n":"description","v":"Some amazing description"}, 
    {"n":"comments","v":"Comments on this thing"}, 
  ] 
}

Будьте индексируемы так:

db.mycollection.ensureIndex({"attrs.n":1, "attrs.v":1})

и задавайте вопросы следующим образом:

db.mycollection.find({attrs: {$elemMatch: {n: "subject", v: "the subject"}}}) 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...