Высокопроизводительные запросы - предложения, пожалуйста - PullRequest
2 голосов
/ 30 марта 2010

Предположим, у меня есть миллионы профилей пользователей с сотнями полей (имя, пол, предпочтительный питомец и т. Д.).

Вы хотите осуществлять поиск по профилям.

Пример: все профили, которые имеют возраст от x до y, любят бабочек, ненавидят шоколад ....

С базой данных вы бы выбрали?

Предположим, у вас есть загрузка, подобная Facebook. Скорость обязательна. Предпочитаемый Open Source.

Я много читал о Кассандре, HBase, Mongo, Mysql ... Я просто не могу решить .....

1 Ответ

1 голос
/ 30 марта 2010

Все дело в использовании эффективных индексов. Если у вас есть специальный запрос, создайте индекс для этого запроса.

Ex. сделать индекс age_lovebutterflies_hateschoclate

Если у вас есть сайт с большим трафиком, такой как Facebook, вам потребуется больше энергии, чем только оптимизация sql. Например, в memcaching реализована поисковая система, такая как vespa или lucene / solr, реализованная в виде кластеров. Распределители нагрузки, несколько серверов с оперативной памятью 64 ГБ, raid-диски и множество других серверных технологий ...

Проблема с базами данных, такими как mysql, postgresql, sqlite и oracle, заключается в том, что индексы подходят для статического поиска, но они не являются гибкими. Например, если вы хотите объединить поиск по столбцам, которые не проиндексированы, индексы не будут использоваться. Ex. если вы включите дополнительный параметр, например, пол или, может быть, другое подобное местоположение ... вам нужно будет создать больше индексов ... lucene / solr, и реальная поисковая система будет намного эффективнее, так как вы можете создать столько комбинаций, сколько вы как ... Все, о чем вы должны думать - это то, что столбец индексируется, а не какие другие столбцы индексируются вместе с ...

Итак, Facebook ... Это долгий путь, чувак;)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...