Sqlite для дискового массива? - PullRequest
1 голос
/ 04 апреля 2009

Я хочу использовать SQLite в качестве ассоциативного массива, который сохраняется на диск.

Это хорошая идея? Меня беспокоит необходимость разбирать SQL каждый раз, когда я делаю что-то вроде:

база данных ["someindex"] , которая должна быть переведена в нечто вроде

выберите значение из базы данных, где index = 'someindex' , что, в свою очередь, должно быть переведено на внутренний язык SQL.

Ответы [ 4 ]

5 голосов
/ 04 апреля 2009

Если вы беспокоитесь о накладных расходах SQL и нуждаетесь только в простом ассоциативном массиве, возможно, хорошим выбором будет относительный DBM, такой как GDBM или Berkeley DB?

1 голос
/ 04 апреля 2009

SQLite должен быть довольно быстрым, как дисковый ассоциативный массив. Не забудьте использовать подготовленные операторы , которые анализируют и компилируют ваш SQL один раз для многократного вызова; они также более безопасны против атак SQL-инъекций . Если вы сделаете это, вы получите довольно хорошую производительность от SQLite.

Другой вариант для простого дискового ассоциативного массива, ну, в общем, файловая система; это довольно популярный дисковый ассоциативный массив. Создайте каталог в файловой системе, используйте один ключ для каждой записи. Если вам потребуется более пары сотен, то создайте один каталог на двухсимвольный префикс ключа, чтобы количество файлов в каталоге было достаточно небольшим. Если ваши ключи не являются безопасными в качестве имен файлов, то хешируйте их, используя SHA-1 или SHA-256 или что-то еще.

1 голос
/ 04 апреля 2009

Проверьте параметры sqlite для простого перехода к переменной <-> sql

0 голосов
/ 04 апреля 2009

Это действительно зависит от вашей актуальной проблемы. Ваша формулировка проблемы очень общая и сильно зависит от размера вашей хеш-таблицы.

Для небольших хеш-таблиц вы собираетесь читать и писать только один раз, когда действительно предпочитаете текстовый файл (удобно для отладки).

Если ваша хеш-таблица, скажем, меньше 25 мг, SQLite, вероятно, будет хорошо работать для вас

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...