NoSQL@DB系ミドルウェア¶
はじめに¶
本サイトにつきまして、以下をご認識のほど宜しくお願いいたします。
01. NoSQL (非関係DB) の仕組み¶
アーキテクチャ¶
記入中...
NoSQL¶
▼ NoSQLとは¶
NoSQLは、データ同士が関係を持たないデータ格納形式である。
RDBとは異なり、データをメインメモリに保管する。
▼ NoSQLの種類¶
代表的なものとして、以下がある。
- Memcached
- Redis
- AWS DynamoDB
- MongoDB
- Apache Cassandra
イネーブラ型¶
▼ インメモリDB¶
メモリ (例:DRAMなどの物理メモリ、仮想メモリ) 上にデータを保管するDBを、ストレージ上に保管することと比較して、インメモリDBという。
インメモリDBを採用する場合は、データ保管とプロセス割り当ての間でメモリ領域を奪い合うことになるため、メモリサイズを大きくする必要がある。
02. リーダー選出 (分散ロック)¶
『分散ロック』ともいう。
複数のレプリカのうち、いずれかのレプリカのみに処理を実行させたい場合、リーダーのレプリカを選出する必要がある。
先にキー名を作成したレプリカをリーダーとして、処理を実行させる。
例えば、監視システムでは、特定のレプリカが監視処理を実行できればいいため、リーダー選出の仕組みが適切である。
sequenceDiagram
box lightyellow monitoring app instance
participant foo.ts
participant bar.ts
end
participant Redis
participant 監視対象
foo.ts->>Redis: ロック取得
Redis->>foo.ts: 返信
foo.ts->>bar.ts: MonitoringRequest関数コール
alt MonitoringRequest (監視リクエスト)
bar.ts->>bar.ts: 前処理
alt GETメソッドによる監視リクエスト
bar.ts->>監視対象: axios.get
監視対象-->>bar.ts: 返信
else POSTメソッドによる監視リクエスト
bar.ts->>監視対象: axios.post
監視対象-->>bar.ts: 返信
else PUTメソッドによる監視リクエスト
bar.ts->>監視対象: axios.put
監視対象-->>bar.ts: 返信
end
bar.ts->>bar.ts: 後処理
bar.ts-->>foo.ts: 返却
end
Redis->>foo.ts: ロック自動解放