Здравствуйте, Коллеги!
Какую посоветуете базу для больших данных 100млн строк и более. Хочется наверное невозможного: легко проектировать, быстро выбирать, отказоустойчивость и масштабируемость средствами самой БД.
В данный момент не знаю что выбрать:
1) MongoDb- достаточно просто, есть опыт работы.
2) Cassandra-быстрое MongoDb, но есть много нюансов в работе, не очень гибкая в плане извлечения данных, нужно танцевать с бубном.
evnuh: А что подразумевается под стандартным тюнингом? У меня, помню, при выборке из таблицы 100 млн. записей в PostgreSQL обычный селект выполнялся десятки секунд. С индексом выполнялся быстрее, но все равно это настораживает.
Для начала нужно определится, что за данные у вас там. И почему например вы юзаете InnoDB, а не MyISAM ? А попробуйте MariaDB, там есть другие движки из коробки, может что поможет.
Что касается 100Гб - а вы что хотите всю БД в памяти держать ? а зачем ? достаточно держать индексы + совет в лоб: перенести данные на SSD (это если у вас много случайных чтений по БД). На худой конец если вам нужен текстовый поиск, то возьмите Sphinx (его индексы занимают мало места).
Всё зависит от того, какие данные вы собираетесь хранить. Может хватить и, к примеру, Монги или Постгреса под соусом NuoDB. Со своей стороны могу посоветовать Riak или Hadoop.
Для 100млн строк тогда нужен будет немеренно оперативы-> очень дорогой сервер, проще микроинстансы накупить и шардинг сделать и не через приложение, как с Mysql.
Сколько примерно памяти нужно для баз Mysql (InnoDb) с объемом примерно 100млн строк? Зависит от объема самой БД и что бы она помещалась в память?
Например, сейчас у нас 11млн (Каждый месяц удваивается), таблицы вместе с индексами весят 10гб. Недавно с 4ГБ ОЗУ, перешли на 8ГБ полет нормальный, но наверное через месяц опять перейти нужно будет(((.
begemot_sun,
InnoDb юзаем так как блокировка на уровне строки у нее, что позволяет одновременно читать и писать данные в таблицу.
InnoDb выделяет память под кеш данных и индексов в ОЗУ.