Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Bootcamp2025 NoSQL

Sponsored · Your Podcast. Everywhere. Effortlessly. Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
Avatar for コウムラ コウムラ
July 31, 2025
360

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を投げてしまった(メモリを食い潰すと大変なことに ...) ◦

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