У нас есть огромные данные около 300 миллионов записей, которые будут обновляться каждые 3-6 месяцев. Нам нужно запросить эти данные (непрерывно, в режиме реального времени), чтобы получить некоторую информацию. options - RDBMS (mysql) или какой-то другой вариант, например Hadoop. Что будет лучше?Большие данные - хранение и запрос
ответ
Ну, у меня есть несколько баз данных PostgreSQL с некоторыми таблицами с более чем 700M-записями, и они обновляются все время.
Запрос в этих таблицах работает очень быстро (несколько миллисекунд) и без каких-либо проблем. Теперь мои данные довольно просты, и у меня есть индексы для полей, которые я запрашиваю.
Итак, я бы сказал, все зависит от того, какие запросы вы будете делать, и если у вас будет достаточно денег, чтобы тратить на быстрые диски.
300 миллионов записей не должны создавать проблем с СУБД высшего уровня, такими как Oracle, SQL Server, DB2. Я не уверен в mySQL, но я уверен, что в наши дни он используется для некоторых довольно больших баз данных.
Как говорили другие, современные СУРБД могут обрабатывать такие таблицы, в зависимости от запросов и схемы (некоторые оптимизации должны быть сделаны). Если у вас есть хороший ключ для разделения строк (например, столбца даты), то методы partioniong/sharding помогут вам разбить таблицу на несколько небольших.
Вы можете прочитать больше о тех, и других методах масштабирования в вопросе я спросил некоторое время назад здесь - Scaling solutions for MySQL (Replication, Clustering)
300 миллионов на самом деле не считается огромным в эти дни :-).
Если вы в основном запрашиваете, и знаете более или менее то, из какой формы будут выполняться запросы, таблицы MySQL с соответствующими индексами будут работать нормально.
Если вы постоянно добавляете обновления в то же время, что и выполняете запросы, выберите PostgreSQL, так как у него улучшена обработка параллелизма.
MS SQLServer, Sybase, Oracle и DB2 будут обрабатывать эти тома с легкостью, если ваша компания предпочитает тратить деньги.
Если, с другой стороны, вы намерены делать поистине свободные запросы формата на неструктурированных данных, тогда Hadoop или подобное было бы лучше.
Записи 300M находятся в пределах регулярных реляционных баз данных, а прямые запросы не должны быть проблемой, если вы правильно используете индексы.
Hadoop звучит как overkill, если вам действительно не нужны высокораспределенные и избыточные данные, а также будет сложнее найти поддержку, если у вас возникнут проблемы или для оптимизации.
Это невероятные цифры. Я никогда не испытывал ничего подобного с помощью oracle или MSSQL. Считаете ли вы, что на самом деле машины и диски выполняют основную часть работы? – Kieveli 2008-12-09 14:56:49