この記事は、ClarifiedCQRSマテリアルの概要です。
CQRSの理解を始める前に、その背後にある2つの主要な推進力であるコラボレーションと陳腐化を理解する必要があります。
コラボレーションとは、実際にコラボレーションするつもりであるかどうかに関係なく、複数の参加者が同じデータセットを使用または変更する状況を指します。多くの場合、変更できるユーザーを指定するルールがあります。また、これらの変更は、ある場合には受け入れられ、別の場合には受け入れられない場合があります。ユーザーは実在の人物またはソフトウェアである可能性があります。
陳腐化とは、マルチユーザーシステムでは、データがユーザーに表示されると、同じデータがその後変更されて陳腐化する可能性があるという事実を指します。たとえば、パフォーマンスを向上させるためにキャッシュを使用するほとんどすべてのシステムは、古いデータで動作します。つまり、ユーザーが下した決定は古いデータに基づいて行われた可能性があるため、完全に信頼することはできません。
標準の階層化アーキテクチャは、これらの問題のいずれにも対処していません。すべてのデータを単一のデータベースに配置することでコラボレーションを改善できますが、このようなアーキテクチャでは、パフォーマンスツールとしてキャッシュを使用することで陳腐化が悪化する傾向があります。
AC . , (Commands – CQRS). (Queries – CQRS)
(Queries)
, , , ? , , ?
, , , , , . .
, , – , , , , ?
? ? SELECT * FROM MyViewTable . . . - (, ).
, . , . , . , .
, , . , , .
. , , . – .
, , .
, , . (, .). , . , – . . ?
, , . , , , , .
, , , . .
(CQRS).
(Commands)
CQRS , . , Excel ( , – ), .
, , . , , . , ( ). , .
, , . - , , - , , .
, , , - . - , - . , . , - .
, , . - , , . , . , , , .
, , , .
UIs
(Queries) . , , , .
UI , , , , , . , , ID . , ID (int, guid .).
, , – . - .
, , . , , .
, . «» . , ? -?
, , , , . . , ? , ?
( ), , , , : «, ». , .
, , – . , – .
, . , , – .
- , , , . . , , , , .
, , , .
1 , AC, AC, . , , , . , , .
(service layer)
. , CQRS, , , , . .
, . , , , ? – , , .
, , , , .
?
1 , , . , , .
, – , (CQRS). , , ?
«»? ? « »?
, , . , , .
, – , .
, , , , , ? , , ? key-value. - ? , .
, . , , CQRS.
, , , , . :
MakeCustomerPerferredCommand → CustomerHasBeenMadePerferredEvent
. , , .
, , . .
CQRS , . CQRS, - (SOA), . , -, -, .
, -, , .
CQRS . , , .
- CQRS, . , . , , , .
CQRS , -.