2001, Windh Technologies, công ty quản lý tài sản phương tiện truyền thông, giám đốc công nghệ Peter với Emil, Johan dựng một giao diện đồ thị thích hợp 2003, Neo4j đi vào 247 sản xuất 20062007, Neo4j được tách ra thành một dự án mã nguồn mở 2009, tài trợ hạt giống cho công ty 2010, Neo4j Server đã được tạo ra (trước đây chỉ có một DB nhúng) 2011, tài trợ hoàn toàn khởi động công nghệ Neo
MỤC LỤC I. Giới thiệu chung II. Tìm hiểu Neo4j II.1. Đối tượng, mô hình lưu trữ, mô hình liệu .4 II.1.1. Graph Database .4 II.1.2. Mô hình lưu trữ tổ chức liệu Neo4j. II.2. Phương pháp, kĩ thuật xử lý truy vấn đồng thời. 10 II.2.1.Transaction Management 10 II.2.2. Interaction cycle .10 II.2.3. Isolation levels 11 II.2.4. Default locking behavior .11 II.2.5. Deadlocks .12 II.2.6. Delete semantics 12 II.2.7. Create Unique node .13 II.2.8. Transaction Event 13 II.3. Giao diện lập trình ứng dụng (API) tính suốt (transparency) với ứng dụng mức cao .14 II.3.1. Giao diện lập trình ứng dụng (API) 14 | Page II.3.2. Tính suốt với ứng dụng mức cao .25 II.4. Yêu cầu môi trường hoạt động 26 II.4.1. Yêu cầu phần cứng 26 II.4.2. Yêu cầu phần mềm 27 II.4.3. Chi phí 27 II.5. Tính mở 29 II.6. Khả giới hạn 29 II.6.1. Khả .29 II.7. Ưu nhược điểm 31 II.7.1. Ưu điểm 31 II.7.2. Nhược điểm .33 III. Chương trình mô thao tác với Neo4j ngôn ngữ Java . 36 III.1. Tương tác với sở liệu Neo4J .36 III.2. So sánh sở liệu MySQL sở liệu Neo4J tương đương 37 IV. Khó khăn kết đạt 37 IV.1. Khó khăn 37 IV.2. Kết đạt .37 | Page | Page NEO4J I. Giới thiệu chung. 2001, Windh Technologies, công ty quản lý tài sản phương tiện truyền thông, giám đốc công nghệ Peter với Emil, Johan dựng giao diện đồ thị thích hợp 2003, Neo4j vào 24/7 sản xuất 2006-2007, Neo4j tách thành dự án mã nguồn mở 2009, tài trợ hạt giống cho công ty 2010, Neo4j Server tạo (trước có DB nhúng) 2011, tài trợ hoàn toàn khởi động công nghệ Neo II. Tìm hiểu Neo4j. II.1. Đối tượng, mô hình lưu trữ, mô hình liệu. II.1.1. Graph Database. Cơ sở liệu đồ thị (Graph Database) kiểu liệu có cấu trúc lưu trữ chung kiểu cấu trúc lưu trữ sở liệu. Kiểu liệu có khả mô cho tất kiểu liệu khác, giống kiểu mô hình liệu sở để xây dựng lên sở liệu phức tạp hơn. Đối tượng lưu trữ sở liệu dạng đồ thị nút (node) node giống ghi liệu chứa thông tin node. Relationships quan hệ để liên kết node với nhau, người dùng định nghĩa quan hệ hoàn toàn tự tổ chức để tạo cấu trúc lưu trữ riêng tree, danh sách, bảng ma trận… Ví dụ: node {id:1; name: node1; class: myNode} node lưu thông tin gồm id, name, class ghi này. Id, name, class thuộc tính ghi key tương ứng với value: {1,node1,myNode}. | Page Hình 1.1. Mô tả mô hình node liệu. | Page II.1.2. Mô hình lưu trữ tổ chức liệu Neo4j. Neo4j sở liệu dạng đồ thị nên mô hình lưu trữ, cấu trúc lưu trữ đối tượng mang đặc điểm sở liệu dạng đồ thị nói chung. Tức Neo4j lưu trữ liệu nút (node), xây dựng lên cấu trúc liệu khác relationships. II.1.2.1.Node Các đơn vị hình thành đồ thị nút mối quan hệ. Trong Neo4j, nút mối quan hệ chứa thuộc tính. Các nút thường sử dụng để đại diện cho thực thể, tùy thuộc vào mối quan hệ miền sử dụng cho mục đích hợp lí. Đây sở liệu đồ thị đơn giản với nút II.1.2.2. Quan hệ Mối quan hệ nút đồ thị phần quan trọng, dựa vào tìm kiếm liệu có liên quan. Mối quan hệ có thuộc tính | Page Mối quan hệ kết nối nút đảm bảo hợp lệ từ nút bắt đầu đến nút kết thúc Mối quan hệ có hướng, xác định theo hướng vào nút. Đây yếu tố quan trọng sử dụng duyệt đồ thị. Mối quan hệ qua hai hướng. Điều có nghĩa cần phải thêm mối quan hệ trùng lặp theo hướng ngược lại. Trong mối quan hệ luôn có hướng, bạn bỏ qua hướng không sử dụng đến. Lưu ý nút có mối quan hệ với sau đây: II.1.2.3. Thuộc tính Cả mối quan hệ nút có thuộc tính. Các thuộc tính cặp khóa-giá trị mà khóa chuỗi. Giá trị thuộc tính kiểu giá trị nguyên thủy mảng giá trị nguyên thủy. Ví dụ: String, int, int[]. | Page “null” giá trị thuộc tính hợp lệ. Null mô hình hóa … (the absence of key). Nhận xét: Đây sở liệu mở người dùng, cấu trúc lưu trữ phụ thuộc vào mục đích người dùng, hướng tới người dùng hơn. II.1.2.4. Traversal Traversal đồ thị nghĩa duyệt qua nút nó, mối quan hệ theo số quy tắc. Trong nhiều trường hợp đồ thị truy cập, tìm thấy nút mối quan hệ nó. | Page II.1.2.5. Đường dẫn Một đường dẫn nhiều nút với mối quan hệ kết nối chúng, thường lấy truy vấn. Đây đường dẫn ngắn có chiều dài 0: Đường dẫn độ dài 1: | Page II.2. Phương pháp, kĩ thuật xử lý truy vấn đồng thời. II.2.1.Transaction Management. Để trì tính đầy đủ toàn vẹn liệu đảm bảo hành vi transaction tốt, Neo4j hỗ trợ thuộc tính ACID : • • • • Atomicity : transaction không thành công trạng thái sở liệu không thay đổi. Consistency (tính thống nhất): transaction để lại sở liệu thống nhất. Isolation (tính đọc lập): transaction, liệu sửa đổi truy cập operator khác. Durability: DBMS luôn phục hồi kết mà transaction commited. Cụ thể là: • Tất sửa đổi liệu phải bọc transaction. • Mức độ tách biệt mặc định là: READ_COMMITTED • Dữ liệu lấy phương pháp duyệt không bảo vệ từ sửa đổi transaction khác. • Không lặp lại lần đọc xảy ra.(ví dụ: ghi lock giữ chúng kết thúc transaction). • Có thể làm thủ công việc ghi lock node quan hệ mức độ tách biệt cao hơn. • Các lock cài đặt mức độ Node quan hệ. • Phát bế tắc xây dựng quản lý transaction lõi. II.2.2. Interaction cycle. Tất lệnh ghi làm việc với đồ thị phải thực transaction. Transaction luồng giới hạn lồng vào “flat nested transactions”. flat nested transaction có nghĩa nested transactions thêm phạm vi transaction cao nhất. Nested transactions đánh 10 | P a g e Giải thích: Order: truy vấn duyệt đồ thị theo kiểu BFS nghĩa duyệt đồ thị theo chiều rộng. Return_filter: truy vấn lọc lấy Node có thuộc tính Name chưa kí tự t không phân biệt chữ hoa, chữ thường. Prune_evaluator: yêu cầu khoảng từ Node bắt đầu tới Node tham chiếu phải lớn 10. Uniqueness: sử dụng node_global. Relationships: ví dụ lấy theo hướng với kiểu knows loves. Max_length: giới hạn số lượng trả 3(không kể Node bắt đầu). Chú ý: Đối tượng position trả path tham chiếu từ Node bắt đầu tới Node xét. Đối tượng bắt đầu nhìn thấy phần header request, Node, relationship path. Ví dụ: POST http://localhost:7474/db/data/node/215/traverse/relationship POST http://localhost:7474/db/data/node/224/traverse/node Creating a paged traverser: 22 | P a g e Ví dụ: Request dạng tạo thêm node với data =1, có relationship với tất node có type = Next. Chú ý paged traverser thuộc loại: node, path, fullpath. Paging through the results of a paged traverser: Paged traversers lưu trạng thái server, cho phép client truy cập tới page thông qua kết traveral. Để truy cập tới page kết traversal trả về, client lấy URI traversal để phục vụ cho truy vấn đó. Chú ý: traverser bị hết hạn báo lỗi 404 request GET tiếp theo. Hết hạn hiểu giới hạn thời gian truy vấn để đạt kết mong đợi. Paged traverser page size: Mặc định page có tối đa 50 đối tượng, tùy chỉnh sau cho phù hợp với ứng dụng page, ví dụ: POST http://localhost:7474/db/data/node/544/paged/traverse/node?pageSize=1 Paged traverser timeout: Mặc định 60s tùy chỉnh. Ví dụ: POST http://localhost:7474/db/data/node/577/paged/traverse/node? leaseTime=10 23 | P a g e Dưới kết so sánh thực tế: 24 | P a g e Qua hai đồ thị khảo sát ta thấy số query/s Core java API tối ưu nhất. II.3.2. Tính suốt với ứng dụng mức cao. Bằng việc sử dụng API để thao tác xây dựng hay truy vấn sở liệu cách ngầm định mà người dùng không hay biết tính suốt với ứng dụng mức cao đặc tính bật hầu hết sở liệu lưu trữ server. - Với người dùng thao tác với sở liệu Neo4j thông qua giao diện console, người dùng thao tác lệnh truy vấn cách tự nhiên thao tác mysql hay sở liệu khác. Họ không nhìn thấy không cần biết bên lớp giao diện thao tác lệnh Neo4j đóng gói truy vấn thành gói tin theo phương thức REST để trao đổi ( liệu đóng gói dạng tập tin json ) gửi đến server nhận lại reponese sau phân tích trả lại liệu cho người dùng (thông qua RestAPI ). 25 | P a g e - Với người dùng lập trình muốn thao tác với Neo4j: Neo4j cung cấp Tranverser Framework hỗ trợ tương tác với sở liệu, node hay relationship mô hình hóa thành đối tượng cho người lập trình sử dụng, việc thao tác tạo, xóa,update hay truy vấn mô hình việc sử dụng phương thức bên đối tượng nêu mục API. Trong ngôn ngữ lập trình java, người viết ứng dụng hoàn toàn thao tác tổ chức liệu cho ứng dụng thông qua đối tượng hỗ trợ sẵn này. Xét chất giao diện ứng dụng Cypher hay Tranverser Framework phải thao tác thông qua RestAPI Neo4j tùy vào mục đích mà sử dụng cho phù hợp. Truy vấn bình thường ta nên dùng Cypher để truy vấn lập trình dùng Tranverser Framework lựa chọn tốt. II.4. Yêu cầu môi trường hoạt động. II.4.1. Yêu cầu phần cứng. - CPU: Hiệu suất thông thường phụ thuộc vào nhớ Input/Output đồ thị liệu. Sự tính toán nhớ phải phù hợp với đồ thị đó. + Tối thiểu: Intel 486 (Cho version v1.9.M04 phiên cũ hơn); core i3 (Cho version từ 1.9.5 trở lên + Khuyến cáo nên dùng: Intel core i7 - Bộ nhớ: Bộ nhớ có lớn thuận lợi với liệu lớn bên cạnh vấn đề việc thu lại phần chứa liệu ý nghĩa ( kiểu phân mảnh liệu tốn tài nguyên để quản lý phân mảnh này). + Bộ nhớ tối thiểu: 1GB (Cho version v1.9.M04 phiên cũ hơn); 2GB (Cho version từ 1.9.5 trở lên). + Bộ nhớ khuyến cáo: – 8GB (Cho version v1.9.M04 phiên cũ hơn); 16-32GB (Cho version từ 1.9.5 trở lên). - Ổ đĩa: Bên cạnh việc chọn ổ đĩa có ảnh hưởng lớn tới hiệu suất lưu trữ. + Tối thiểu: Ổ cứng kiểu SCSI, EIDE.( Cho version v1.9.M04 phiên cũ hơn); 10GB SATA (Cho version từ 1.9.5 trở lên) + Khuyến cáo: Ổ cứng SSDw/SATA - Định dạng Filesystem: + Tối thiểu: ext3 tương đương. + Khuyến cáo: ext4, ZFS (ZFS hệ thống tập tin kết hợp quản lý hợp lý thiết kế Sun Microsystems. Các tính ZFS bao 26 | P a g e gồm bảo vệ chống lại dư thừa liệu, hỗ trợ cho khả lưu trữ cao, nén liệu hiệu quả, tích hợp khái niệm hệ thống tập tin quản lý khối lượng, snapshots nhân copy-on-write clones nhanh, kiểm tra tính toàn vẹn liên tục tự động sửa chữa.) II.4.2. Yêu cầu phần mềm. Neo4j dựa Java. Hoạt động Linux, UX, Windows XP, Mac OS X để phát triển. II.4.3. Chi phí. Các sản phẩm Neo4j bao gồm số loại sau: Neo4j Community, Neo4j Advanced, Neo4j Enterprise. USD prices are for North America only. Neo4j Feature Neo4j Advanced Neo4j Enterprise Community Licensing Open source Commercial and Commercial and License (GPLv3) AGPL AGPL Can be used with closed Yes, except Yes, with Yes, with source software OEM commercial license commercial license Functionality Neo4j high performance Yes Yes Yes graph database Batch inserter for bulk Yes Yes Yes uploads Shell for console access Yes Yes Yes Graph algorithm package Yes Yes Yes Native language bindings1 Yes Yes Yes Web frameworks Yes Yes Yes 27 | P a g e integration2 Neo4j Server Yes Operations and Monitoring SNMP & JMX monitoring Neo4j Web Management Basic console High load & high availability Online backup of running instance Online failover to warm spare Read slave replication Read/write slave replication High availability with master failover Support & Services Support hours Response time Communication channel Technical alerts Quarterly service packs Annual Subscription Free OEM and discount: Contact Sales Volume Yes Yes Yes Yes Full Enterprise Yes Yes Yes Yes Yes 5x10 7x24 24h 1h Email Phone Yes Yes Yes³ Yes³ USD 6000 or EUR USD 24,000 6000 EUR 24,000 Contact Sales or Contact Sales Như Neo4j gồm dùng miễn phí, tính phí cho doanh nghiệp. 28 | P a g e + Bản dùng miễn phí giới hạn số tính hỗ trợ khách hàng gặp cố. + Bản tính phí đầy đủ chức hỗ trợ cần thiết 5x10 tuần, hình thức hỗ trợ qua email. + Bản dành cho doanh nghiệp chức đầy đủ cung cấp dịch vụ tốt 7x24 tuần hình thức liên hệ nhanh điện thoại. II.5. Tính mở. Neo4j dự án mã nguồn mở có sẵn phiên Community GPLv3, với phiên nâng cao doanh nghiệp có sẵn theo giấy phép AGPLv3 thương mại, hỗ trợ công nghệ Neo. Do Neo4j thiết kế dạng đối tượng lưu trữ node liên kết quan hệ (relationships) nên trở thành sở liệu linh hoạt, điều làm tăng tính mở người dùng. Theo đó, người dùng hoàn toàn xây dựng cấu trúc liệu lưu trữ cho riêng tùy vào mục đích sử dụng, chí thông qua để xây dựng csdl riêng. Cho phép plug-in bên cấu hình trước, thêm mã nguồn mở rộng từ người dùng để biến thành CSDL riêng II.6. Khả giới hạn. II.6.1. Khả năng. Có hiệu suất cao, sở liệu đồ thị NoSQL với tất tính sở liệu có độ đầy đủ mạnh mẽ. Cho phép lập trình viên làm việc thông qua hướng đối tượng, cấu trúc mạng linh hoạt, chặt chẽ với bảng tĩnh - hưởng tất tiện ích sơ liệu có giao dịch truyền tải mạnh mẽ. Đối với nhiều ứng dụng, Neo4j cung cấp cải tiến hiệu suất thứ tự 1000x nhiều so với relational DBMS. 29 | P a g e II.6.2. II.6.2.1. Kích thước file: Giới hạn: Neo4j sử dụng hệ thống vào không chia theo khối Java cho việc xử lý file. Ngoài ra, bố cục file lưu trí tối ưu hóa cho liệu kết nối lẫn nhau, Neo4j không yêu cầu thiết bị thô. Vì vậy, kích thước file giới hạn việc nằm dung lượng hệ điều hành để xử lý dung lượng Neo4j. Neo4j cố gắng ánh xạ nhớ nhiều file lưu trữ nằm tốt. Nếu số RAM sẵn có không đủ để giữ toàn liệu RAM, Neo4j sử dụng nhớ đệm, định lại việc ánh xạ nhớ. II.6.2.2. Tốc độ đọc Các công ty muốn tối ưu hóa việc sử dụng phần cứng để chuyển giá trị nghiệp vụ cực đại từ nguồn cho sẵn. Hướng tiếp cận đọc liệu Neo4j cung cấp nguồn sử dụng sẵn có tốt có thể. Neo4j không chặn lệnh đọc nào. Vì vậy, tránh trường hợp deadlock việc đọc lệnh không cần phải đọc giao tác. Với việc đọc truy cập phân luồng tới sở liệu, truy vấn chạy đồng thời nhiều xử lý tốt. Điều cung cấp lịch trình cải thiển tốt server lớn hơn. II.6.2.3. Tốc độ ghi. Tốc độ ghi vấn đề đáng quan tâm nhiều ứng dụng doanh nghiệp. Có kịch khác nhau: - Các lệnh liên tục trì. - Truy cập lớn ( backup hay tải file khởi tạo ). Để hỗ trợ yêu cầu khác kịch này, Neo4j hỗ trợ mô hình ghi vào lớp lưu trữ. Trong giao tác, lệnh bình thường phù hợp với ACID, mức độ cô lập trì lệnh đọc xảy thời điểm với tiến trình ghi. Tại 30 | P a g e giao tác, liệu tiếp tục đĩa cứng khôi phục tráng thái cố định có cố hệ thống. Điều yêu cầu việc truy cập ghi đĩa làm phẳng liệu. Vì vậy, tốc độ ghi Neo4j server đơn chế độ liên tục bị giới hạn dung lượng vào phần cứng. Kết là, việc sử dụng ổ SSD tốc độ cao đề xuất Neo4j có cài Batch mà thi hành trực tiếp file lưu trữ. Chế độ không yêu cầu bảo mật giao tác, sử dụng có luồng ghi đơn. Vì liệu ghi tuần tự, không phẳng nhật ký logic, việc tăng hiệu lớn xảy ra. Bộ cài Batch tối ưu hóa cho việc import lượng lớn liệu không giao tác. II.6.2.4. Kích thước liệu Nút 235 (∼ 34 billion) Quan hệ 235 (∼ 34 billion) Thuộc tính 236 to 238 depending on property types (maximum ∼ 274 billion, always at least ∼ 68 billion) Kiểu quan 215 (∼ 32 000) hệ II.7. Ưu nhược điểm. II.7.1. Ưu điểm. Có tất ưu điểm hệ NoSQL: + Cho phép dễ dàng mở rộng. Các dịch vụ liệu dựa khả mở rộng cấu trúc, xây dựng cho đám mây để phân phối. + Khắc phục vấn đề mô hình sở liệu RDBMS tốc độ, tính năng, khả mở rộng, memory cache, . + Tập hợp liệu thực lớn. Có ưu điểm chung Graph Database: 31 | P a g e + Mô hình liệu mạnh mẽ, tổng quát RDBMS. + Kết nối liệu nhanh. + Dễ dàng truy vấn. Có ưu điểm riêng: + Neo4j sở liệu đồ thị với đầy đủ tính chất ACID(Atomicity, Consistency, Isolation, Durability), đảm bảo phát xử lí bế tắc xảy ra. + Có hiệu suất cao, sở liệu đồ thị NoSQL với tất tính sở liệu có độ trưởng thành mạnh mẽ. + Khả mở rộng: Dự đoán khả mở rộng, cách đảm bảo tất truy vấn chạy với hiệu suất tối đa. + Tính sẵn sàng cao. + Tăng đáng kể chu kì phát triển. + Nhờ sử dụng mô hình liệu linh hoạt, ngôn ngữ truy vấn đồ thị trực quan, nên Neo4J dễ dàng sử dụng. + Dễ ánh xạ tự nhiên đồ thị sang ngôn ngữ hướng đối tượng như: Ruby, Java, PHP, Python, … + Cơ sở liệu nhúng: không chia cấp sở liệu, dễ cài đặt, cấu hình, triển khai. + Neo4j cung cấp đầy đủ trang bị, thiết kế tài liệu giao diện với truy cập thực thể tự động. + Gồm nhiều thư viện mở rộng cho hoạt động biểu đồ mạnh traversals, xác định đường ngắn nhất, chuyển đổi, dịch chuyển. + Cũng bao gồm trigger, gọi xử lý kiện giao dịch. + Neo4j kết nối xử lý truy vấn liệu nhanh hàng ngàn lần so với nhiều loại sở liệu khác. Ngay phần cứng khiêm tốn, Neo4j xử lý hàng triệu traversals giây nút biểu đồ 32 | P a g e máy nhất, hàng ngàn giao dịch ghi giây. Tốc độ kết kiến trúc nguyên thiết kế để lưu trữ liệu đồ thị. + Cache-based Sharding:dựa sử dụng công nghệ clustering Neo4j, mà cho phép chia mảnh đồ thị bạn nhớ mà không chia mảnh liệu bạn đĩa. II.7.2. Nhược điểm. - Là loại Graph DB, lạ với nhiều người, chưa quen dùng biểu đồ. => Giải pháp: Thay đổi khái niệm (làm để người dễ làm quen yêu thích với khái niệm đồ thị hơn?) - Sharding (mặc dù mở rộng được, cần tiếp tục theo dõi). - Không hỗ trợ stored procedures. - Vì nguồn mở nên hỗ trợ không đồng doanh nghiệp. - Hạn chế nghiệp vụ: Cũng giống hệ sở liệu dạng NoSQL khác chưa hỗ trợ dạng phân tích liệu lớn mạnh mẽ mà doanh nghiệp quen thuộc RDBMS. - Có giao diện API riêng nên khó khăn việc chuyển qua nhà cung cấp. II.7.3. So sánh số đặc điểm Neo4J với sở liệu thông dụng khác Một số so sánh Neo4J SimpleDB Tên sở liệu Neo4j SimpleDB Mô tả Cơ sở liệu đồ thị mã Cơ sở liệu cung cấp nguồn mở dịch vụ Amazon Hệ điều hành máy Linux, OS X, Windows chủ Hosted APIs phương Java API thức truy nhập khác RESTful HTTP/JSON API RESTful HTTP/JSON API 33 | P a g e Ngôn ngữ truy vấn Cypher Mô hình sở Graph DBMS liệu Key-value store SQL no no Hỗ trợ ngôn ngữ lập .Net, Clojure, Go, Groovy, .Net, C, C++, Erlang, Java, trình Java, JavaScript, Perl, PHP, PHP, Python. Ruby, Scala Python, Ruby, Scala Triggers Có Không Hỗ trợ khóa Có Không Transaction concepts ACID Không 34 | P a g e Một số so sánh Neo4J OrientDB Tên sở liệu Neo4j OrientDB Mô tả Cơ sở liệu đồ thị mã Tài liệu hướng DBMS với nguồn mở phần mở rộng theo định hướng đồ thị Hệ điều hành máy Linux, OS X, Windows chủ All OS with a Java VM Mô hình sở Graph DBMS liệu Graph DBMS APIs phương Java API thức truy nhập khác RESTful HTTP/JSON API Java API Ngôn ngữ truy vấn Cypher RESTful HTTP/JSON API TinkerPop Blueprints Hỗ trợ ngôn ngữ lập .Net, Clojure, Go, Groovy, .Net, C, C#, C++, Clojure. trình Java, JavaScript, Perl, PHP, Java, JavaScript, PHP, Python, Ruby, Scala Python, Ruby, Scala Khóa Có Có Transaction concepts ACID ACID Một số so sánh Neo4J MongoDB Tên sở liệu Neo4j MongoDB Mô tả Cơ sở liệu đồ thị Một cửa hàng tài liệu phổ biến Hệ điều hành máy chủ Linux, OS X, Windows Linux, OS X, Solaris, 35 | P a g e Windows Mô hình sở liệu Graph DBMS Document store Ngôn ngữ truy vấn APIs phương thức truy Cypher Giao thức độc quyền sử nhập khác Java API dụng JSON RESTful HTTP API Supported languages Actionscript, C, C#, C++, Clojure, ColdFusion, D, Dart, Delphi, Erlang, Go, .Net, Clojure, Go, Groovy, Haskell, Java, programming Groovy, Java, JavaScript, JavaScript, Lisp, Lua, Perl, PHP, Python, Ruby, MatLab, Perl, PHP, Scala PowerShell, Prolog, Python, R, Ruby, Scala, Smalltalk Triggers Có Không Khóa Có Không III. Chương trình mô thao tác với Neo4j ngôn ngữ Java. III.1. Tương tác với sở liệu Neo4J - Chương trình thực thao tác tương tác với sở liệu Neo4J, bao gồm: + Giao diện hiển thị tương tác người dùng sở liệu. + Tạo sở liệu với 100 triệu ghi chưa node với node là: Person, Address mối quan hệ chúng. Mối quan hệ đối tượng LIVE_AT. + Thực truy vấn sở liệu đó: thêm node, xóa node, tìm kiếm node. 36 | P a g e III.2. So sánh sở liệu MySQL sở liệu Neo4J tương đương. - Tạo sở liệu MySQL với 100 triệu ghi, gồm bảng: Person Address tương ứng với sở liệu Neo4J tạo. => So sánh truy vấn hiệu suất Neo4J MySQL sử dụng sở liệu tạo bên trên. IV. Khó khăn kết đạt được. IV.1. Khó khăn - Cơ sở thiết bị chưa đáp ứng nhu cầu nghiên cứu hệ thống. IV.2. Kết đạt - Đã tìm hiểu kiến thức Neo4j cách cài đặt, sử dụng hệ thống áp dụng sở liệu này. - Thực demo kiểm thử sở liệu có sử dụng sở liệu Neo4j. 37 | P a g e [...]... lượng, snapshots và nhân bản copy-on-write clones nhanh, kiểm tra tính toàn vẹn liên tục và tự động sửa chữa.) II.4.2 Yêu cầu phần mềm Neo4j dựa trên Java Hoạt động trên Linux, UX, Windows XP, Mac OS X để phát triển II.4.3 Chi phí Các sản phẩm của Neo4j bao gồm 3 số loại sau: Neo4j Community, Neo4j Advanced, Neo4j Enterprise USD prices are for North America only Neo4j Feature Neo4j Advanced Neo4j Enterprise... trở lên) + Khuyến cáo: Ổ cứng SSDw/SATA - Định dạng Filesystem: + Tối thiểu: ext3 hoặc tương đương + Khuyến cáo: ext4, ZFS (ZFS là một hệ thống tập tin kết hợp và quản lý hợp lý được thiết kế bởi Sun Microsystems Các tính năng của ZFS bao 26 | P a g e gồm bảo vệ chống lại dư thừa dữ liệu, hỗ trợ cho khả năng lưu trữ cao, nén dữ liệu hiệu quả, tích hợp các khái niệm về hệ thống tập tin và quản lý khối... phân mảnh này) + Bộ nhớ tối thiểu: 1GB (Cho version v1.9.M04 và các phiên bản cũ hơn); 2GB (Cho version từ 1.9.5 trở lên) + Bộ nhớ khuyến cáo: 4 – 8GB (Cho version v1.9.M04 và các phiên bản cũ hơn); 16-32GB (Cho version từ 1.9.5 trở lên) - Ổ đĩa: Bên cạnh đó việc chọn ổ đĩa cũng có ảnh hưởng lớn tới hiệu suất lưu trữ + Tối thiểu: Ổ cứng kiểu SCSI, EIDE.( Cho version v1.9.M04 và các phiên bản cũ hơn);... dịch vụ tốt hơn như 7x24 giờ trong tuần và hình thức liên hệ sẽ nhanh hơn đó là điện thoại II.5 Tính mở Neo4j là một dự án mã nguồn mở có sẵn trong một phiên bản Community GPLv3, với các phiên bản nâng cao và doanh nghiệp có sẵn theo cả giấy phép AGPLv3 và thương mại, được hỗ trợ bởi công nghệ Neo Do Neo4j được thiết kế dưới dạng các đối tượng lưu trữ như node và liên kết nhau bởi quan hệ (relationships)... kịch bản này, Neo4j hỗ trợ 2 mô hình ghi vào lớp lưu trữ Trong giao tác, các lệnh bình thường phù hợp với ACID, thì mức độ cô lập được duy trì và các lệnh đọc có thể xảy ra cùng thời điểm với tiến trình ghi Tại 30 | P a g e mỗi giao tác, dữ liệu vẫn tiếp tục trong đĩa cứng và có thể được khôi phục về một tráng thái cố định khi có sự cố hệ thống Điều này yêu cầu việc truy cập ghi đĩa và làm phẳng dữ... | P a g e Được khuyên nên dùng để tận dụng tối đa sức mạnh của neo4j, nó làm tăng tốc độ xử lý của truy vấn lên rất nhiều, điều này đã được thử nghiệm thực thế Đây là 1 trong 3 cách để giao tiếp với neo4j cùng với traverser framwork và cypher query language C TraverseFramework Là 1 framework hỗ trợ việc giao tiếp với cơ sở dữ liệu Neo4j, về bản chất nó vẫn xử dụng giao thức REST để lấy xử lý dữ liệu... kết quả traversal trả về, client sẽ lấy URI của traversal này để phục vụ cho truy vấn đó Chú ý: nếu một traverser bị hết hạn nó sẽ báo lỗi 404 trong request GET tiếp theo Hết hạn ở đây có thể hiểu là giới hạn về thời gian của truy vấn để đạt được kết quả mong đợi Paged traverser page size: Mặc định là page có tối đa 50 đối tượng, nhưng có thể tùy chỉnh sau cho phù hợp với ứng dụng và các page, ví dụ:... thao tác và tổ chức dữ liệu cho ứng dụng của mình thông qua các đối tượng hỗ trợ sẵn này Xét về bản chất thì các giao diện ứng dụng Cypher hay Tranverser Framework đều phải thao tác thông qua RestAPI của Neo4j nhưng tùy vào mục đích mà sử dụng sao cho phù hợp Truy vấn bình thường ta nên dùng Cypher nhưng để truy vấn trong lập trình thì dùng Tranverser Framework là lựa chọn tốt II.4 Yêu cầu về môi trường... type (r) Ứng với bảng: Request sẽ có dạng: Response trả về: 16 | P a g e Trả lại PATH của dữ liệu với câu lệnh truy vấn Ví dụ: Start x=node(329) Match path=(x friend) Return path, friend.name Request và response trả về: 17 | P a g e Gọi truy vấn lồng nhau: Khi gửi các truy vấn mà trả về kết quả lồng nhau như danh sách hay đồ thị, chúng sẽ được trả về lồng nhau Ví dụ: Truy vấn: Start n = node(337,338)... việc chuyển qua giữa các nhà cung cấp II.7.3 So sánh một số đặc điểm của Neo4J với các cơ sở dữ liệu thông dụng khác Một số so sánh giữa Neo4J và SimpleDB Tên cơ sở dữ liệu Neo4j SimpleDB Mô tả Cơ sở dữ liệu đồ thị mã Cơ sở dữ liệu cung cấp bởi nguồn mở dịch vụ của Amazon Hệ điều hành máy Linux, OS X, Windows chủ Hosted APIs và các phương Java API thức truy nhập khác RESTful HTTP/JSON API RESTful HTTP/JSON . transaction cấp cao để tránh tràn bộ nhớ. Nó phải là transaction cấp cao nhất trước khi chia công việc thành các nested transaction có thể thêm các công việc vào transaction cấp cao nhất. II.2.3 các nested transactions được thêm phạm vi transaction cao nhất. Nested transactions có thể được đánh 10 | P a g e giấu là transaction cấp cao cho việc rollback, có nghĩa là tất cả transaction. suốt (transparency) với các ứng dụng ở mức cao 14 II.3.1. Giao diện lập trình ứng dụng (API) 14 1 | P a g e II.3.2. Tính trong suốt với ứng dụng mức cao 25 II.4. Yêu cầu về môi trường hoạt động