Как моделировать данные для геокодера CouchDB
Я работаю над приложением геокодирования на основе CouchDB, используя большой национальный набор данных, который поставляется в реляционном формате. Около 250 миллионов записей разделены на 9 таблиц (диаграмму ER можно посмотреть по адресу http://bit.ly/1dlgZBt). Я довольно новичок в базе данных документов nosql и, в частности, в CouchDB, и думаю, как это смоделировать. В настоящее время я загрузил данные в базу данных CouchDB для каждой таблицы с полем типа, указывающим, какой это тип записи. Атрибут _id установлен в качестве первичного ключа для таблиц [A] и [C], для всего остального он автоматически генерируется Couch. Я планирую настроить Lucene с Couch для индексации и полнотекстового поиска. Все координаты точек X и Y хранятся в таблице [A], но чтобы найти их, мне нужно будет искать, используя данные в [Таблица E], [Таблицы B, C & D вместе] и / или [Таблица I] с опцией фильтрации результатов на основе данных в [Таблица F].
Мое первоначальное намерение состояло в том, чтобы создать единую базу данных CouchDB, которая объединит все эти таблицы в единую структуру с [Таблица A] в качестве корня и всеми связанными таблицами, вложенными в него. Затем я построил бы свои различные поисковые индексы на этом, а также установил пространственный индекс, используя GeoCouch для обратного геокодирования. Тем не менее, я прочитал статьи, которые предлагают рассматривать сопоставление как альтернативный подход.
Я думаю, что важным фактором здесь является чтение против записи. План состоит в том, что эти данные никогда не будут обновлены, только прочитаны. Данные публикуются каждый квартал, в это время существующая БД будет уничтожена, и будет создана новая БД.
Я бы приветствовал любые предложения о том, как лучше всего настроить и организовать это, от любых опытных пользователей Couch или связанных баз данных документов.
Заранее большое спасибо за любую помощь.
1 ответ
guygrange,
Несмотря на то, что я далеко не эксперт в проектировании баз данных документов, главное, что нужно знать о базах данных документов, это то, что все сводится к быстрому выполнению ваших запросов, сохраняя всю необходимую информацию в одном документе. Следовательно, вам нужно посмотреть на ваши запросы и как вы ожидаете получить доступ к этим данным. Например, я легко могу представить приложение геокодирования, которому не нужен доступ ко всему в каждой таблице для ваших самых частых запросов. Следовательно, чтобы сэкономить на пропускной способности, вы должны сделать основной документ, содержащий основную информацию, которая вам наиболее важна, а также ключ для остальных соответствующих данных. Затем вы можете получить оставшиеся данные с помощью этого ключа и объединить словари для облегчения управления вашим клиентским кодом.
Анон, Андрей