Я пишу код для хранения данных и хочу хранить от 1 до 10 миллиардов записей или даже больше. Наиболее важным является скорость (около 10 000 - 20000 записей в секунду), Использование SPACE и защита от сбоев.Теперь я играл с MySQL MyISAM, и он работает довольно БЫСТРО и соответствует необходимой нам скорости.MyISAM также имеет оптимальное использование ПРОСТРАНСТВА, а файл базы данных в папке данных MySQL был почти равен количеству данных, которые я вставил, например. на 100000 записей по 30 символов в каждой потребовалось всего 3 МБ. Но единственная проблема в том, что это не ACID, и он может привести к потере данных при сбоях.
Итак, я хотел знать какие-либо альтернативы (я даже не возражаю против замены программного обеспечения базы данных на что-нибудь еще), которые могут помочь нам хранить так много данных и хранить их БЫСТРО.
Я уже пробовал MySQL INNODB, и его вставки очень медленные. Я смог достичь только 800 - 1000 записей в секунду. Также объем места для хранения данных в INNODB довольно велик. Для хранения тех же 100000 записей по 30 символов в каждой требуется почти 8 МБ.
Я также пробовал MongoDB в качестве альтернативы, но опять же требуется СЛИШКОМ много места для хранения тех же данных.
Даже БД SQLITE3 ОЧЕНЬ МЕДЛЕННО записывает 100000 записей. Я пробовал это с PHP в цикле for. Он также пропустил около 20 записей и выдал ошибки недоступности базы данных.
Итак, я хотел узнать о любом программном обеспечении для баз данных с открытым исходным кодом, которое может удовлетворить мои требования. Я слышал, что ARIA MariaDB соответствует требованиям ACID. Это правда? Или PostgreSQL также является хорошим быстрым вариантом с оптимальным использованием пространства.
Я открыт для любого решения, которое является БЫСТРЫМ, использует оптимальное пространство, а также является устойчивым к АВАРИЯМ. Жду ответов.
=== ОБНОВЛЕНИЕ MariaDB Aria === Это даже хуже, чем InnoDB, когда дело касается скорости вставки и пространства. Для вставки тех же данных потребовалось в 1,5 раза больше времени, чем InnoDB, и почти в 2,5 раза больше места, используемого MyISAM.
Это не та вещь, которую можно на 100% «прибить» за 5 минут, но если вы хотите постоянно достигать такого уровня производительности и функциональности , то я сильно подозреваю, что вам придется потратить деньги.
Если у вас есть бюджет для этого, я бы посмотрел на объединение Движок Oracle TimesTen, возможно, с корпоративным SSD или PCIe Flash (например, FusionIO), и если вы зашли так далеко, я бы рекомендовал использовать серию Intel Xeon E7-xxxx, поскольку они обладают фантастическими возможностями RRAS для поддержания вашего сервера и работать как можно дольше в случае сбоев.
Если бы для получения дополнительных функций и повышения производительности нужно было просто использовать другое программное обеспечение, то все бы этим занимались (по крайней мере, те немногие, кто все еще работает в ИТ;)
Если вам нужно Поддержка ACID - тогда зачем пробовать mongoDB?
Вполне возможно получить желаемую пропускную способность с innodb (но myisam быстрее) - при условии, что вы потратите достаточно на оборудование и правильно настроите систему. Но то, что ваше первое ограничение - минимизировать использование пространства, это скорее означает, что у вас нет бюджета, чтобы пойти и купить набор SSD RAID.
может вызвать потерю данных при сбоях
Я видел потери данных на сбои в Oracle и Sybase - но да, теоретически они должны быть более устойчивыми. Я обычно тратил время, силы и деньги на то, чтобы в первую очередь избежать сбоя (выделенный сервер, с использованием аппаратного обеспечения разумного качества, ИБП, стабильного программного обеспечения).
Даже база данных SQLITE3 ОЧЕНЬ МЕДЛЕННАЯ
SQLite особенно чувствителен к базовой файловой системе (но это повлияет на все базы данных). То, что вы не упоминаете, в какой файловой системе (или даже какой операционной системе!) Она работает, заставляет меня думать, что вы не потратили много времени на настройку установки.
Если бы это был я, у меня был бы посмотрите MariaDB - это форк mysql и включает улучшенный механизм ISAM ( Aria ), который имеет некоторые преимущества в производительности и поддерживает транзакции. (работает под Linux, использует xfs без барьеров и планировщик крайних сроков.)
Но вам нужно посмотреть на свое оборудование, чтобы оно действительно заработало.
Даже БД SQLITE3 ОЧЕНЬ МЕДЛЕННАЯ
SQLite особенно чувствителен к базовой файловой системе (но это повлияет на все базы данных). То, что вы не упоминаете, в какой файловой системе (или даже какой операционной системе!) Она работает, заставляет меня думать, что вы не потратили много времени на настройку установки.
Если бы это был я, у меня был бы посмотрите MariaDB - это форк mysql, включающий улучшенный механизм ISAM ( Aria ), который имеет некоторые преимущества в производительности и поддерживает транзакции. (работает на Linux, использует xfs без барьеров и планировщик крайних сроков.)
Но вам нужно посмотреть на свое оборудование, чтобы оно действительно заработало.
Даже БД SQLITE3 ОЧЕНЬ МЕДЛЕННАЯ
SQLite особенно чувствителен к базовой файловой системе (но это повлияет на все базы данных). То, что вы не упоминаете, в какой файловой системе (или даже какой операционной системе!) Она работает, заставляет меня думать, что вы не потратили много времени на настройку установки.
Если бы это был я, у меня был бы посмотрите MariaDB - это форк mysql и включает улучшенный механизм ISAM ( Aria ), который имеет некоторые преимущества в производительности и поддерживает транзакции. (работает под Linux, использует xfs без барьеров и планировщик крайних сроков.)
Но вам нужно посмотреть на свое оборудование, чтобы оно действительно заработало.
) это заставляет меня думать, что вы не потратили много времени на настройку установки.Если бы это был я, я бы взглянул на MariaDB - это форк mysql и включает улучшенный механизм ISAM ( Aria ), который имеет некоторые преимущества в производительности и поддерживает транзакции. (работает на Linux, использует xfs без барьеров и планировщик крайних сроков.)
Но вам нужно посмотреть на свое оборудование, чтобы оно действительно заработало.
) это заставляет меня думать, что вы не потратили много времени на настройку установки.Если бы это был я, я бы взглянул на MariaDB - это форк mysql и включает улучшенный механизм ISAM ( Aria ), который имеет некоторые преимущества в производительности и поддерживает транзакции. (работает на Linux, использует xfs без барьеров и планировщик крайних сроков.)
Но вам нужно посмотреть на свое оборудование, чтобы оно действительно заработало.
По моему опыту, InnoDB (при правильной настройке и использовании) лишь немного медленнее MyISAM (конечно, не на порядок). Мне приходит в голову несколько предложений по повышению производительности:
Вы найдете полезные указатели здесь:
есть множество параметров, которые можно использовать для настройки innodb. myisam для такого количества данных не подходит - например, он требует ремонта после сбоя.
взгляните на mysqltuner или мастер настройки sql percona ; Добавьте на него много оперативной памяти и быстрой io-подсистемы, и innodb может дать вам очень приличную производительность.
innodb позволяет сжатие данных на лету . это не ускорит работу, но может сэкономить место для хранения.
независимо от выбранного механизма БД: