Оптимальная система баз данных для фильтров - PullRequest
2 голосов
/ 09 марта 2011

Я создаю веб-сайт, который реализует фильтры, которые можно применять к набору данных. Позвольте мне объяснить эти фильтры. В этом случае это будет сайт с домами.

Number of rooms:
    2 or less ( 2271 )
    3 or more ( 4283 )
    4 or more ( 2223 )
    5 or more ( 1213 )

Price range
    More then {fill in number}
    Less then {fill in number}

Type
    For sale ( 2938 )
    For rent ( 1029 )

Вы видите это чаще в эти дни. Всего будет около 7 фильтров.

Теперь я не уверен, какую базу данных мне следует использовать. Будет около 10000 объектов и ежедневных изменений (около 1% от набора данных). Два, которые я рассматриваю, являются:

MongoDB Объектно-ориентированный

Прежде всего, я новичок в этих, так называемых, объектно-ориентированных базах данных. Но я слышал несколько хороших историй о них. Они менее эффективны и, вероятно, работают очень быстро.

MySQL Реляционная база данных

Я использовал MySQL раньше, в таких ситуациях производительность была приемлемой. Я использовал EAV-модель , которая делает базу данных более динамичной. Я использовал движок InnoDB с отношениями для поддержания целостности.

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

Что вы думаете о производительности в этой ситуации, что DBMS будет работать лучше?

Ответы [ 2 ]

1 голос
/ 09 марта 2011

С 10 000 записей производительность должна быть достойной в MySQL. Поскольку вы уже знакомы с MySQL, я рекомендую вам это использовать. Вы можете попробовать GROUP BY ... WITH ROLLUP, как описано здесь , чтобы выполнить работу только одним запросом. MySQL, так же как и вашему клиенту, потребуется проделать некоторую дополнительную работу, но я думаю, что это будет компенсировано уменьшением количества запросов.

1 голос
/ 09 марта 2011

Вы можете использовать либо.
если вы используете денормализованную таблицу в mysql (то есть без соединений), она похожа на объект в mongoDB, но сложнее для запроса.
Так что, если ваши данные могут быть ненормализованы разумным способом, используйте Mongo иначе, RDBMS.

...