質の高い質問をまとめるために時間を割いていただきありがとうございます。要件は素晴らしく、システムの仕様は非常に詳細です。私はあなたのスペックをNeo4jのグラフデータモデルに変換することができました。以下を参照してください。
上に、かなり説明的なグラフデータモデルが表示されます。これに慣れていない場合は、グラフデータベースを読むことをお勧めします: http://graphdatabases.com/ -このウェブサイトでは、本の無料のデジタルPDFコピーを入手できますが、ハードコピーを購入したい場合は、Amazonで見つけることができます。
画像のグラフモデルを分解してみましょう。上部には、(年)->(月)->(日)->(時間)という時間インデックス構造が表示されます。これは、Y M D Hと省略しています。楕円は、グラフが継続していることを示していますが、画面上のスペースのために、サブグラフのみを表示しました。
この時間インデックスは、時系列を生成したり、データモデルで時間固有の特定の質問をしたりする方法を提供します。とても便利です。
画像の下部には、カジノのエンタープライズデータモデルが含まれています。ノードはビジネスオブジェクトを表します:
- ゲーム
- 表
- 従業員
- スキル
グラフデータベースの優れている点は、この画像を見て、それらの関係によって1つのノードから別のノードにジャンプすることで、質問の言語を意味的に理解できることです。
これは、データモデルについて質問するために使用できるCypherクエリです。質問に合わせて少し調整するだけです。
MATCH (employee:Employee)-[:HAS_SKILL]->(skill:Skill),
(employee)<-[:DEALS]-(game:Game)-[:LOCATION]->(table:Table),
(game)-[:BEGINS]->(hour:H)<-[*]-(day:D)<-[*]-(month:M)<-[*]-(year:Y)
WHERE skill.type = "Blackjack" AND
day.day = 17 AND
month.month = 1 AND
year.year = 2014
RETURN employee, skill, game, table
上記のクエリは、特定の日付(1/17/14)にブラックジャックのスキルを持つすべての従業員とそのテーブルと場所のサブグラフを検索します。
SQLでこれを行うのは非常に困難です。次に考える必要があるのは、データをNeo4jデータベースにインポートすることです。その方法に興味がある場合は、SOで他の質問をご覧ください。さらにサポートが必要な場合は、別の質問を投稿するか、Twitter@kennybastaniで私に連絡してください。
乾杯、
ケニー