2016-05-29 16 views
5

Hiện tại, tôi đang tạo một ứng dụng với lõi asp.net và cơ sở dữ liệu biểu đồ neo4j.Chạy truy vấn Neo4j tại thời điểm cụ thể

Ứng dụng của tôi cung cấp hệ thống đăng ký tài khoản, gửi mã kích hoạt tới email đã đăng ký của người dùng và sau 24 giờ, nếu người dùng không nhấp vào liên kết đang hoạt động, tài khoản sẽ bị xóa.

Câu hỏi của tôi là: tôi có thể viết trình kích hoạt trong cơ sở dữ liệu biểu đồ neo4j để tự động chạy sau 24 giờ sau khi nút đã được tạo để kiểm tra xem nó đã được xác minh hay chưa và xóa nó nếu chưa.

Có ai giúp tôi không?

Cảm ơn bạn :)

Trả lời

3

Bạn có thể sử dụng apoc job management:

1) Tạo người dùng:

CREATE (U:User {created_at: timestamp(), activated: false}) 

2) Chạy nhiệm vụ tuần hoàn (mỗi giờ), trong đó có một danh sách người dùng không kích hoạt và kiểm tra thời gian kích hoạt và xóa những người không kích hoạt tài khoản trong vòng 24 giờ:

CALL apoc.periodic.repeat('name', 
    'MATCH (U:User {activated: false}) 
     WHERE timestamp() - U.created_at > 24 * 60 * 60 * 1000 
    DETACH DELETE U', 
60 * 60) 
1

Có nhiều giải pháp xử lý này:

Đầu tiên là một plugin neo4j gọi neo4j-expire nơi bạn có thể đặt một dấu thời gian time-to-live vào một nút và nút này sẽ được tự động hết hạn/xóa bởi các plugin ở thời gian nhất định:

https://github.com/graphaware/neo4j-expire

giải pháp thứ hai là để tạo ra một truy vấn Cypher mà thực hiện việc kiểm tra này và registe r nó với các quy trình quản lý công việc có sẵn trong neo4j-apochttps://neo4j-contrib.github.io/neo4j-apoc-procedures/#_job_management

Các vấn đề liên quan