コンテンツにスキップ

NoSQL@DB系ミドルウェア

はじめに

本サイトにつきまして、以下をご認識のほど宜しくお願いいたします。


01. NoSQL (非関係DB) の仕組み

アーキテクチャ

記入中...


NoSQL

▼ NoSQLとは

NoSQLは、データ同士が関係を持たないデータ格納形式である。

RDBとは異なり、データをメインメモリに保管する。

▼ NoSQLの種類

代表的なものとして、以下がある。

  • Memcached
  • Redis
  • AWS DynamoDB
  • MongoDB
  • Apache Cassandra

NoSQLの分類


イネーブラ型

▼ インメモリ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: ロック自動解放