2014-01-27 4 views
0

В настоящее время я работаю с настройкой с использованием MongoDB и хранением информации о посетителе. Например, допустим, у меня есть информация о каждом посетителе, который посетил ваш сайт в диапазоне дат. Я хочу сохранить эту информацию в базе данных.Mongodb Schema для обработки данных посетителей

В настоящее время я храню его в монго, как в примере ниже. У меня действительно есть 2 вопроса:

  • ли Монго лучшего решения для этого [Я думал об использовании CouchDB, MySQL будет работать, но для высоких мест движения, то КПТ будет узким местом]?
  • Сохраняет уникальные посетители внутри документа [каждая дата назначена посетителям] хорошая идея, так как 16 МБ - это максимальный размер документа или просто хранение каждого посетителя в качестве собственного документа?

Схема:

Visitor 
    Non unique id 
    Date 
    Visitors --array[could contain up to millions of visitors[daily visitors]] 
     source 
     keyword 
     city 
     state 
     country 
     page_views 
     etc....... 

ответ

1

Если вы храните IP-адрес только в Visitors массиве, и используя удобочитаемое представление с максимальной длиной 45 символов, то вы можете установить до 372,827 посетителей в одном доке. Поэтому, если вы получаете больше, чем это количество посетителей в день, вы можете получить финансирование VC и переписать свое приложение (просто шутите). Один из вариантов - хранить данные в кусках. Вы можете поддерживать один счетчик в таком документе, и всякий раз, когда вы приближаетесь к этому максимальному числу, вы можете создать новый документ. Это немного сложно поддерживать, поэтому еще один вариант - разделить данные на часы или минуты, если вам нужно.

Я не думаю, что стоит хранить каждого посетителя в отдельном документе верхнего уровня, если вы не планируете хранить гораздо больше информации в этой записи и анализировать, что посетил посетитель, и т. Д. Зависит от того, что вы хотите делать с этими данными.

Для ведения журнала и подсчета просмотров я бы пошел с большим массивом. Для целей бизнес-аналитики я бы пошел с 1 доком для каждого посетителя.

+0

Да, я закончил работу с документом для каждого посетителя, так как мы будем позволять пользователям запускать фильтры для пользователей и удалять определенных посетителей. –

2

ли Монго лучшее решение для этого

No. Есть множество причин, но самый большой из них будет размер документа.

Через некоторое время этот документ, вероятно, будет расти до предела 16 МБ. Это означает, что загрузка его с диска в ваш рабочий набор будет не только трудоемкой, но и неэффективной.

Вам будет лучше, если вы действительно поехали с одним документом на посетителя.

Если вы хотите, чтобы ваши документы загружались быстрее, вы на самом деле хотите, чтобы они были меньше таким образом, что чтение на диске меньше, в свою очередь IO меньше и, в свою очередь, меньше используемых ресурсов.

Кроме того, поскольку я сомневаюсь, что вы хотели бы, чтобы ВСЕ посетители (которые были бы загружены с помощью одной установки документа), тогда у вас также было бы заполнение ОЗУ, которое вам не нужно.

Хранение, как теперь вы можете выборочно загружать посетителей по мере необходимости с очень небольшим количеством IO накладных расходов как таковой я ручаться за альтернативы вы взяли:

Да, я в конечном итоге происходит с документом на посетителя, как мы разрешим пользователям запускать фильтры для пользователей и удалять определенных посетителей.

+0

Спасибо за это понимание, похоже, работает очень хорошо –

Смежные вопросы