🗄️
キーバリューストア、ドキュメントストア、グラフデータベース について
キーバリューストア
キーと値のペアでデータを格納する
- シンプルな構造: データはキーと値のペアで構成
- 高速なデータアクセス: キーに基づいてデータにアクセスできる
- 高いスケーラビリティ: データ量が増加しても簡単に拡張できる
- シンプルなデータモデル: 構造化データに適している
キーバリューストアの例: Redis, Memcached
キーバリューストアの用途: キャッシュ、セッション管理、設定情報管理
Python
# Redis を使用したキーバリューストアの例
import redis
# Redis クライアントの接続
r = redis.Redis()
# キーと値の設定
r.set("name", "John Doe")
r.set("age", 30)
# キーに基づいて値の取得
name = r.get("name")
age = r.get("age")
# 出力
print(f"Name: {name}") # Name: John Doe
print(f"Age: {age}") # Age: 30
ドキュメントストア
JSON形式でデータを格納する
- 柔軟なデータモデル: ドキュメントと呼ばれるJSON形式でデータを格納
- 半構造化データ: 構造化データだけでなく、半構造化データも格納できる
- 高速なデータアクセス: キーに基づいてデータにアクセスできる
- 高いスケーラビリティ: データ量が増加しても簡単に拡張できる
ドキュメントストアの例: MongoDB, CouchDB
ドキュメントストアの用途: コンテンツ管理、ブログ、Eコマース
Python
# MongoDB を使用したドキュメントストアの例
from pymongo import MongoClient
# MongoDB クライアントの接続
client = MongoClient()
# データベースとコレクションの取得
db = client["mydb"]
collection = db["users"]
# ドキュメントの挿入
document = {"name": "John Doe", "age": 30}
collection.insert_one(document)
# ドキュメントの取得
document = collection.find_one({"name": "John Doe"})
# 出力
print(f"Name: {document['name']}") # Name: John Doe
print(f"Age: {document['age']}") # Age: 30
グラフデータベース
ノードとエッジで構成されるグラフ構造でデータを格納する
- グラフ構造: ノードとエッジで構成されるグラフ構造でデータを格納
- 関係性の表現: データ間の関係性を自然に表現できる
- 複雑なデータ: 複雑な関係性を持つデータの分析に適している
- 高速なデータアクセス: 関係性に基づいてデータにアクセスできる
グラフデータベースの例: Neo4j, Amazon Neptune
グラフデータベースの用途: ソーシャルネットワーク、レコメンデーションシステム、知識グラフ
Python
# Neo4j を使用したグラフデータベースの例
from neo4j import GraphDatabase
# Neo4j ドライバーの接続
driver = GraphDatabase.driver("bolt://localhost:7687")
# セッションの開始
with driver.session() as session:
# ノードの作成
person = session.run("CREATE (p:Person {name: 'John Doe'}) RETURN p").single()
# 関係の作成
session.run("MATCH (p:Person {name: 'John Doe'}) CREATE (p)-[:LIVES_IN]->(c:City {name: 'Tokyo'})")
# データの取得
result = session.run("MATCH (p:Person {name: 'John Doe'})-[:LIVES_IN]->(c:City) RETURN p, c")
for record in result:
print(f"Name: {record['p']['name']}") # Name: John Doe
print(f"City: {record['c']['name']}") # City: Tokyo
関連記事
SQLとNoSQLの違い
Discussion