Хорошо, поэтому, все больше и больше я разрабатываю Mongodb, я начинаю задумываться о необходимости наличия нескольких коллекций и наличия одной большой коллекции с индексами (поскольку столбцы и поля могут отличаться для каждого документа в отличие от табличных данных). Если я пытаюсь разработать наиболее эффективным способом (что означает меньше кода и многоразового кода), тогда я могу использовать одну коллекцию для всех документов и просто индексировать по полю. Имея все документы в одной коллекции с индексами, я могу повторно использовать весь код обработки моей формы и другой код, так как все они будут вставляться в одну коллекцию.MongoDB - одна коллекция с использованием индексов
Для примера:
Допустит, я занимаюсь разработкой менеджера контактов и у меня есть два типа контакты «лица» и «бизнес». Моя первоначальная мысль заключалась в том, чтобы создать коллекцию, называемую людьми, и вторую коллекцию, называемую бизнесом. Но это было потому, что я использовал для разработки в sql, где да, это было бы уместно, так как столбцы были бы разными для каждой таблицы. Чем больше я начал думать о гибкости документа dbs, тем больше я начал думать: «Мне действительно нужны две коллекции для этого?» Если я просто добавлю поле в каждый документ, называемый «тип контакта» и указав на него, действительно ли мне нужны две коллекции? Поскольку поля/столбцы в каждом документе не обязательно должны быть одинаковыми для всех (например, в sql), каждый документ может иметь свои собственные поля, если у меня есть поле типа документа и индекс в этом поле.
Итак, я принял эту концепцию и начал думать, если мне нужна только одна коллекция для «индивидуумов» и «предприятий», тогда мне даже нужна отдельная коллекция для «Пользователи» или «История контактов» или любые другие данные , Теоретически я не мог построить целое решение в коллекции и просто иметь поле в каждом документе, в котором указаны «тип» и индекс на нем, такие как «Пользователи», «Индивидуальный контакт», «Бизнес-контакты», «История контактов» »и т. д., и если это документ, относящийся к другому документу, я могу индексировать его в поле« родительский ключ/чужой »...
Это позволило бы мне динамически кодировать передний конец, поскольку код обработки формы все будет одинаковым (вставка в ту же коллекцию). Это сэкономит много кодировок, но я хочу убедиться, используя индексы и вторичные индексы, которые db будет работать быстро и не будет вызывать будущих проблем по мере роста коллекции. Как вы можете себе представить, если бы все было в одной коллекции, в этой коллекции могли бы быть сотни тысяч даже миллионов документов по мере роста пользовательской базы, но для оптимизации производительности индексы и вторичные индексы имели бы индексы и вторичные индексы.
Мой вопрос: Является ли это распространенным методом использования разработчиками mongodb? Почему или почему нет? Каковы недостатки, если они есть? Если это широко используемый метод, пожалуйста, также дайте какие-либо положительные результаты для использования этого метода. Спасибо.
Да, у меня было бы несколько пользователей, но даже тогда мне нужно больше одной коллекции, если я просто индексирую имя коллекции и идентификатор пользователя, а затем уменьшаю/фильтрую результаты по идентификатору сеанса пользователя. Тогда я все еще использую только одну коллекцию? – user982853
Я знаю, что cassandra - это денормализация, но многие другие действительно не отличаются друг от друга (в этом отношении), чем SQL.Документально-ориентированная база данных - это действительно просто другой способ организовать вашу базу данных. Также монго очень прощает, когда речь идет о реляционных схемах – kelloti