Самый высокопроизводительный Механизм хранения базы данных

StackOverflow https://stackoverflow.com/questions/485340

Вопрос

Мне нужны идеи для реализации (действительно) высокопроизводительного механизма базы данных / хранения в памяти.В диапазоне хранения более 20 000 объектов, причем каждый объект обновляется примерно каждые 5 секунд. Я хотел бы получить решение FOSS.

Какой мой лучший вариант?Каков ваш опыт?

Я работаю в основном на Java, но мне нужно, чтобы хранилище данных имело хорошую производительность, поэтому решение для хранилища данных не обязательно должно быть ориентировано на Java.

Мне также нужно, чтобы like мог запрашивать эти объекты, и мне нужно иметь возможность восстанавливать все объекты при запуске программы.

Это было полезно?

Решение

Базы данных SQLite является автономной базой данных с открытым исходным кодом, которая поддерживает базы данных в памяти (просто подключитесь к :memory:).Он имеет привязки для многих популярных языков программирования.Это традиционная реляционная база данных на основе SQL, но вы не запускаете отдельный сервер – просто используйте ее как библиотеку в своей программе.Это довольно быстро.Достаточно ли это быстро, я не знаю, но, возможно, стоит поэкспериментировать.

Драйвер Java.

Другие советы

обновляете ли вы 20 тысяч объектов каждые 5 секунд или обновляете один из 20 тысяч объектов каждые 5 секунд?

Что это за объекты?Почему традиционной СУБД недостаточно?

Проверьте HSQLDB и Превайлер.Prevayler - это смена парадигмы с традиционной СУБД, которую я использовал (парадигму, то есть не конкретно Prevayler) в ряде проектов и обнаружил, что она имеет реальные достоинства.

Зависит от того, как именно вам нужно запросить его, но заглядывали ли вы в memcached?

http://www.danga.com/memcached/

Другие варианты могут включать Таблицы ПАМЯТИ MySQL, тот Кэш APC если вы используете PHP.

Было бы полезно получить более подробную информацию о проекте / требованиях.

Хранилище в памяти ?

1) простой массив C 'malloc', в котором будут проиндексированы все ваши структуры.

2) BerkeleyDB: http://www.oracle.com/technology/products/berkeley-db/index.html.Это быстро, потому что вы создаете свои собственные индексы (вторичная база данных) и нет SQL-выражения для вычисления.

Посмотрите на некоторые из перечисленных здесь продуктов: http://en.wikipedia.org/wiki/In-memory_database

Какой уровень долговечности вам нужен?20 000 обновлений каждые 5 секунд, вероятно, будут затруднены для большинства аппаратных средств ввода-вывода с точки зрения количества транзакций, если вы будете записывать данные обратно на диск для каждой из них.

Если вы можете позволить себе потерять некоторые обновления, вы, вероятно, могли бы без проблем сбрасывать их на диск каждые 100 мс на довольно дешевом оборудовании, если ваша база данных и операционная система поддерживают это.

Если это действительно база данных в памяти, которую вы не хотите часто сбрасывать на диск, это звучит довольно тривиально.Я слышал, что H2 довольно хорош, но SQLite также может работать.Правильно настроенный экземпляр MySQL также мог бы это сделать (но может быть более запутанным)

База данных Oracle TimesTen В оперативной памяти.Видишь: http://www.informationweek.com/whitepaper/Business-Intelligence/Datamarts-Data-Warehouses/oracle-timesten-in-memory-databas-wp1228511232361

Карта Хроники является чистая Java хранилище ключей-значений

  • он обладает действительно высокой производительностью, поддерживая 1 миллион записей в секунду из одного потока.Это миф о том, что быстрая база данных не может быть написана на Java.
  • Легко сохраняет и загружает любые сериализуемые объекты Java, обеспечивает простой Map интерфейс
  • LGPLv3

Поскольку у вас не так много "таблиц", полноценная база данных SQL может оказаться излишним решением, индексы и запросы могут быть реализованы с помощью нескольких отдельных хранилищ ключ-значение, которые обновляются вручную с помощью ванильного Java-кода.Карта Хроники обеспечивает механизмы чтобы сделать такие обновления одновременно изолированными друг от друга, если вам это нужно.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top