Пригодность MongoDB для запросов иерархического типа

У меня есть особые требования к манипулированию данными, которые я разработал, как выполнять в SQL Server и PostgreSQL. Однако я не очень доволен скоростью, поэтому я исследую MongoDB.

Лучший способ описать запрос - это следующее. Представьте себе иерархические данные США: страна, штат, округ, город. Допустим, конкретный поставщик может обслуживать всю Калифорнию. Другой может обслуживать только Лос-Анджелес. Потенциально существуют сотни тысяч поставщиков, и все они могут обслуживать с некоторой точки (точек) в этой иерархии вниз. Я не путаю это с Geo - я использую это, чтобы проиллюстрировать необходимость.

Используя рекурсивные запросы, довольно просто получить список всех поставщиков, которые могут обслуживать конкретного пользователя. Если бы он был, скажем, в Пасадене, Лос-Анджелесе, Калифорнии, мы бы пошли вверх по иерархии, чтобы получить применимые идентификаторы, а затем запросили бы обратно, чтобы найти поставщиков.

Я знаю, что это можно оптимизировать. Опять же, это простой пример запроса.

Я знаю, что MongoDB - это хранилище документов. Это очень хорошо подходит для других моих нужд. Вопрос в том, насколько он подходит для описываемого мною типа запроса? (Я знаю, что у него нет соединений - они смоделированы.)

Я понимаю, что это вопрос "какова длина отрезка строки". Я просто хочу знать, есть ли у кого-нибудь опыт работы с MongoDB в подобных делах. Мне может потребоваться некоторое время, чтобы перейти от 0 к тестированию, и я хочу сэкономить время, если MongoDB не подходит для этого.

ПРИМЕР

Местный магазин фильмов «A» может поставлять Blu-Ray в Спрингфилд. Сеть магазинов «B» с распространением по всему штату может поставлять Blu-Ray для всей IL. А магазин с загрузкой по запросу "C" может поставлять товары во все США.

Если бы мы хотели получить всех подходящих поставщиков фильмов для Спрингфилда, штат Иллинойс, ответ был бы [A, B, C].

] Другими словами, существует множество поставщиков, прикрепленных к разным уровням иерархии.

11
задан Ivan 17 February 2013 в 17:56
поделиться