Как хранить и запрашивать очень большие наборы данных (кроме реляционных БД) - PullRequest
3 голосов
/ 20 января 2011

В настоящее время мы сталкиваемся с проблемой эффективного хранения и извлечения данных из очень больших наборов данных (в миллиарды).Мы использовали mysql и оптимизировали систему, операционную систему, raid, запросы, индексы и т. Д., И теперь надеемся двигаться дальше.

Мне нужно принять взвешенное решение о том, какую технологию использовать для решения наших проблем с данными.Я исследовал карту / уменьшение с HDFS, но также слышал хорошие вещи о HBase.Я не могу помочь, но думаю, что есть и другие варианты.Есть ли хорошее сравнение доступных технологий и каковы их компромиссы?

Если у вас есть ссылки на каждую из них, я был бы также признателен за это.

1 Ответ

4 голосов
/ 20 января 2011

Это широкая проблема. Я постараюсь дать указания, и для каждого из них вы можете посмотреть или попросить дополнительную информацию. Первый - это обычные БД. Если данные достаточно ценны, чтобы иметь RAID-массивы и хороший сервер - Oracle может быть хорошим, но дорогим решением. TPC-H является эталоном отраслевого стандарта для запросов поддержки принятия решений: http://www.tpc.org/tpch/results/tpch_perf_results.asp и является ссылкой на высочайшую производительность. Как видите, RDBMS может масштабироваться до терабайтов данных.
Второе - это Hadoop в виде HDFS + Map / Reduce + Hive. Hive - это решение для хранения данных поверх MapReduce. Вы можете получить некоторые дополнительные преимущества, такие как возможность хранить данные в исходном формате и линейно масштабировать. Одна из вещей, которые вы будете смотреть - индексирование и выполнение очень сложных запросов.
Третий - MPP - массивные базы данных для обработки паррал. Они масштабируются от десятков до сотен узлов и имеют богатую поддержку SQL. Примерами являются Netezza, Greenplum, Asterdata, Vertica. Выбор среди них не простая задача, но с более точными требованиями это также может быть сделано.

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