2012-05-15 3 views
1

В настоящее время у меня мобильное приложение с высокой прочностью (90% чтения, 10% записи), которое обменивается данными с одним веб-сервером через php-вызовы и один MySQL-db. В db хранится информация профиля пользователя и сообщения, которые пользователи отправляют и получают. Мы получаем несколько сообщений в секунду, добавленных в db.фильтрация данных, хранящихся в Couchbase

Я занимаюсь масштабированием по горизонтали, балансировкой нагрузки и т. Д. Таким образом, у нас будет балансировка нагрузки перед кластером веб-серверов, а затем я планирую разместить слой узлов Couchbase поверх MySQL кластера, чтобы мы могли быстро получить доступ к информации профиля пользователя и информации о сообщениях. Мы будем хранить всю информацию о пользователе в Couchbase, но затем я хочу, чтобы memcache содержал только последние 24 часа сообщений в Couchbase, так как это временные рамки, в которых будет выполняться большая часть активности чтения.

Для данных сообщений, хранящихся в memcache, я хочу иметь возможность фильтровать сообщения на основе различных данных, найденных в полях сообщений, таких как страна, город, время и т. Д. Я знаю, что Couchbase использует подход KV, поэтому я не могу запрос, используя where clauses, как я бы с MySQL.

Есть ли способ сделать это? Отвечает ли Couchbase Views? Или я полностью лаем неправильное дерево с Couchbase?

ответ

0

Представления в Couchbase Server 2.0 и более поздних версиях - это то, что вы ищете. Если данные, помещенные в Couchbase, являются JSON, вы можете использовать эти представления для выполнения запросов по данным, которые вы помещаете в кластер Couchbase.

Обратите внимание, что вы можете использовать представление, которое испускает дату в виде массива (общий метод), и даже использовать это для ограничения периода времени просмотра, чтобы вы могли потенциально просто хранить все свои данные в Couchbase без нужно поставить его и в другую систему. Однако, если у вас есть другие причины, вы можете просто истечь через 24 часа после того, как вы поместите их в кеш. Затем, если вы используете один из клиентов, который его поддерживает, вы сможете получить и прикоснуться к документу в кеше, продлевая срок действия, если это необходимо. Единственным недостатком является то, что вам нужно будет придумать метод аннулирования документа при обновлении.

Один из способов сделать это - это триггер в mysql, который удалит данный ключ. Другой способ - аннулировать его с уровня приложения.

p.s .: полное раскрытие информации: Я являюсь одним из пользователей Couchbase

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