この記事は機械翻訳のミラー記事です。元の記事にジャンプするにはこちらをクリックしてください。
建築家
建築家
リスト
放送
茶屋
インテリジェントAI会話
.NETキャリア&テクニカルカレッジ
ちっちゃいなクズブログ
この版
利用者
Architect_Programmer_Code農業ネットワーク
»
建築家
›
データベース&データベース
›
MySQL
›
データベーススキーマ:CQRSへの読み書き分離
眺める:
16395
|
答える:
0
[出典]
データベーススキーマ:CQRSへの読み書き分離
[リンクをコピー]
クズども
掲載地 2020/05/04 9:58:50
|
|
|
|
読み書き分離
企業の事業が拡大し、ユーザー数が大幅に増加すると、元のデータベースは維持できない可能性が高いです。 それなら、はい
スケールインはハードウェアの性能を拡張しますが、ユーザー数は今後も増え続け、その性能向上はすぐに消費されるでしょう。
読み書き分離:データベースは耐えられず、読み書きが多すぎて、特に過去24時間で人気の製品のように複雑なクエリがある場合はなおさらです。 非常に複雑なSQL文が必要で、もちろん実行も遅いです。
しかし、読み書きを分離するためには、データベースをマスターライブラリとスレーブライブラリに分割する必要があります。
市場に出回っている主要なリレーショナルデータベースはデータレプリケーションをサポートしているため、データベースをマスターとスレーブの2つの役割に分け、マスターサーバーに書き込み操作を行い、マスターサーバーを他のスレーブサーバーと同期させることができます。
読み取り操作やデータ解析などのオフライン操作はスレーブサーバー上で行われます。
インターネット上の多くのアプリケーションが読み込まれているため、複数のスレーブが負荷を分担し、データの可用性と正確性を保証できることがわかっています。
ただし、対応する元のアプリケーションコードも修正が必要であり、データを書き込む際にマスターライブラリを使い、データを読み込む際にはスレーブライブラリを使うように変更しなければなりません。これは書き換えに相当します。
複素クエリ
しかし、コードを書き直した後でも、複雑なクエリが多すぎてパフォーマンスが大きく向上しなかったこと、そしてデータベースのコンポーネントでジョインは非常にパフォーマンスを多く消費すると述べています。
では、過去24時間の人気商品を別のテーブルで保存できて、簡単なSQLだけで済みますか?
言い換えれば、単一のデータベーステーブルセットはレポート、検索、トランザクションなど異なる動作には適していません。
現在のテーブルはデータの追加や修正を目的としており、複雑なクエリには適していません。
しかし同時に、このクエリベースがどのように更新されるか、この遅延に耐えられるか、リアルタイムで更新されないかどうかも考慮する必要があります。
CQRS
遅延が許容できるかどうかは、ビジネスの観点から考える必要があります。例えば、過去24時間の人気商品などです。少し古い情報は大きな影響を与えず、最終的な一貫性だけが求められます。
CQRS(コマンドクエリ責任分離)を用い、つまりコマンドを追加・変更するためのコマンドをクエリ責任から分離する方法です。
CQRSでは、読み取り(クエリ)と書き込み(コマンド)を分離することに重点が置かれています。ユーザーが読むデータは通常古いため、データベースから読む必要がなく、直接読み取りデータソースを確立できます。 キャッシュでも、XML、JSONでも構いません。
先ほど述べたアップデートの問題をどう解決すればいいですか? イベント、つまりイベントを使うことができます。例えば、製品が売れた際に、元のRead Modelを変更するイベントを公開できます。
このようにして、同期はイベントメカニズムを通じて非同期となります。
最後に、この方法は複雑なクエリにのみ最適であり、元の単純なクエリはリレーショナルデータベースで取得されます。 なぜでしょうか。 新技術の導入には価格が必要であり、同期突然変異ステップやイベントメカニズムなどがあるため、新技術の利点だけを見ることはできず、欠点は見られません。
先の:
ジニン新型コロナウイルス リアルタイムビッグデータレポートソースコードダウンロード
次に:
プロジェクトクラスライブラリを参照する際のdll.refreshファイルの影響
関連記事
•
SQL Serverサーバーはデータベースの整合ルールを修正します
•
SQL SERVERデータベースはデフォルトの照合ルールを修正します
•
SQL Serverのレプリケーションは、データベースを新しいデータベースにクローンします
•
MySQLデータベースのテストテーブルは1,000万件のデータを挿入します
•
[翻訳] なぜNET/C#のMySqlConnectorとMySql.Dataが前者を勝ち取るのか
•
.NET/C# はDataTablesを通じて動的にテーブル構造を作成します
•
SQL SERVERデータベース用のメモリ最適化テーブル
•
SQL Serverがクラスタ化されていないインデックスに対して作成する最大varchar長
•
[AI](15)ベクターデータベースQdrantは使いやすいです
•
【AI】(14) オープンソースベクターデータベースの簡単な紹介
閲覧したセクション
Node.js
フロントエンドフレーム
HTML/CSS/JavaScript
.Net/C#
リソースの共有
C/C++
レジャー灌漑
その他の番組編成
ウェブサイト構築
免責事項:
Code Farmer Networkが発行するすべてのソフトウェア、プログラミング資料、記事は学習および研究目的のみを目的としています。 上記の内容は商業的または違法な目的で使用されてはならず、そうでなければ利用者はすべての結果を負うことになります。 このサイトの情報はインターネットからのものであり、著作権紛争はこのサイトとは関係ありません。 ダウンロード後24時間以内に上記の内容を完全にパソコンから削除してください。 もしこのプログラムを気に入ったら、正規のソフトウェアを支持し、登録を購入し、より良い本物のサービスを受けてください。 もし侵害があれば、メールでご連絡ください。
Mail To:help@itsvse.com