Я пытаюсь выбрать базу данных для нового разрабатываемого приложения. Вариантов очень много и ошибиться очень легко. Прежде всего, существует требование не использовать серверы баз данных. Необходимая база данных должна быть статической или динамической библиотекой C++. Данные, которые необходимо сохранить, представляют собой массив записей. Они различаются, но являются фиксированными для данного набора данных (поэтому их можно хранить в таблице). Информация в каждой строке может быть от нескольких сотен байт до нескольких мегабайт. И количество строк на данный момент может составлять миллионы и, как ожидается, будет расти.
Индекс строки можно использовать в качестве ключа. Нет необходимости поддерживать отдельный ключевой столбец.
Данные вставляются последовательно. Доступ для чтения будет выполняться только путем последовательного повторения всех данных или некоторого их сегмента (может потребоваться повторение с такими шагами, как каждый 5-й).
- Я не думаю, что реляционные БД хороши по многим причинам. а. В основном они серверные. Я знаю о SQLite, но, насколько мне известно, он хранит данные в одном файле, что, как я предполагаю, может привести к проблемам, связанным с максимальным размером файла. б. Нам не нужна мощь, которую предоставляет SQL, вместо этого мы хотели бы иметь больше гибкости в хранимых типах данных.
- Существуют базы данных Key/Value, отличные от SQL, такие как BerkeleyDB, RocksDB или что-то вроде luxio для более легких альтернатив. Предоставленного ими функционала более чем достаточно для поставленной задачи. И это может быть правильным выбором, однако я не знаю, насколько хорошо они оптимизированы для такого случая, когда у нас есть непрерывные целочисленные ключи. Доступ с ассоциативным ключом (который нам не требуется) может иметь некоторые накладные расходы на производительность.
- Я знаю, что есть некоторые типы баз данных, отличных от SQL, называемые «широкие столбцы», с которыми я не знаком. Тем не менее, название звучит так, как будто оно идеально подходит для нашей задачи. Все базы данных, которые я могу найти, основаны на сервере claud. Если вы знаете dbm-подобную библиотеку для такого типа базы данных, пожалуйста, сообщите. У меня нет опыта работы с базами данных, поэтому, пожалуйста, поправьте меня, если я ошибаюсь в любой из трех вышеперечисленных тычинок.