データベースの読み書き分離ソリューション: PHP プログラミングでのアプリケーション
Web アプリケーション開発のプロセスでは、データベースはアプリケーションのさまざまなデータや情報を保存するために使用されるため、その安定性と信頼性は非常に重要です。大規模でトラフィックの多い Web アプリケーションの多くは、データベースのパフォーマンスと信頼性の課題に直面しています。この目的を達成するために、データベースの読み取りと書き込みの分離スキームが導入され、これらの課題に対処しました。この記事では、PHP プログラミングでデータベースの読み取りと書き込みの分離スキームを使用して、アプリケーションのパフォーマンスと信頼性を向上させる方法を説明します。
データベース読み取り/書き込み分離とは、データベース サーバーを 2 つの部分に分割することを指します。1 つの部分は読み取りリクエストの処理専用です。 、もう 1 つの部分は、書き込みリクエストを具体的に処理する部分です。これの目的は、データベースのアクセス効率とパフォーマンスを向上させ、データベース サーバーの負荷を軽減することです。
具体的な実装プロセスでは、読み取りと書き込みの分離は通常、マスター/スレーブ バックアップとデュアル マスター レプリケーションの 2 つの方法に分けられます。このうち、マスター/スレーブ バックアップ方式では、読み取りリクエストは複数のスレーブ サーバーに分散され、書き込みリクエストはマスター サーバー上でのみ処理されます。デュアルマスター レプリケーション ソリューションは、読み取りおよび書き込みリクエストを複数のサーバーに均等に分散し、サーバー間のデータ同期を確保する必要があります。
PHP プログラミングでは、通常、アプリケーション データの保存と管理に MySQL データベースが使用されます。以下では、PHP における 2 つの一般的なデータベース読み取り/書き込み分離スキームの適用を紹介します。
2.1 マスター/スレーブ レプリケーション スキーム
マスター/スレーブ レプリケーション スキームを使用する場合、プログラムは SQL ステートメントを作成します。読み取ったSQL文はスレーブサーバーに送信されます。読み取りサーバーと書き込みサーバー間でデータを同期するには、共通のエイリアス「log bin」を持つバイナリ ロギング テクノロジを使用する必要があります。具体的な手順は以下のとおりです。
(1) メインサーバーのバイナリログ機能を有効にする
MySQL 設定ファイル my.cnf に以下の設定情報を追加します。
log-bin= mysql-bin #バイナリログ機能を有効にする
binlog-ignore-db=mysql #特定のデータベースを無視する
binlog-do-db=dbname # データベースを指定します同期する必要があります
$dbw = new PDO('mysql:host=master_host_name;dbname=dbname ;charset=utf-8', 'user_name', 'password', array(PDO::ATTR_TIMEOUT = > 1));
//スレーブ読み取りサーバーに接続します
$dbr = new PDO(' mysql:host=slave_host_name;dbname=dbname;charset=utf-8', 'user_name', 'password', array(PDO::ATTR_TIMEOUT => 1));
//読み取り操作を実行します
$stmt = $dbr->query('SELECT * FROM table_name');
//書き込み操作を実行します
$sql = 'INSERT INTO table_name (col1,col2) VALUES (:col1, :col2) ';
$stmt = $dbw->prepare($sql);
$stmt->bindValue(':col1', $value1);
$stmt->bindValue(': Col2', $value2);
$stmt->execute();
$db1 = new PDO('mysql:host=host_name_1;dbname= dbname;charset=utf-8 ', 'user_name', 'password', array(PDO::ATTR_TIMEOUT => 1));
//メインサーバーに接続します 2
$db2 = new PDO( 'mysql:host=host_name_2;dbname= dbname;charset=utf-8', 'user_name', 'password', array(PDO::ATTR_TIMEOUT => 1));
//読み取り操作を実行します
$stmt = $db1->query ('SELECT * FROM table_name');
//書き込み操作を実行します
$sql = 'INSERT INTO table_name (col1,col2) VALUES (:col1, :col2)' ;
$stmt = $db2 ->prepare($sql);
$stmt->bindValue(':col1', $value1);
$stmt->bindValue(':col2) ', $value2);
$stmt->execute();
データベースの読み取り/書き込み分離スキームを適用することで、Web アプリケーションのパフォーマンスと信頼性を向上させることができます。 PHP プログラミングでは、マスター スレーブ レプリケーションとデュアル マスター レプリケーションを使用してデータベースの読み取りと書き込みを分離し、実際の状況に応じて適切なソリューションを選択できます。どのソリューションを採用する場合でも、データベースの読み取り/書き込み分離ソリューションを適切に適用するには、データベース サーバー間の同期、コード内で接続されているサーバー アドレスとポートなどの詳細に注意を払う必要があります。
以上がデータベースの読み取りと書き込みの分離ソリューション: PHP プログラミングでのアプリケーションの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。