Привет в SO ,
Я хотел бы получить несколько идей / комментариев от вас, уважаемая и почтенная группа.
У меня есть 100M записей, которые янужно обрабатывать.У меня есть 5 узлов (в группе камней), чтобы сделать это.Данные очень структурированы и хорошо подходят для реляционной модели данных.Я хочу делать что-то параллельно, так как моя обработка занимает некоторое время.
На мой взгляд, у меня есть два основных варианта:
Установить mysql на каждом узле и поставить 20M записей на каждом.Используйте головной узел для делегирования запросов узлам и агрегирования результатов. Возможности запросов ++ , но я могу рискнуть испытать некоторые головные боли, когда приду к выбору стратегии разделения и т. Д. (В. Это то, что они называют кластером mysql / postgres?).Действительно плохая часть заключается в том, что теперь обработка записей остается на мое усмотрение (как распределять между машинами и т. Д.) ...
В качестве альтернативы установите Hadoop, Hive и HBase (обратите внимание, что это можетне самый эффективный способ хранения моих данных, так как HBase ориентирован на столбцы) и просто определение узлов.Мы пишем все в парадигме MapReduce и, блин, мы живем долго и счастливо.Проблема здесь в том, что мы теряем возможности запросов «в реальном времени» (я знаю, что вы можете использовать Hive, но это не рекомендуется для запросов в реальном времени - что мне нужно) - поскольку у меня также есть несколько обычных запросов sql для выполнения время от времени »выберите * из вина, где color = 'brown' ".
Обратите внимание, что теоретически - если бы у меня было 100M машин, я мог бы сделать все это мгновенно, поскольку для каждой записи обработка не зависит от другой.Кроме того - мои данные только для чтения.Я не предполагаю никаких обновлений.Мне не нужно / хочу 100M записей на одном узле.Я не хочу, чтобы там были избыточные данные (поскольку их много), поэтому храните их в ОБА mysql / postgres и Hadoop / HBase / HDFS.это не реальный вариант.
Большое спасибо