[SQL]
SQLにおける課題と展望
- 仕事で感じたSQLの使いにくい部分について考察してみる
- 課題
- 考察
- 解決策の模索
- 実装?
課題
状況
- やってること
- レポーティング, OLAP
- つらみ
- なぜ、SQLでJOINしまくる羽目になるのか?
- 正規化しているから、は1つの理由だが
- つまり、関係データベースは名前に反して関係性を管理するのが苦手だからだ
解決への試行
ArangoDB
Neo4j
- Neo4jを使って、レコードを関係に置き換えればわかりやすいか?
- Cassandraのサイトを見ていて見つけた面白い画像 How to do Joins in Apache Cassandra™ and DataStax Enterprise
- こういうことをやりたいんですよ
- でもRDBからGDBに移行するためのモデリングがわからん!
- ヒントがあった グラフデータベース:Neo4j、そしてRDBからの移行手順の紹介
Cassandra
- Cassandraはけっこう前からあるNoSQLだけど検索ってどうなのさ
- 動的列と幅広行のサポートはしてるよ(RDBでいうところのALTER TABLE)
- 使う目的・得意なところ
- 常に動いてないと損失になるようなクリティカルなシステム
- データセンター間でデータをちゃんとレプリケーションしたい!
ArangoDB
ちょっと触ってみた → ArangoDB
Neo4j
- RDB to GDB
- 手順
- ノード間の関係を定義する(例)従業員 =(販売)=> 受注
- 外部キーを見つける
- (外部キー)-[:変化]->(関係)
- 外部キーを取り除く
- ジョインテーブルを見つける
- ジョインテーブルがそのまま関係データになる
- 属性付きのジョインテーブルは、プロパティ付きの関係データに変換
- グラフ化完了
neo4jrdb-9-638.jpg
rdb-vs-graph.png