В СУБД вы можете объявлять типы (таблицы) и подтипы (таблицы подтипов с FK супертипа). В Rails это будет наследование таблиц классов. Например, у вас может быть таблица Person и таблица подтипов Friend с более подробной информацией о личности (например, Birthday / Anniversary).
Когда вы прыгаете в мир NoSQL и используете БД документов, такую как MongoDB, реализовать подтипы гораздо проще, поскольку коллекции не содержат схем. Это идеально подходит для создания CMS. Теперь вы можете динамически печатать что угодно. Фактически, вещь может быть многопечатной, имея свойства всех своих типов. Не так уж сложно.
Но вот сложная часть. Вы хотите проиндексировать свои динамически набранные вещи (например, свою коллекцию вещей). Вы хотите искать события событий по start_date. Вы хотите искать вещи людей по имени. Вы хотите искать вещи друзей по дате рождения. Когда вы не печатаете вещи динамически, каждый из этих типов будет иметь свою собственную коллекцию. Индексировать события, людей, друзей как вещи с динамической типизацией сложно. Индексировать события, людей, друзей как типы (таблицы или коллекции) не так сложно.
Мне кажется, MongoDB (и другие базы данных без схемы) были созданы для динамической типизации. По крайней мере, в большинстве случаев. Но когда дело доходит до индексации динамически типизированных вещей, это не удается. Как вы решите эту проблему?
Я думаю, что если MongoDB введет отфильтрованные индексы , мы будем там. (Отфильтрованные индексы решают проблему так, как это невозможно для мультиключей и разреженных индексов.) Единственное, что ему потребуется, - это потенциально неограниченное количество индексов (поскольку у нас могут быть пользователи, создающие множество пользовательских типов). Без неограниченного количества индексов это ограничило бы количество типов, которые может обрабатывать база данных.
Пожалуйста, проголосуйте за поддержку , если вы согласны с тем, что отфильтрованные индексы могут решить проблему динамической типизации.
Этот вопрос упрощает и уточняет вопрос, который я задавал ранее . Это также приходит к проблеме под другим углом.