Lock in $30 Savings on PRO—Offer Ends Soon! ⏳

Bootcamp2025 NoSQL

Avatar for コウムラ コウムラ
July 31, 2025
320

Bootcamp2025 NoSQL

Avatar for コウムラ

コウムラ

July 31, 2025
Tweet

Transcript

  1. © Geniee, Inc. 研修の⽬的 1. NoSQL について学ぶ ◦ NoSQLの基本概念と種類(kvs型,ドキュメント型,グラフ型)を理解する ◦

    RDBとの違いを理解する 2. NoSQLを実際に触ってみる ◦ 実際にmongoとredisを触ってみる ◦ 基本的な操作から特徴的な機能を体験する 3. 各技術の特徴を理解し適切に使い分けられるようになる ◦ 強みと弱みを理解し、適切なユースケースを把握する
  2. © Geniee, Inc. なぜNoSQLが注⽬されているのか 1 2 データの多様化 データの多様化が進んでおり、 従来のRDBでは対応できないケースが 増加している。

    RDBの限界 RDBはスケーラビリティの問題を抱えて おり、単一サーバーでの運用が前提で あるため、拡張が難しい。
  3. © Geniee, Inc. RDBとNoSQLの違い - データ構造 RDB NoSQL KVS ドキュメント

    グラフ 表と表同士の関係性でデータを 表現 RDB以外のデータ構造 KVS型,ドキュメント型,グラフ型など
  4. © Geniee, Inc. RDBとNoSQLの違い - 特徴 
 RDBMS NoSQL データモデル

    
 リレーショナル
 目的に応じてさまざま 
 得意分野 
 正規化された構造化データ 
 ビッグデータ、半構造化データ ※など
 重視している点 
 データの堅牢性/一貫性 
 スケーラビリティ/パフォーマンス 
 トランザクション 
 ACID準拠
 ないか、限定的
 操作言語 
 SQL(標準あり)
 製品によって異なる 
 ※半構造化データ… JSONやXMLのように、常に一定ではないが規則のあるデータ。 
          これに対して、 RDBのスキーマで事前に定義できるデータを構造化データ、 
          画像や音声、動画のような不定形のデータを非構造化データという。 

  5. © Geniee, Inc. キー•バリューデータストア(KVS) • データを主キーと値のペアで保存 • データには主キーでアクセスする • Amazon

    DynamoDB, Redis等 key 2 value 2 key 1 value 1 key n value n ・・ ・ 使用例 • データ キャッシュ • セッションの管理 Redis とかどのプロダクトでも使用されている ユーザーの情報とか静的データを保存することでmysql とか に検索クエリを投げなくて済む • https://try.redis.io/
  6. © Geniee, Inc. ドキュメント指向データストア • JSONなど正規化されていない 形式の 「ドキュメント」をそのまま格納 ◦ JSONはRDBMSと違って固定のスキーマを持たない

    ◦ ドキュメントをさらに「コレクション」にまとめて管理することも ある • Amazon DocumentDB, MongoDB 要素が異なるが 格納できる https://learn.microsoft.com/ja-jp/azure/archite cture/guide/technology-choices/data-store-ov erview#document-databases • コンテンツ管理システム等 • MongoDBはSFAで使用されてる • https://www.pdbmbook.com/playground/mongo/wine/reset
  7. © Geniee, Inc. グラフ指向データベース エッジ ノード https://learn.microsoft.com/ja-jp/azure/architecture/guide/technology-choices/data-store-o verview#graph-databases • ノードとエッジの2種類の情報を格納

    • エッジによって,ノード間の関係性が 指定される • 関係性を効率的に分析できる(友達 の友達の友達など) https://neo4j.com/news/how-much-faster-is-a-grap h-database-really/ • ソーシャルネットワーク分析 • 推薦システム等
  8. © Geniee, Inc. 列ファミリデータストア • データを行とカラムファミリとして保存する • 列に対するクエリが効率的に • Google

    Bigtable, Apache Cassandra 同じkey データの特性ごとに カラムファミリ • センサー データ • ログの分析等
  9. © Geniee, Inc. 
 説明
 シャーディング (パーティショニング) 巨大なデータベースを小さなサブセット(パーティション)に分割する方法 
 それぞれのパーティションは別々のノードに割り当てられる(シャーディング)

    
 レンジパーティション,リストパーティション,ハッシュパーティション等 https://www.fujitsu.com/jp/products/software/resources/feature-stories/postgres/article-index/partitioning-overview/ 
 レプリケーション 同じデータのコピーを複数のノードに保持する方法 
 
 スケールアウトの⼿法
  10. © Geniee, Inc. リーダー レプリカ フォロワー レプリカ レプリケーションの ストリーム データ変更

    テーブル: users 主キー: 1234 列: picture_url 古い値: old.jpg 新しい値: new.jpg トランザクション : 07023500 update users set picture_url = ”new.jpg” where user_id = 1234 select * from usres where user_id = 1234 フォロワー レプリカ 読み書きのクエリ 読み取りのみのクエリ ユーザー 1234 新しいプロフィール 画像を設定 ユーザー 2345 ユーザー1234 の プロフィール画像を閲覧 参照のみ 参照クエリの負荷分散 データのバックアップ リーダーベースレプリケーション
  11. © Geniee, Inc. リーダー レプリカ フォロワー レプリカ レプリケーションの ストリーム データ変更

    テーブル: users 主キー: 1234 列: picture_url 古い値: old.jpg 新しい値: new.jpg トランザクション : 07023500 update users set picture_url = ”new.jpg” where user_id = 1234 select * from usres where user_id = 1234 フォロワー レプリカ 読み書きのクエリ 読み取りのみのクエリ ユーザー 1234 新しいプロフィール 画像を設定 ユーザー 2345 ユーザー1234 の プロフィール画像を閲覧 リーダーに 障害発生 ノード障害への対処
  12. © Geniee, Inc. リーダー レプリカ リーダー レプリカ レプリケーションの ストリーム select

    * from usres where user_id = 1234 フォロワー レプリカ 読み書きのクエリ 読み取りのみのクエリ ユーザー 1234 新しいプロフィール 画像を設定 ユーザー 2345 ユーザー1234 の プロフィール画像を閲覧 フォロワーのいずれかをリー ダーに昇格 フェイルオーバー update users set picture_url = ”new.jpg” where user_id = 1234 耐障害性向上 ノード障害への対処
  13. © Geniee, Inc. Excel Oracle Mongo ブック Schema Database シート

    Table Collection 行 Column Document 列 Row Field セル Field Value Mongoのデータ構造
  14. © Geniee, Inc. • 実は、DB障害はわりとよく起こっています ◦ 誰かがCROSS JOINを投げてしまった(メモリを食い潰すと大変なことに ...) ◦

    ディスクが満杯になってしまった ◦ 障害時•移行作業後の復旧方法を間違えてしまった ◦ 結果、バッチ処理がおかしくなったり、管理画面が落ちたり ... • もしそういう場に直面しても、焦らないでください ◦ 当事者にならないよう注意するのは大切だけど、仕方ないこともある ◦ 気づいたら速やかに上司へ報告しよう ! • バックアップやスケールアウトは、そういうときの保険になります ◦ とりあえずフェイルオーバーする ◦ バックアップから復旧する ちょっと⼩話