Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Bootcamp2025 NoSQL
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
コウムラ
July 31, 2025
440
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Bootcamp2025 NoSQL
コウムラ
July 31, 2025
Featured
See All Featured
Jess Joyce - The Pitfalls of Following Frameworks
techseoconnect
PRO
1
170
We Have a Design System, Now What?
morganepeng
55
8.2k
Improving Core Web Vitals using Speculation Rules API
sergeychernyshev
21
1.5k
Color Theory Basics | Prateek | Gurzu
gurzu
0
370
Building Flexible Design Systems
yeseniaperezcruz
330
40k
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
31
10k
State of Search Keynote: SEO is Dead Long Live SEO
ryanjones
0
210
Bootstrapping a Software Product
garrettdimon
PRO
307
120k
Introduction to Domain-Driven Design and Collaborative software design
baasie
1
850
StorybookのUI Testing Handbookを読んだ
zakiyama
31
6.8k
技術選定の審美眼(2025年版) / Understanding the Spiral of Technologies 2025 edition
twada
PRO
118
120k
The Psychology of Web Performance [Beyond Tellerrand 2023]
tammyeverts
49
3.5k
Transcript
© Geniee, Inc. 研修の⽬的 1. NoSQL について学ぶ ◦ NoSQLの基本概念と種類(kvs型,ドキュメント型,グラフ型)を理解する ◦
RDBとの違いを理解する 2. NoSQLを実際に触ってみる ◦ 実際にmongoとredisを触ってみる ◦ 基本的な操作から特徴的な機能を体験する 3. 各技術の特徴を理解し適切に使い分けられるようになる ◦ 強みと弱みを理解し、適切なユースケースを把握する
NoSQL
© Geniee, Inc. “Not Only SQL” NoSQLとは 非リレーショナルデータベース
© Geniee, Inc. なぜNoSQLが注⽬されているのか 1 2 データの多様化 データの多様化が進んでおり、 従来のRDBでは対応できないケースが 増加している。
RDBの限界 RDBはスケーラビリティの問題を抱えて おり、単一サーバーでの運用が前提で あるため、拡張が難しい。
© Geniee, Inc. NoSQLで解決できること ① 複数サーバーへのデータ分散が複雑で、スケールアップのコストが⼤きい RDB サーバーの追加だけで容量と性能を簡単に拡張でき、 データ分散処理を⾃動的に最適化してくれるためコスト効率も良い NoSQL
© Geniee, Inc. NoSQLで解決できること ② スキーマが固定されるため、 スキーマ変更が頻繁な開発サイクルに対応しづらい RDB 事前定義なしにデータ構造を進化させられるスキーマレス構造のため、 迅速に機能追加や変更に対応でき様々な形式のデータも格納できる
NoSQL
© Geniee, Inc. RDBとNoSQLの違い - データ構造 RDB NoSQL KVS ドキュメント
グラフ 表と表同士の関係性でデータを 表現 RDB以外のデータ構造 KVS型,ドキュメント型,グラフ型など
© Geniee, Inc. RDBとNoSQLの違い - 特徴 RDBMS NoSQL データモデル
リレーショナル 目的に応じてさまざま 得意分野 正規化された構造化データ ビッグデータ、半構造化データ ※など 重視している点 データの堅牢性/一貫性 スケーラビリティ/パフォーマンス トランザクション ACID準拠 ないか、限定的 操作言語 SQL(標準あり) 製品によって異なる ※半構造化データ… JSONやXMLのように、常に一定ではないが規則のあるデータ。 これに対して、 RDBのスキーマで事前に定義できるデータを構造化データ、 画像や音声、動画のような不定形のデータを非構造化データという。
© Geniee, Inc. RDBとNoSQLの違い - プロダクト例 RDB NoSQL ・KVS ・ドキュメント
・グラフ
© Geniee, Inc. キー•バリューデータストア(KVS) • データを主キーと値のペアで保存 • データには主キーでアクセスする • Amazon
DynamoDB, Redis等 key 2 value 2 key 1 value 1 key n value n ・・ ・ 使用例 • データ キャッシュ • セッションの管理 Redis とかどのプロダクトでも使用されている ユーザーの情報とか静的データを保存することでmysql とか に検索クエリを投げなくて済む • https://try.redis.io/
© 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
© 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/ • ソーシャルネットワーク分析 • 推薦システム等
© Geniee, Inc. 列ファミリデータストア • データを行とカラムファミリとして保存する • 列に対するクエリが効率的に • Google
Bigtable, Apache Cassandra 同じkey データの特性ごとに カラムファミリ • センサー データ • ログの分析等
Redis
© Geniee, Inc. Redisとは メモリ上でデータを管理する オープンソースのインメモリデータベース NoSQLの一種で、キーと値のペアを高速に処理可能
© Geniee, Inc. セッション管理‧キャッシュ リアルタイム更新 Redisの⽤途
© Geniee, Inc. Redisのクエリ
Mongo
© Geniee, Inc. JSON形式で柔軟にデータを保存・操作できる オープンソースのドキュメント指向型データベース Mongoとは
© Geniee, Inc. 説明 シャーディング (パーティショニング) 巨大なデータベースを小さなサブセット(パーティション)に分割する方法 それぞれのパーティションは別々のノードに割り当てられる(シャーディング)
レンジパーティション,リストパーティション,ハッシュパーティション等 https://www.fujitsu.com/jp/products/software/resources/feature-stories/postgres/article-index/partitioning-overview/ レプリケーション 同じデータのコピーを複数のノードに保持する方法 スケールアウトの⼿法
© Geniee, Inc. データベースのコピーを保 存する各ノード レプリカ すべてのデータがすべてのレプリカに存在するには? すべてのレプリカでデータベースへの書き込みを行わないと行けない リーダーベースレプリケーション
(アクティブ/パッシブ or マスター・スレーブレプリケーション) レプリケーション
© 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 の プロフィール画像を閲覧 参照のみ 参照クエリの負荷分散 データのバックアップ リーダーベースレプリケーション
© 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 の プロフィール画像を閲覧 リーダーに 障害発生 ノード障害への対処
© Geniee, Inc. リーダー レプリカ リーダー レプリカ レプリケーションの ストリーム select
* from usres where user_id = 1234 フォロワー レプリカ 読み書きのクエリ 読み取りのみのクエリ ユーザー 1234 新しいプロフィール 画像を設定 ユーザー 2345 ユーザー1234 の プロフィール画像を閲覧 フォロワーのいずれかをリー ダーに昇格 フェイルオーバー update users set picture_url = ”new.jpg” where user_id = 1234 耐障害性向上 ノード障害への対処
© Geniee, Inc. ・ドキュメント型 ・スキーマレス 入れ子構造がとれる 実行中に自由に スキーマを変更可能 Mongoのデータ構造
© Geniee, Inc. Excel Oracle Mongo ブック Schema Database シート
Table Collection 行 Column Document 列 Row Field セル Field Value Mongoのデータ構造
© Geniee, Inc. 集約(aggregate) テキストインデックス 地理空間クエリ Mongoのクエリ
© Geniee, Inc. Mongoのクエリ
© Geniee, Inc. https://www.oreilly.co.jp/books/9784873118703/ 参考書籍
© Geniee, Inc. • 実は、DB障害はわりとよく起こっています ◦ 誰かがCROSS JOINを投げてしまった(メモリを食い潰すと大変なことに ...) ◦
ディスクが満杯になってしまった ◦ 障害時•移行作業後の復旧方法を間違えてしまった ◦ 結果、バッチ処理がおかしくなったり、管理画面が落ちたり ... • もしそういう場に直面しても、焦らないでください ◦ 当事者にならないよう注意するのは大切だけど、仕方ないこともある ◦ 気づいたら速やかに上司へ報告しよう ! • バックアップやスケールアウトは、そういうときの保険になります ◦ とりあえずフェイルオーバーする ◦ バックアップから復旧する ちょっと⼩話