トップ 差分 一覧 ソース 検索 ヘルプ RSS ログイン

SQLにおける課題と展望

[SQL]

SQLにおける課題と展望

  • 仕事で感じたSQLの使いにくい部分について考察してみる
    • 課題
    • 考察
    • 解決策の模索
    • 実装?

  課題

状況

  • やってること
    • レポーティング, OLAP
  • つらみ
    • 関係するテーブルのデータの有無で条件分岐を作成する → 開発当初から条件分岐が多すぎてテストが辛い
    • 多少はSQLに対する慣れにより解消したが、しばらくソースを見ないと忘れるし追加があると追加自体が難しい
      • これはすでにSQLアンチパターンのスパゲッティクエリの状態である
  • なぜ、SQLでJOINしまくる羽目になるのか?
    • 正規化しているから、は1つの理由だが
  • つまり、関係データベースは名前に反して関係性を管理するのが苦手だからだ

  解決への試行

ArangoDB

  • ArangoDBはけっこうプログラミング言語に近いクエリ言語である

Neo4j

Cassandra

  • Cassandraはけっこう前からあるNoSQLだけど検索ってどうなのさ
    • 使う目的・得意なところ
      • 常に動いてないと損失になるようなクリティカルなシステム
      • データセンター間でデータをちゃんとレプリケーションしたい!

  ArangoDB

ちょっと触ってみた → ArangoDB

  Neo4j

  • RDB to GDB
  1. 手順
    1. ノード間の関係を定義する(例)従業員 =(販売)=> 受注
    2. 外部キーを見つける
    3. (外部キー)-[:変化]->(関係)
    4. 外部キーを取り除く
    5. ジョインテーブルを見つける
    6. ジョインテーブルがそのまま関係データになる
    7. 属性付きのジョインテーブルは、プロパティ付きの関係データに変換
    8. グラフ化完了
neo4jrdb-9-638.jpg rdb-vs-graph.png
お名前: コメント: