@yiicoder

Как правильнее организовать синхронизацию баз на PHP+Apc+Mongo?

В приложении очень большое кол-во записи в БД - так, что mongodb перестает справляться.
APC кэш на чтение не сильно помог исправить ситуацию.

Хотим и запись и чтение делать из APС, а данные в mongodb - записывать "периодически".

Сейчас сделали через скрипт на корне - замечаем, что данные иногда теряются, да и решение выглядит так себе.

Как еще можно организовать скидывание данных в БД?
  • Вопрос задан
  • 2502 просмотра
Пригласить эксперта
Ответы на вопрос 1
index0h
@index0h
PHP, Golang. https://github.com/index0h
Я правильно понимаю, вы пытаетесь использовать БД как кэш?
Если вам нужен именно кэш - почему вы удивляетесь, что данные теряются? Это вполне нормальная ситуация, я бы рекомендовал посмотреть в сторону memcached/redis, apc все же лучше для хранения опкодов.

Если же вам нужна БД - либо шардируйте, либо проводите оптимизации хранимых данных, либо прокачивайте кэш до уровня "на чтение бд вообще не трогается".

Под задачу синхронизации не плохо подходит решение:
1. Есть очередь (либо список) под rabbitmq, или любым другим менеджером очередей.
2. При любом изменении данных в БД - в очередь записывается сообщение об этом.
3. На зависимых серверах в постоянном прослушивании находятся обработчики, которые выполняют действия, записанные в сообщениях из очередей.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы