2012-05-17 3 views
0

Я создаю приложение rails, использую счетчик (счетчик) ширины сайта, который используется (чтение и запись) разными страницами, в основном многие страницы могут приводить к увеличению счетчика, что является многопоточным способом хранения этой переменной, так что 1) он потокобезопасен, я могу иметь много одновременного доступа пользователя, который мог бы читать и писать эту переменную. 2) высокопроизводительный, я изначально думал о сохранении этой переменной в DB, но интересно, есть ли лучший способ, который может дать большой объем запроса, и я не хочу, чтобы этот запрос БД был узким местом моего приложения ...безопасный и эффективный способ сохранить всю ширину сайта

предложения?

ответ

1

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

Вы также можете посмотреть membase. Я не пробовал, но для упрощения это распределенный сервер memcached, который автоматически сохраняется на диске.

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

+0

эта переменная является «критически важной» и должна быть на 100% точнее, потому что я использую ее как ключ для хранения/получения других пользовательских данных. с этим, я думаю, единственный вариант - это упорство на БД. Если я должен это сделать, есть ли наилучшая практика для построения запроса MySql, который является высокопроизводительным, я считаю, что коэффициент чтения и записи составляет около 10: 1. – Twinkiestar

+0

@Twinkiestar, похоже, что вы можете использовать традиционную реляционную базу данных с внешними ключами в своей пользовательской таблице. –

0

Ну, вам нужно настойчивость, поэтому вам нужно сохранить его в базе данных/сеансе/файле AFAIK.

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