2013-04-11 3 views
2

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

Какая база данных будет лучше всего подходит для этого приложения? Полнофункциональная база данных, такая как mysql или простая, например sqlite3? Или есть даже лучший способ, не используя базу данных?

ответ

2

Документы-магазины сделаны для этого. Я настоятельно рекомендую Redis для этой конкретной проблемы. Это хранилище «ключ-значение», то есть у него нет отношений, у него нет схем, все, что он делает, - это ключи к значению. Это похоже на то, что вам нужно.

Альтернативами являются MongoDB и CouchDB. Посмотрите вокруг и посмотрите, какие сюжеты вам больше всего нравятся. Моя рекомендация остается с Редис.

Reading: http://kkovacs.eu/cassandra-vs-mongodb-vs-couchdb-vs-redis

1

Джо имеет некоторые хорошие рекомендации для хранилищ данных, которые обычно используют для кэширования. Я бы сказал, что Redis, Couchbase (а не CouchDB, хотя - он идет на диск довольно часто/не так быстро из моего опыта) и просто в Memcached.

MongoDB можно использовать для кеширования, но я не думаю, что он совершенно так настроен для чистого кэширования, как что-то вроде Redis. Монго может немного ударить по диску.

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

Смежные вопросы