Каковы хорошие, быстрые постоянные параметры хранения данных 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
Общей альтернативой для базы данных является простой файл, но исправьте меня, если я ошибаюсь, но совместимый доступ к файлам может быть медленнее.
Удачи.
Ответ 6
Чтобы добавить еще что-то к уже упомянутому, PHP имеет встроенную поддержку
Для последнего есть хорошая статья Йоханнеса Шлютера.
Ответ 7
я поеду на MySQl, на всякий случай вам нужно будет обновить свое приложение в будущем. Лучше быть будущим доказательством, когда дело касается приложений.