別々の読み取りと書き込み
基本的な原理は、データベースからSELECTクエリを処理している間に、操作を、メインのトランザクションデータベース処理は、変更を加える加える操作、削除(INSERT、UPDATEを、DELETE)することで、データベースは物事が同期するために、他のデータベースから生じた操作を変更コピーするために使用されますSQLに、例えば、マスター・データベースは、データの読み取り、書き込みを担当し、データライブラリを読み込むための唯一の責任を読んで、ライブラリのすべての書き込み操作、同期更新ライブラリが読み込み、ライブラリーを書くために、読書ライブラリは、複数のログを使用して同期していることができますデータおよび複数のデータベースの同期のためのマスターデータベース
次のように具体的な構成があります
設定ファイルに割り当てスレーブデータベースを増やします
Djangoのsettings.py設定ファイルでは、データベースは、次のコードを追加します。
= {DATABASES 'デフォルト':{ 'ENGINE': 'django.db.backends.mysql'、 'HOST': '127.0.0.1'、実行#マスターサーバーIP 'PORT':3306、マスターサーバーのポート番号を実行しています 'ユーザー': 'ジャンゴ'、ユーザー名#プライマリサーバ 'パスワード': 'ジャンゴ'、パスワード#マスターサーバー の'name': 'djangobase' #テーブル名 }、 'スレーブ':{ 'ENGINE': ' django.db.backends.mysql ' 'HOST ':' 127.0.0.1'、 'PORT ':8306、 ' USER ':' django_slave'、 'PASSWORD ':' django_slave'、 ' NAME ':'djangobase_slave」 } }
ルート分類データベース操作を作成します。
db_router.py utilsのプロジェクトファイル、および個別の読み取りに使用されるファイルデシベル、中クラスの定義を作成し、書き込み
MasterSlaveDBRouterクラス(オブジェクト): 「」「読み書きするマスター・データベースとは別のルート」「」 DEF db_for_read(セルフ、モデルは、**ヒント): 「」「読むデータベース」「」 復帰「奴隷」 DEF db_for_write(セルフ、モデル、ヒント**): "" "データベース書き込み" "" 復帰"デフォルト" :DEFのallow_relation(セルフ、OBJ1、OBJ2は、**)ヒント "" " "実行されている操作に関連付けられている"" Trueを返し
ルートを設定すると、読み取りと書き込みの分離します
設定ファイルの増加
#別の読み取りを設定し、書き込み DATABASE_ROUTERSの= [「項目名.utils.db_router。「カスタムクラス名」 ']