Хорошее решение blobstore / memcache
Настройка интеллектуального проекта хранилища данных на облачном сервере Linux. Основной язык-Python .
Хотел бы использовать этот шаблон для запроса данных и хранения данных:
- база данных SQL - база данных SQL используется для запроса данных. Однако база данных SQL хранит только поля, по которым требуется выполнить поиск, а не сам" большой двоичный объект " данных. Вместо этого он хранит ключ, который ссылается на этот полный "большой двоичный объект" данных в хранилище Blobstore ключ-значение.
- Blobstore - ключ-значение Blobstore используется для хранения фактических "документов" или "больших двоичных объектов" данных.
Проблема, с которой мы сталкиваемся, заключается в том, что мы хотели бы, чтобы более часто доступные большие двоичные объекты данных автоматически сохранялись в оперативной памяти. Мы планировали использовать для этого редис. Тем не менее, мы хотели бы иметь решение, которое автоматически пытается извлечь данные из оперативной памяти, если оно не может найти их там, то оно отправляется в blobstore.
Есть ли хорошая библиотека или готовая решение для этого, которое мы можем использовать, не сворачивая наши собственные? Кроме того, любые замечания и критические замечания по поводу предлагаемой архитектуры также будут оценены.
Большое спасибо!
2 ответа:
Вместо того, чтобы использовать Redis или Memcached для кэширования, плюс пакет "blobstore" для хранения вещей на диске, я бы предложил взглянуть на Couchbase Server, который делает именно то, что вы хотите (т. е. обслуживает горячие Blob-объекты из памяти, но все еще сохраняет их на диске).
В компании, в которой я работаю, мы обычно используем описанный вами шаблон (то есть индексирование в реляционной базе данных плюс хранение больших двоичных объектов) для наших серверов архивации (терабайт данных). Он хорошо работает, когда ввод-вывод выполняется для запись больших двоичных объектов ведется последовательно. Большие двоичные объекты никогда не переписываются, а просто добавляются в конце файла (это нормально для приложения архивации).Тот же подход использовался и другими. Например:
- Bitcask (используется в Riak): http://downloads.basho.com/papers/bitcask-intro.pdf
- Eblob (используется в проекте Elliptics): http://doc.ioremap.net/eblob:eblob
Любая база данных SQL будет работать для первой части. Blobstore также может быть получен, по существу, "с полки" с помощью cbfs. Это новый проект, построенный поверх couchbase 2.0, но он, похоже, находится в довольно активном развитии.
CouchBase уже пытается обслуживать результаты из кэша ОЗУ перед проверкой диска и полностью распределена для поддержки больших наборов данных.
CBFS помещает файловую систему поверх этого, и уже есть модуль FUSE, написанный для нее.
Поскольку fileststems-это фактически самый низкий общий знаменатель, вам будет очень легко получить к нему доступ с python, и это уменьшит объем пользовательского кода, который вам нужно написать.
Сообщение в блоге: http://dustin.github.com/2012/09/27/cbfs.html
Репозиторий Проекта: https://github.com/couchbaselabs/cbfs