Должны ли мои классы драйверов баз данных поддерживать репликацию (PHP)? - PullRequest
1 голос
/ 26 июня 2009

В настоящее время я пишу PHP-приложение и драйверы (классы) для движков баз данных. Мне было интересно, если мне нужно написать поддержку репликации (master-slave)? Я немного новичок в этом, так о каких вещах должен беспокоиться мой проект или классы, если я хочу поддерживать балансировку нагрузки / репликацию? Ох, и это о MySQL.

Ответы [ 3 ]

1 голос
/ 26 июня 2009

Способ, которым мы используем нашу базу данных master-slave, заключается в том, чтобы использовать master для всего «активного использования» и slave для всех отчетов (где не имеет значения, что данные все еще немного «догоняют»). В зависимости от ваших потребностей, на главном устройстве могут происходить манипуляции с данными, а на ведомом устройстве - считывание всех данных. Это особенно помогает, когда у вас есть блокировка вставок или обновлений. (Примечание. Также учитывайте синтаксис MySQL «вставка с задержкой», где это возможно, что также помогает избежать блокировок.)

Что касается поддержки PHP для этого, все, что вам действительно нужно, - это поддерживать чистую обработку для нескольких (двух) соединений с базой данных и использовать главное (чтение / запись) или подчиненное (ТОЛЬКО ЧТЕНИЕ) соединение БД по желанию.

1 голос
/ 26 июня 2009

Если вы думаете, что будете использовать ведомые устройства для чтения и ведущие для записи, то ваш класс должен поддерживать как минимум несколько соединений одновременно.

Я покажу вам API, который я использовал. Если вы выберете этот способ, я могу отправить вам класс.

ShusterDb :: деЫпзЬапс ( 'прочитать') -> выбрать ($ SQL); // удостоверяется, что это SELECT в методе. ShusterDb :: деЫпзЬапсе ( 'записи') -> скаляр ($ SQL);

0 голосов
/ 25 июля 2009

Итай, если вы открыты для отправки своего класса, мне было бы интересно увидеть / возможно использовать его.

...