Cảm ơn bạn đã dành thời gian để đặt một câu hỏi chất lượng cùng nhau. Yêu cầu của bạn rất lớn và thông số kỹ thuật của hệ thống của bạn rất chi tiết. Tôi đã có thể dịch thông số kỹ thuật của bạn thành mô hình dữ liệu biểu đồ cho Neo4j. Xem bên dưới.
Ở trên, bạn sẽ thấy một mô hình dữ liệu biểu đồ khá giải thích. Trong trường hợp bạn không quen với điều này, tôi khuyên bạn nên đọc Cơ sở dữ liệu đồ thị: http://graphdatabases.com/ - Trang web này bạn có thể nhận được bản sao PDF kỹ thuật số miễn phí của cuốn sách nhưng trong trường hợp bạn muốn mua bản cứng, bạn có thể tìm trên Amazon.
Hãy chia nhỏ mô hình đồ thị trong hình ảnh. Ở trên cùng, bạn sẽ thấy cấu trúc lập chỉ mục thời gian là (Năm) -> (Tháng) -> (Ngày) -> (Giờ), mà tôi đã viết tắt là Y M D H. Các dấu chấm lửng cho biết biểu đồ đang tiếp tục, nhưng vì lợi ích của khoảng trống trên màn hình, tôi chỉ hiển thị một biểu đồ phụ.
Chỉ mục thời gian này cung cấp cho bạn một cách để tạo chuỗi thời gian hoặc đặt một số câu hỏi nhất định trên mô hình dữ liệu cụ thể về thời gian của bạn. Rất hữu ích.
Phần dưới cùng của hình ảnh chứa mô hình dữ liệu doanh nghiệp cho sòng bạc của bạn. Các nút đại diện cho các đối tượng kinh doanh của bạn:
- Trò chơi
- Bảng
- Nhân viên
- Kỹ năng
Điều tuyệt vời về cơ sở dữ liệu biểu đồ là bạn có thể nhìn vào hình ảnh này và hiểu ngữ nghĩa ngôn ngữ của câu hỏi của bạn bằng cách chuyển từ nút này sang nút khác theo mối quan hệ của chúng.
Đây là một truy vấn Cypher mà bạn có thể sử dụng để đặt câu hỏi về mô hình dữ liệu. Bạn có thể chỉnh sửa một chút để phù hợp với câu hỏi của mình.
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
Truy vấn trên tìm biểu đồ phụ cho tất cả nhân viên có kỹ năng Xì dách cũng như bảng và vị trí của họ vào một ngày cụ thể (17/1/14).
Để làm điều này trong SQL sẽ rất khó. Điều tiếp theo bạn cần nghĩ đến là nhập dữ liệu của bạn vào cơ sở dữ liệu Neo4j. Nếu bạn tò mò về cách làm điều đó, vui lòng xem các câu hỏi khác tại đây trên SO và nếu bạn cần thêm trợ giúp, vui lòng đăng câu hỏi khác hoặc liên hệ với tôi trên Twitter @kennybastani.
Chúc mừng,
Kenny