Благодаря, че отделихте време, за да съставите качествен въпрос. Вашите изисквания са големи и вашите спецификации на вашата система са много подробни. Успях да преведа вашите спецификации в графичен модел на данни за Neo4j. Вижте по-долу.
По-горе ще видите доста обяснителен графичен модел на данни. В случай, че не сте запознати с това, предлагам да прочетете Graph Databases:http://graphdatabases.com/ -- На този уебсайт можете да получите безплатно цифрово PDF копие на книгата, но в случай че искате да закупите хартиено копие, можете да го намерите в Amazon.
Нека разбием модела на графиката в изображението. В горната част ще видите структура за индексиране на времето, която е (година)->(месец)->(ден)->(час), която съм съкратил като Y M D H. Елипсите показват, че графиката продължава, но в името на пространството на екрана съм показал само подграфика.
Този времеви индекс ви дава начин да генерирате времеви серии или да задавате определени въпроси във вашия модел на данни, които са специфични за времето. Много полезно.
Долната част на изображението съдържа вашия корпоративн модел на данни за вашето казино. Възлите представляват вашите бизнес обекти:
- Игра
- Таблица
- Служител
- Умения
Това, което е страхотно при графичните бази данни е, че можете да погледнете това изображение и семантично да разберете езика на въпроса си, като прескачате от един възел на друг чрез техните взаимоотношения.
Ето една 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
Горната заявка намира подграфиката за всички служители, които имат умението Блекджек и тяхната маса и местоположение на конкретна дата (17.01.14).
Да се направи това в SQL би било много трудно. Следващото нещо, за което трябва да помислите, е импортирането на вашите данни в база данни Neo4j. Ако сте любопитни как да направите това, моля, погледнете други въпроси тук на SO и ако имате нужда от още помощ, не се колебайте да публикувате друг въпрос или да се свържете с мен в Twitter @kennybastani.
Наздраве,
Кени