MongoDB - правильное использование коллекций? - PullRequest
2 голосов
/ 11 апреля 2010

В Монго я понимаю, что вы можете иметь базы данных и коллекции. Я работаю над приложением социального типа, в котором будут блоги и комментарии (помимо прочего), и ранее я использовал MySQL и довольно тяжелые разделы, пытаясь ограничить возможные проблемы параллелизма.

С MySQL я поместил все свои пользовательские данные в базу данных _user с несколькими таблицами для дальнейшего разделения данных (блоги, страницы и т. Д.).

Моей непосредственной реакцией на Mongo было бы создание базы данных пользователей с одной коллекцией на пользователя. Таким образом, пользовательские записи блога 'zach' попадают в коллекцию 'zach' со связанными комментариями и, таким образом, становятся подобъектами в той же коллекции. В основном, как динамическое создание одной таблицы на пользователя в MySQL, но, очевидно, без сложности и ограничений, которые могут налагаться.

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

Я бы хотел, чтобы пользовательские данные обрабатывались во многом как каталог пользователей в среде * nix, где созданные / не общие пользователи (в основном) помещаются в одно место (в настоящее время с MySQL, который будет appname_users, как упомянуто выше). ).

Большинство данных пользователей будут относиться к страницам пользователей. Некоторые пользовательские данные, которые запрашиваются у всех пользователей сайта (пользовательские профили с возможностью поиска), в настоящее время хранятся в отдельной базе данных / таблице, и я ожидаю, что подобные вещи можно поместить в базу данных appname_system и разбить на коллекции и / или приложения. базы данных (appname_profiles).

В любом случае, поскольку доступная документация по этому вопросу в настоящее время немного скудна, а мой опыт крайне ограничен, я подумал, что могу найти небольшое руководство от кого-то, кто лучше разбирается в системе.

С другой стороны, я действительно уже пытался трактовать MySQL как хранилище документов без схемы, и делать это с Mongo кажется гораздо более интуитивным / разумным / рациональным, поэтому я действительно с нетерпением жду начала.

Спасибо, Zach

1 Ответ

2 голосов
/ 12 апреля 2010

У меня такое же приложение.

Некоторые вещи, на которые следует обратить внимание: вы можете выполнять перекрестный запрос между коллекциями, а не между базами данных. Поэтому, вероятно, лучше иметь базу данных со всеми вашими данными, а затем коллекцию для каждого объекта.

Тогда каждый документ может содержать любой вид и количество полей.

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

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

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