Каковы хорошие, быстрые постоянные параметры хранения данных key-> value?

Для небольшого PHP-приложения, которое я пишу, нам нужно сохранить большое количество записей, имеющих хэш-ключ, и несколько простых значений полей ( "хост", "путь" ). например:

'4420ffb32a' => array(
  'host' => '127.0.0.1',
  'path' => 'path/to/resource',
);

Каково наилучшее постоянное хранилище данных? Будет ли MySQL лучшим выбором, или это слишком сложно для таких простых данных? Что даст лучшую производительность?

Ответ 1

Краткий ответ: Membase.


Длинный ответ:
В основном у вас есть три варианта: реляционная база данных, хранилище файлов или что-то еще.

Как вы сказали, реляционная база данных может быть излишней. Тем не менее, если это часть приложения, которое уже имеет MySQL или другую базу данных, я бы пошел с этим. Аналогично, хранение файлов иногда удобно (например, запись в несколько файлов XML), но дисковый ввод-вывод может быть медленным.

Теперь в другой категории у вас есть несколько отличных опций NoSQL, таких как CouchDB или Memcached.

Если вы не слишком беспокоитесь о сохранности ваших данных, я бы порекомендовал memcache. Он легкий, его легко запустить, и есть расширение Memcache PHP, которое облегчает его использование. Это сделано для хранения значения ключа, как это.

Единственный недостаток memcache заключается в том, что все ваши данные будут потеряны, как только остановится служба memcache. Вот тут и вступает Membase. Это ветка memcache с открытым исходным кодом, совместимая с протоколом, то есть она будет работать со всеми существующими клиентскими библиотеками. Тем не менее, он может сохранять ваши данные и фактически обеспечивать согласованность и надежность, чего не может сделать memcache.


ПРИМЕЧАНИЕ: этот ответ является пережитком своего времени, как и сам вопрос. Пожалуйста, не принимайте это буквально.

Ответ 2

Просто чтобы предложить что-то другое, redis (или redisdb-win32, если вы находитесь на серверах Windows)

Ответ 3

CouchDB - ваш ответ (хотя это может быть немного переборщиком для ваших нужд).

Ответ 4

Странно никто не упоминал Flintstone до сих пор.

Также хороший вариант Doctrine.

Ответ 5

Не лучший ответ. Но я бы сохранил его в базе данных mySQL и, возможно, использовал mysql_pconnect, если данные не будут извлекаться одновременно.

Информация о pconnect здесь: php.net

Общей альтернативой для базы данных является простой файл, но исправьте меня, если я ошибаюсь, но совместимый доступ к файлам может быть медленнее.

Удачи.

Ответ 7

я поеду на MySQl, на всякий случай вам нужно будет обновить свое приложение в будущем. Лучше быть будущим доказательством, когда дело касается приложений.