Если вы планируете использовать двигатель памяти MySQL, есть несколько моментов:
по умолчанию, индексы реализованы с использованием хэш-таблицы, а не btrees. Если вам нужно сортировать данные или поддерживать диапазон, использование btrees может быть более интересным.
блокировка гранулярности - это таблица. Для защиты от одновременных операций DML существует блокировка R/W. Хотя сырая производительность неплохая, масштабируемость не очень хороша, когда у вас много писателей одновременно.
все строки имеют фиксированную ширину (берегитесь, если вам нужно хранить VARCHARS ...)
Кроме того, как и большинство других СУБД, протокол MySQL является синхронным. Каждый раз, когда клиенты будут записывать в базу данных, они будут ждать ответа. Если у вас много данных, операции пакетной записи почти обязательны для получения хорошей производительности.
Это действительно зависит от объема, количества клиентов и пропускной способности. Если требования низки, то любое решение для хранения (включая MySQL) будет работать нормально. Теперь, если требуется более высокая производительность или большая масштабируемость, то другие решения, вероятно, будут лучше.
Что вы хотите написать, возможно, это приложение DIRT (с интенсивным использованием данных в реальном времени). Хорошими решениями для хранения данных являются MongoDB (поддержка upserts, протокол oneway для операций записи и т. Д.) И Redis (операции с памятью, O (1), конвейерная обработка и т. Д.). В зависимости от ваших потребностей моделирование и обработка данных, возможно, будет проще с MongoDB из-за индексов btree и поддержки карт/уменьшений. Вероятно, это будет немного сложнее с Redis, но если вы выберете правильную структуру данных, вы получите более детерминированную производительность.
Наконец, вы также можете избежать хранения данных путем их обработки на лету.Вы можете добиться этого с помощью потокового движка, такого как те, которые используются на высокоскоростных торговых платформах. Например, если вы готовы кодировать на Java, ESPER - отличное решение CEP для обработки потоков данных и/или установления корреляции между потоками, используя язык, подобный SQL.
Я не собираюсь делать полный ответ, но вы можете обнаружить, что MongoDB делает все, что вы хотите, - вы можете остановить его от покраски на диск, эффективно сделав его встроенной БД. Вариант использования: --syncdelay 0 – Rich