LoginSignup
0
0

キーバリューストア、ドキュメントストア、グラフデータベース について

Last updated at Posted at 2024-04-02

キーバリューストア

キーと値のペアでデータを格納する

  • シンプルな構造: データはキーと値のペアで構成
  • 高速なデータアクセス: キーに基づいてデータにアクセスできる
  • 高いスケーラビリティ: データ量が増加しても簡単に拡張できる
  • シンプルなデータモデル: 構造化データに適している

キーバリューストアの例: 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

関連記事

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0