- NoSQLとは
- NoSQLの利点
[[高いスケーラビリティ (水平分散 - Scale-out)]]
[[柔軟なデータモデル (スキーマレス、動的スキーマ)]]
[[高い可用性と耐障害性]]
[[特定のユースケースにおける高いパフォーマンス]]
- NoSQLの課題
[[一貫性モデルの複雑さ (結果整合性)]]
[[標準化されたクエリ言語の欠如 (SQLのような)]]
[[トランザクション (ACID) サポートの制限]]
[[データモデリングの難しさ]]
[[エコシステムとツールの成熟度 (RDB比)]]
- CAP定理 (CAP Theorem) MOC (Eric Brewer)
- BASE特性 (BASE Properties) MOC
[[BASE特性の定義 (結果整合性を重視するシステムの特性)]]
[[Basically Available (基本的に利用可能)]]
[[Soft State (状態は時間とともに変化しうる)]]
[[Eventually Consistent (最終的に一貫性がとれる)]]
[[ACID特性 (RDB) vs. BASE特性 (NoSQL)]]
- 結果整合性 (Eventual Consistency) MOC
- NoSQLデータベースの選択基準
- キーバリューストア (Key-Value Stores) MOC
[[キーバリューストアのデータモデル (単純なキーと値のペア)]]
[[キーバリューストアの特性 (シンプル、高速、高いスケーラビリティ)]]
[[主な操作 (Get, Put, Delete)]]
[[ユースケース (キャッシュ、セッション管理、設定情報保存)]]
[[代表的な製品 (Redis, Amazon DynamoDB, Riak)]]
- ドキュメントデータベース (Document Databases) MOC
[[ドキュメントデータベースのデータモデル (JSON/BSON形式のドキュメント)]]
[[ドキュメントの構造 (ネストされたオブジェクト、配列)]]
[[ドキュメントデータベースの特性 (柔軟なスキーマ、豊富なクエリ機能)]]
[[クエリ言語 (ドキュメント内のフィールドに対するクエリ)]]
[[ユースケース (Webアプリケーション、コンテンツ管理、プロファイリング)]]
[[代表的な製品 (MongoDB, Couchbase, Amazon DocumentDB)]]
- Wide-Column Stores) MOC
[[カラム指向データベースのデータモデル (行キー、カラムファミリ、カラム)]]
[[カラム指向データベースの特性 (大量書き込み、高いスケーラビリティ、疎なデータ)]]
[[データ配置 (列指向ストレージとの違い)]]
[[ユースケース (大規模時系列データ、IoT、ログ分析)]]
[[代表的な製品 (Apache Cassandra, HBase, Google Cloud Bigtable)]]
- グラフデータベース (Graph Databases) MOC
[[グラフデータベースのデータモデル (ノード、エッジ、プロパティ)]]
[[グラフデータベースの特性 (リレーションシップの高速なトラバース)]]
[[クエリ言語 (Cypher, Gremlinなど)]]
[[ユースケース (ソーシャルネットワーク、推薦エンジン、不正検知、ナレッジグラフ)]]
[[代表的な製品 (Neo4j, Amazon Neptune, JanusGraph)]]
- (オプション) 時系列データベース (Time-Series Databases) (InfluxDB, Prometheus)
- (オプション) 検索エンジンデータベース (Search Engine Databases) (Elasticsearch, Apache Solr)
[[MongoDBの概要と特徴 (柔軟なドキュメントモデル、高いスケーラビリティ、豊富なクエリ)]]
- MongoDBのデータモデル
[[BSON (Binary JSON) フォーマット]]
[[データベース (Database), コレクション (Collection), ドキュメント (Document)]]
[[ドキュメント内の埋め込みドキュメントと配列]]
[[_idフィールドとObjectId]]
- MongoDB Query Language (MQL)
[[CRUD操作 (Create, Read, Update, Delete)]]
[[insertOne(), insertMany()]]
[[find(), findOne()]]
[[updateOne(), updateMany(), replaceOne()]]
[[deleteOne(), deleteMany()]]
- クエリセレクタ (Query Selectors) (
$eq, $ne, $gt, $lt, $in, $and, $orなど)
- プロジェクション (Projection) (返すフィールドの選択)
- 更新演算子 (Update Operators) (
$set, $unset, $inc, $push, $pullなど)
[[findAndModify, findOneAndUpdate]]
- インデックス (Indexes) MOC
[[インデックスの役割と重要性]]
[[シングルフィールドインデックス]]
[[複合インデックス (Compound Index)]]
[[マルチキーインデックス (Multikey Index)]] (配列フィールド)
[[テキストインデックス (Text Index)]] (全文検索)
[[地理空間インデックス (Geospatial Index)]]
[[インデックスの作成と管理 (createIndex, getIndexes)]]
[[クエリの実行計画 (explain())]]
- 集計フレームワーク (Aggregation Framework) MOC
[[集計パイプラインの概念]]
[[主要なステージ (match‘,‘group, project‘,‘sort, limit‘,‘unwind, $lookup)]]
[[集計演算子 (sum‘,‘avg, max‘,‘min, $pushなど)]]
[[Cassandraの概要と特徴 (分散型、高い可用性と耐障害性、線形スケーラビリティ、チューニング可能な一貫性)]]
- Cassandraのアーキテクチャ MOC
[[分散リング構造とノード]]
[[ゴシッププロトコル (Gossip Protocol)]] (ノード間通信)
[[スニッチ (Snitch)]] (トポロジ認識)
[[レプリケーション戦略 (Replication Strategy)]] (SimpleStrategy, NetworkTopologyStrategy)
[[パーティショナ (Partitioner)]] (データの分散方法)
[[マスターレスアーキテクチャ (リーダーなし)]]
- Cassandraのデータモデル
- CQL (Cassandra Query Language) MOC
[[SQLライクな構文]]
[[CRUD操作 (INSERT, SELECT, UPDATE, DELETE)]]
[[WHERE句の制約 (パーティションキーが必須)]]
[[バッチ操作 (BATCH)]]
[[軽量トランザクション (Lightweight Transactions - LWT)]] (Compare-And-Set)
[[(オプション) ユーザー定義型 (UDT), コレクション型 (list, set, map)]]
- 書き込みパス (Write Path) (
Commit Log, Memtable, SSTable)
- 読み込みパス (Read Path) (
Memtable, Row Cache, Key Cache, Bloom Filter, SSTable)
- コンパクション (Compaction) (SSTableのマージ)
- 一貫性レベル (Consistency Level)
[[ANY, ONE, QUORUM, LOCAL_QUORUM, EACH_QUORUM, ALLなど]]
[[書き込みと読み込みで異なる一貫性レベルを設定可能]]
[[一貫性とレイテンシのトレードオフ]]
- Hinted Handoff と Read Repair (ノード障害時のデータ一貫性維持)
- Cassandraの管理とツール (
cqlsh, nodetool, DataStax Astra)
5. Redis MOC (キーバリューストア / インメモリデータ構造サーバー)
[[Redisの概要と特徴 (インメモリ、高速、豊富なデータ構造、単一スレッド)]]
- Redisの主要なユースケース MOC
[[キャッシュ (Caching)]]
[[セッションストア (Session Store)]]
[[メッセージブローカー (Message Broker) / Pub/Sub]]
[[リアルタイム分析 (カウンター, ランキング)]]
[[キュー (Queue)]]
[[分散ロック (Distributed Lock)]]
- プロジェクト要件に基づくデータベース選択
[[データモデルの適合性]]
[[読み書きのパターンとパフォーマンス要件]]
[[一貫性の要件 (強整合性 vs. 結果整合性)]]
[[スケーラビリティと可用性の要件]]
[[運用コストとチームのスキルセット]]
- ポリグロットパーシステンス (Polyglot Persistence) MOC
[[複数のデータベースを適材適所で使い分けるアプローチ]]
[[マイクロサービスアーキテクチャとポリグロットパーシステンス]]
- NoSQLデータベースの移行戦略
- NoSQLデータベースの監視とチューニング