Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (1.49 MB, 74 trang )
<span class="text_page_counter">Trang 1</span><div class="page_container" data-page="1">
<small>HÀ NỘI - NĂM 2024</small>
</div><span class="text_page_counter">Trang 2</span><div class="page_container" data-page="2">Tơi cam đoan cơng trình nghiên cứu này là của riêng tôi, do tôi nghiên cứu, tham khảo các tài liệu để thực hiện.
Tất cả các bảng biểu, số liệu trong cơng trình được tơi tự thực hiện hoặc trích dẫn nguồn tham khảo rõ ràng. Kết quả nêu trong đề án tốt nghiệp là trung thực và chưa từng được ai cơng bố trong bất kỳ cơng trình nào khác.
<i>Hà Nội, ngày 01 tháng 03 năm 2024</i>
Tác giả đề án tốt nghiệp
<b>Trần Thị Kim Lan</b>
</div><span class="text_page_counter">Trang 4</span><div class="page_container" data-page="4">Nhận được sự đồng ý của Nhà trường, sự giúp đỡ tận tình của GS.TS. Từ Minh Phương, tơi đã nỗ lực nghiên cứu hồn thành luận văn với đề tài “Nghiên cứu và ứng dụng Cơ sở dữ liệu đồ thị vào bài toán Quản lý khách hàng”, một đề tài gợi mở hướng đi cho các khó khăn cần giải quyết bài tốn Quản lý khách hàng tại Viễn thông Hà Nội – đơn vị tôi đang công tác.
Tôi xin chân thành cảm ơn Học viện Cơng nghệ Bưu chính Viễn thơng đã tạo điều kiện để tơi có cơ hội tiếp cận, nghiên cứu một đề tài hữu ích. Tơi xin gửi lời cảm ơn đặc biệt tới GS.TS. Từ Minh Phương đã hướng dẫn tôi phương pháp nghiên cứu, hỗ trợ và giúp đỡ tơi thực hiện để có thể hồn thành luận văn này.
<i>Hà Nội, ngày 01 tháng 03 năm 2024</i>
Tác giả đề án tốt nghiệp
<b>Trần Thị Kim Lan</b>
</div><span class="text_page_counter">Trang 6</span><div class="page_container" data-page="6"><b>2.2.Giải pháp triển khai trên Cơ sở dữ liệu đồ thị...19</b>
<b>3.2.So sánh kết quả thực thi câu lệnh...38</b>
<i><b>3.2.1. Mô hình và kích thước dữ liệu...38</b></i>
<b>TÀI LIỆU THAM KHẢO...57</b>
<b>PHỤ LỤC: CHI TIẾT CÂU LỆNH THỬ NGHIỆM...58</b>
</div><span class="text_page_counter">Trang 7</span><div class="page_container" data-page="7"><b>1.Import/Insert dữ liệu...58</b>
<b>2.Truy vấn đơn giản nhiều bảng/quan hệ...59</b>
<b>3.Truy vấn chọn trước dữ liệu...59</b>
<b>4.Truy vấn tính tốn tồn bộ dữ liệu...60</b>
<b>5.Truy vấn tính tốn dữ liệu chọn trước...60</b>
<b>6.Truy vấn có truy vấn con...61</b>
<b>7.Truy vấn gộp nhiều câu lệnh...62</b>
</div><span class="text_page_counter">Trang 8</span><div class="page_container" data-page="8">Bảng 3.1 Chi tiết số liệu thực nghiệm……… 40
Bảng 3.2 Chi tiết số liệu thực hiện insert/import……… 41
Bảng 3.3 Chi tiết số liệu thực hiện truy vấn đơn giản nhiều bảng/quan hệ 43 Bảng 3.4 Chi tiết số liệu thực hiện truy vấn chọn trước dữ liệu………. 45
Bảng 3.5 Chi tiết số liệu truy vấn tính tốn tồn bộ dữ liệu……… 46
Bảng 3.6 Chi tiết số liệu truy vấn tính tốn dữ liệu chọn trước………... 48
Bảng 3.7 Chi tiết số liệu truy vấn có truy vấn con………... 49
Bảng 3.8 Chi tiết số liệu truy vấn gộp nhiều câu lệnh………. 51
Hình 1.2 Ví dụ về mơ hình đồ thị thuộc tính………... 7
Hình 1.3 Biểu đồ mơ tả Nodes – Nút………... 9
Hình 1.4 Biểu đồ mơ tả Relationships – Quan hệ……… 10
Hình 1.5 Biểu đồ mơ tả Quan hệ có hướng……….. 10
Hình 1.6 Biểu đồ mơ tả Properties – Thuộc tính………. 11
Hình 1.7 Biểu đồ mơ tả Labels – Nhãn……… 11
Hình 1.8 Biểu đồ mơ tả Paths – Đường kết nối………... 12
Hình 2.1 Mơ hình bài tốn Quản lý khách hàng………... 15
Hình 2.2 Sơ đồ thực thể liên kết Khách hàng – Thanh toán………. 16
Hình 2.3 Sơ đồ thực thể liên kết Thanh tốn – Thuê bao – Dịch vụ…… 17
Hình 2.4 Giải pháp triển khai trên CSDL đồ thị………... 20
Hình 2.5 Mơ hình dữ liệu đồ thị đã chuyển đổi……… 21
Hình 2.6 Lưu đồ chuyển đổi CSDL QH sang CSDL ĐT………. 24
Hình 2.7 Sơ đồ thực thể liên kết Khách hàng – Loại khách hàng……… 25
Hình 2.8 Đồ thị biểu diễn nút Khách hàng – Loại khách hàng………… 25
Hình 2.9 Đồ thị biểu diễn quan hệ Khách hàng – Loại khách hàng……. 27
Hình 2.10 Đồ thị biểu diễn quan hệ Khách hàng – Thanh tốn…………. 28
Hình 2.11 Đồ thị quan hệ Thanh tốn – Thuê bao – Dịch vụ………. 29
Hình 2.12 Lược đồ CSDL đồ thị QLKH tổng quát……… 29
</div><span class="text_page_counter">Trang 10</span><div class="page_container" data-page="10">Hình 2.13 Kết quả CSDL đồ thị sau chuyển đổi từ CSDL quan hệ……... 30
Hình 3.1 CSDL đồ thị quan hệ Khách hàng………. 32
Hình 3.2 CSDL đồ thị các dich vụ của Khách hàng………. 32
Hình 3.3 CSDL đồ thị thử nghiệm………... 33
Hình 3.4 Biểu đồ PCCN ứng dụng demo………. 34
Hình 3.5 Thiết kế giao diện quản lý khách hàng……….. 35
Hình 3.6 Thiết kế giao diện quản lý nhãn……… 36
Hình 3.7 Thiết kế giao diện quản lý thuộc tính……… 36
Hình 3.8 Thiết kế giao diện báo cáo………. 37
Hình 3.9 Cơ sở dữ liệu thử nghiệm……….. 39
Hình 3.10 Kịch bản thực nghiệm trên CSDL Oracle/Neo4j………... 41
Hình 3.14 Đồ thị kết quả truy vấn tính tốn tồn bộ dữ liệu………... 47
Hình 3.15 Đồ thị kết quả truy vấn tính tốn dữ liệu chọn trước…………. 49
Hình 3.16 Đồ thị kết quả truy vấn có truy vấn con………. 50
Hình 3.17 Đồ thị kết quả truy vấn gộp nhiều câu lệnh……… 52
</div><span class="text_page_counter">Trang 11</span><div class="page_container" data-page="11">Ngành công nghệ thông tin đã được ứng dụng vào các bài toán quản lý doanh nghiệp từ rất sớm. Trong thời đại kỹ thuật số, ngành công nghệ thơng tin đóng một vai trị ngày càng quan trọng trong việc cải thiện hiệu quả hoạt động của các tổ chức và cá nhân. Sự phát triển của công nghệ đã tạo ra nhiều cơ hội mới, nhưng cũng đồng thời đặt ra những thách thức không nhỏ..
Giải pháp quản trị doanh nghiệp đầy đủ bao gồm một hệ thống các phần mềm phủ khắp các hoạt động quản lý của một doanh nghiệp trong đó mỗi phần mềm thực hiện một nhiệm vụ phức tạp, cần tối ưu và tốn kém. Viễn thông Hà Nội, chi nhánh tập đoàn VNPT cũng đã áp dụng triển khai giải pháp ERP từ rất sớm, tuy nhiên trong quá trình triển khai thực hiện phát sinh rất nhiều vấn đề cần đầu tư nghiên cứu, cải tiến để nâng cao hiệu suất cũng như khả năng mở rộng. Quản lý tốt thông tin khách hàng và dịch vụ giúp cho:
- Đáp ứng nhu cầu quản lý dữ liệu, quản lý thông tin
- Tăng cường khả năng khai thác số liệu hỗ trợ đánh giá chỉ, xây dựng chính sách phát triển.
- Đáp ứng quy trình điều hành cung cấp dịch vụ đến khách hàng
- Hỗ trợ cơng tác chăm sóc – nâng cao trải nghiệm khách hàng về chất lượng dịch vụ và phục vụ.
Quản lý khách hàng là phân hệ trọng tâm, nắm giữ các thông tin cần thiết ảnh hưởng đến sự phát triển của doanh nghiệp. Khi lượng khách hàng bùng nổ cùng sự đa dạng của dịch vụ trong những năm gần đây, mơ hình hệ thống đang triển khai đã gặp phải một số khó khăn mặc dù phân hệ được đầu tư rất nhiều cả về công nghệ lẫn thiết kế:
</div><span class="text_page_counter">Trang 12</span><div class="page_container" data-page="12">- Tổng hợp dữ liệu chậm dần khi khối lượng dữ liệu trưởng nhanh.
- Khó khăn khi điều chỉnh thường xuyên CSDL về kiến trúc để đáp ứng công tác cung cấp dịch vụ.
- Hệ thống hạ tầng phải tăng cường, mở rộng thường xuyên đáp ứng nhu cầu lưu trữ hoặc tốc độ xử lý.
Các khó khăn trên gây tốn kém cả về nhân lực, thời gian và tài chính. Do đó, cần nghiên cứu giải pháp xử lý, có thể tiếp cận theo từng bước để tiến dần tới thay đổi hoặc chuyển đổi hệ thống sẵn có.
Viễn thông Hà Nội đã áp dụng nhiều giải pháp từ tối ưu sản phẩm phần mềm, nâng cấp phần cứng, trang bị thêm các công nghệ tích hợp…. Qua nghiên cứu về các mơ hình dữ liệu, có thể nhận thấy cơ sở dữ liệu đồ thị có rất nhiều tiềm năng là giải pháp phù hợp để giải quyết các vấn đề, cụ thể:
- CSDL đồ thị dễ học, dễ hiểu và có nguồn tài liệu phong phú.
- Có sự tương đồng trong cách mơ hình hóa dữ liệu với CSDL quan hệ, là cơ sở thực hiện chuyển đổi bài tốn từ mơ hình quan hệ sang đồ thị.
- CSDL đồ thị đơn giản hóa trong việc thay đổi cấu trúc (nút, quan hệ, thuộc tính…).
- Chỉ một phần CSDL bị tác động do truy vấn theo quan hệ, do đó khi kích thước dữ liệu tăng thời gian truy vấn có thể khơng tăng cao.
Luận văn trình bày nội dung nghiên cứu, tìm hiểu giải pháp thử nghiệm giải quyết bài tốn Quản lý khách hàng của Viễn thơng Hà Nội trên mơ hình CSDL đồ thị với phạm vi như sau:
- Nghiên cứu các khái niệm, mơ hình CSDL đồ thị
- Chọn Neo4j – một CSDL đồ thị mạnh và phổ biến để thử nghiệm.
- Phân tích mơ hình dữ liệu của bài tốn trên cả hai mơ hình: quan hệ - đồ thị, đánh giá ưu/nhược điểm của từng mơ hình.
- Nghiên cứu giải pháp chuyển đổi CSDL từ quan hệ sang đồ thị.
</div><span class="text_page_counter">Trang 13</span><div class="page_container" data-page="13">- Xây dựng chương trình demo đánh giá khả năng phát triển ứng dụng trên CSDL đồ thị.
- Xây dựng kịch bản và thử nghiệm so sánh hiệu năng (thời gian) truy vấn trên cả hai CSDL với một số câu lệnh thường sử dụng.
Luận văn chia làm các phần:
<i>Mở đầu: Đặt vấn đề, phân tích vấn đề thực tiễn và đề xuất hướng nghiên cứu,</i>
nêu các mục tiêu cần đạt được.
<i>Chương 1: Phát biểu bài toán, giới hạn phạm vi thực hiện . Trình bày các nghiên</i>
cứu về cơ sở dữ liệu đồ thị và hệ quản trị CSDL đồ thị Neo4j.
<i>Chương 2: Phân tích giải pháp giải quyết bài toán Quản lý khách hàng trên các</i>
mơ hình cơ sở dữ liệu quan hệ và đồ thị (mơ hình, ưu/nhước điểm). Đề xuất các phép đo kiểm cho phần thử nghiệm.
<i>Chương 3: Trình bày ngắn gọn thiết kế chương trình demo với mục đích đánh</i>
giá khả năng phát triển ứng dụng trên CSDL đồ thị. Xây dựng kịch bản đánh giá hiệu năng (thời gian) trên cả hai CSDL quan hệ và đồ thị với một số câu truy vấn
</div><span class="text_page_counter">Trang 14</span><div class="page_container" data-page="14">Chúng ta cần nghiên cứu giải pháp mới xuất phát từ các khó khăn thực tế khi phát triển các bài tốn trên mơ hình cơ sở dữ liệu quan hệ có sự mở rộng của khối lượng dữ liệu, sự thay đổi của các thuộc tính dữ liệu thường xuyên. Trong thực tế, khi khối lượng dữ liệu tăng dần tới các truy vấn dữ liệu bị chậm dần đi, buộc phải can thiệp bởi các giải pháp kỹ thuật, tốn kém nhiều chi phí. Tương tự, việc các thuộc tính dữ liệu bị ràng buộc quá chặt chẽ cũng khó khăn trong q trình chỉnh sửa bổ sung các phần mềm quản lý.
Đối với bài toán quản lý khách hàng, Telenor – công ty viễn thông cung cấp dịch vụ ở cả Châu Âu và Châu Á cũng đã ứng dụng CSDL đồ thị quản lý cấu trúc tổ chức khách hàng, thỏa thuận, đăng ký và quyền truy cập của người dùng... Họ đã có những đánh giá rất tốt về hiệu suất khi ứng dụng CSDL đồ thị so với CSDL quan hệ nhưng không chia sẻ cụ thể về phạm vi ứng dụng cũng như các tài liệu thiết kế hay thử nghiệm. Tuy nhiên, đây cũng có thể coi là cơ sở về mặt thực tiễn để chúng ta nghiên cứu về hướng áp dụng CSDL đồ thị trong bài toán ERP, với phạm vi và cấu trúc phù hợp với điều kiện triển khai của doanh nghiệp
<b>1.1.</b>
Bài tốn Quản lý khách hàng có số lượng thực thể quan hệ khơng nhiều nhưng có các đặc tính phù hợp cho việc phân tích: dữ liệu lớn và tăng trưởng theo thời gian, thuộc tính dữ liệu thay đổi do các nghiệp vụ phát sinh.
Xét trong tổng thể bài toán quản trị doanh nghiệp của Viễn thơng Hà Nội, bài tốn về Quản lý khách hàng chỉ là một phân hệ quản lý nhưng lại có vị trí rất quan trọng:
- Quản lý và cung cấp thông tin khách hàng cho các phân hệ khác: chăm sóc khách hàng, tính cước, điều hành phát triển dịch vụ…
- Hỗ trợ tổng hợp số liệu các báo cáo phân tích, dự đốn tình hình phát triển hoặc cơ sở quyết định cho các chính sách kinh doanh.
</div><span class="text_page_counter">Trang 15</span><div class="page_container" data-page="15"><b>Hình 1.1 Mơ hình tổng thể hệ thống quản trị doanh nghiệp</b>
Bài toán quản lý mối quan hệ khách hàng là dạng bài toán quản lý thường được triển khai trên mơ hình Cơ sở dữ liệu quan hệ với độ phức tạp tùy theo từng mơ hình kinh doanh. Việc bổ sung thuộc tính mới đáp ứng các yêu cầu nghiệp vụ thường dẫn tới phải chỉnh sửa lại cấu trúc các bảng dữ liệu, đồng thời tốc độ truy vấn giảm khi lượng dữ liệu tăng cao. Triển khai bài tốn trên mơ hình cơ sở dữ liệu đồ thị có thể là một hướng đi đúng đắn có thể khắc phục các hạn chế trên, cụ thể:
- Mơ hình hóa đồ thị thuộc tính rất trực quan dễ tiếp cận - CSDL đồ thị hỗ trợ bổ sung thuộc tính dữ liệu mềm dẻo.
</div><span class="text_page_counter">Trang 16</span><div class="page_container" data-page="16">- Thực hiện truy vấn dựa trên phép duyệt đồ thị và dựa vào các mối quan hệ đã định nghĩa sẵn nên tốc độ truy vấn ít biến động khi dữ liệu tăng.
NoSQL là tên gọi chung cho các CSDL mã nguồn mở nhưng không sử dụng SQL làm ngôn ngữ truy vấn, được giới thiệu lần đầu vào năm 1998. Cơ sở dữ liệu đồ thị được phân loại thuộc về CSDL NoSQL. [4][7]
Cơ sở dữ liệu đồ thị với các đặc trưng dễ tiếp cận và trực quan là cơ sở dữ liệu được mơ hình hóa trên lý thuyết đồ thị:
Mơ hình hóa là hoạt động với mục đích đưa các vấn đề cụ thể vào một khơng gian có cấu trúc có thể thao tác được với các vấn đề trong không gian đó. Q trình mơ hình hóa là một loạt các bước đưa vấn đề về sự đơn giản hóa, có khả năng thao tác xử lý, đạt được các mục tiêu mong muốn.
Mơ hình hóa dữ liệu bằng đồ thị sử dụng các hình khối và các mũi tên để đưa dữ liệu vào và thể hiện mối quan hệ giữa chúng. [2][6].
Mỗi thực thể đều có những đặc điểm riêng. Khi xây dựng mơ hình đồ thị, ta có thể đưa hồn tồn các đặc điểm đó thành các nút, nhưng như vậy sẽ rất phức tạp trong cả việc xây dựng đồ thị lẫn khai thác sử dụng đặc biệt gây lãng phí số nút khi số lượng thực thể tăng lên làm phức tạp đồ thị và tốn không gian lưu trữ. Giải pháp là ta sử dụng mơ hình đồ thị thuộc tính, cụ thể: [6]
</div><span class="text_page_counter">Trang 17</span><div class="page_container" data-page="17">- Nút, quan hệ có các thuộc tính được thể hiện theo key-value - Mối quan hệ: được đặt tên, có nút đầu và nút cuối
Đồ thị thuộc tính thường rất trực quan, dễ hiểu và nhìn có vẻ đơn giản nhưng nó có thể mơ tả đa số các trường hợp sử dụng, giúp chúng nhìn nhận sâu sắc hơn về dữ liệu.
Về cơ bản, khi thiết kế CSDL đồ thị cũng tương tự thiết kế CSDL quan hệ, mơ hình đồ thị thuộc tính với sơ đồ thực thể kết hợp cũng khá tương đồng. CSDL quan hệ có các thực thể cụ thể tương ứng các nút trong CSDL đồ thị và cả hai đều cần các mối quan hệ giữa chúng.
Đối với cơ sở dữ liệu đồ thị việc thiết kế như thế nào sẽ được hiện thực đúng như vậy trong khi các thực thể của CSDL quan hệ sẽ là một bảng chứa tập các bản ghi, các mối quan hệ có thể thành thực thể kết hợp. [2][6]
Phương pháp thiết kế CSDL đồ thị: [2][6][7]
</div><span class="text_page_counter">Trang 18</span><div class="page_container" data-page="18">- Xác định đâu là nút, đâu là mối quan hệ rất quan trọng, quyết định viecj xây dựng đúng đắn đồ thị. Nút thường có quan hệ với nhiều nút khác và mối quan hệ thì nó phải có nút đầu, nút cuối.
- Nghiên cứu chi tiết về dữ liệu để xác định các thực thể cũng như các mối quan hệ giữa chúng.
- Sử dụng nút để đại diện cho các thực thể, thuộc tính nút để mơ tả các tính chất của thực thể.
- Mối quan hệ để thể hiện sự kết nối giữa các thực thể, sử dụng các thuộc tính để mơ tả tính quan trọng, chất lượng của một quan hệ.
- Trong trường hợp các thực thể khác nhau tương tác trong cùng một khoảng thời gian thì một sự kiện xuất hiện, chúng được thể hiện như là các nút riêng và kết nối với các thực thể tham gia.
- Kiểu dữ liệu phức tạp là những kiểu dữ liệu có hơn một trường hoặc thuộc tính thường biểu diễn chúng bằng các node riêng biệt.
Neo4j hiện đang là hệ quản trị cơ sở dữ liệu đồ thị phổ biến nhất, mã nguồn mở và được viết bằng ngôn ngữ Java, sử dụng Cypher làm ngôn ngữ truy vấn dữ liệu. Neo4j hỗ trợ và thực hiện đầy đủ các yêu cầu về mặt lý thuyết cơ sở dữ liệu đồ thị. Để hiểu rõ hơn và khai thác hiệu quả hơn Neo4j, chúng ta cần tìm hiểu một số vấn đề, cụ thể:
Neo4j có một số tính năng nổi bật được giới thiệu để chúng ta cân nhắc khi áp dụng vào thực tế:
- Dễ dùng và áp dụng cho các API hướng đối tượng - Tối ưu hóa cho dữ liệu có tính kết nối cao
- Xác định các mối quan hệ tại thời điểm tạo giúp tối ưu thời gian truy vấn.
</div><span class="text_page_counter">Trang 19</span><div class="page_container" data-page="19">- Không yêu cầu không gian lưu trữ lớn và có bộ nhớ đệm cho các đồ thị, có khả năng mở rộng lưu trữ số lượng lớn nút (hàng tỉ) trên một hệ thống phần cứng vừa phải.
- Viết trên các JVM - Java virtual machine.
Nút là đơn vị cơ bản của một đồ thị. Trong Neo4j, các nút có thể chứa các thuộc tính, có thể có mối quan hệ với nút khác hoặc cũng có thể được dán nhãn.
<b>Hình 1.3 Biểu đồ mô tả Nodes - Nút</b>
Các nút thường được dùng để biểu diễn các thực thể [6].
Quan hệ giữa các nút cho phép tìm kiếm các dữ liệu có liên quan với nhau. Mối quan hệ cũng giống như nút: có thể có thuộc tính.
</div><span class="text_page_counter">Trang 20</span><div class="page_container" data-page="20"><b>Hình 1.4 Biểu đồ mô tả Relationships - Quan hệ</b>
Một mối quan hệ kết nối hai nút với nhau, gồm nút bắt đầu và nút kết thúc có hoặc khơng có thuộc tính, ln xác định hướng được dùng cho phép duyệt đồ thị. Mỗi mối quan hệ đều có loại quan hệ và mỗi loại quan hệ này được xác định bởi một định danh duy nhất [6].
<b>Hình 1.5 Biểu đồ mơ tả Quan hệ có hướng</b>
Cả nút và quan hệ đều có thể bổ sung tập các thuộc tính.
Thuộc tính là cặp key – value, trong đó key có kiểu là string. Các giá trị của thuộc tính trong Neo4j có thể là: chuỗi, số, luận lý hoặc tập hợp. Thuộc tính có key chứa giá trị null đồng nghĩa là không tồn tại key đó trong tập thuộc tính của nút hay mối quan hệ [6].
</div><span class="text_page_counter">Trang 21</span><div class="page_container" data-page="21">Nhãn là tên một cấu trúc đồ thị được sử dụng để nhóm các nút vào một tập hợp trong đó tất cả các nút có nhãn giống nhau cùng thuộc về một bộ.
<b>Hình 1.7 Biểu đồ mơ tả Labels - Nhãn</b>
Một nút có thể được gắn nhãn hoặc khơng. Truy vấn cơ sở dữ liệu có thể tác động trên các bộ thay vì tồn đồ thị giúp cho việc viết các truy vấn tối ưu. [6]
Một đường đi là một hay nhiều node được kết nối với nhau bởi các quan hệ: [6].
</div><span class="text_page_counter">Trang 22</span><div class="page_container" data-page="22"><small>Theo sau bởi một</small>
<b>Hình 1.8 Biểu đồ mơ tả Paths – Đường kết nối</b>
Cypher là ngôn ngữ truy vấn cho cơ sở dữ liệu đồ thị, có đặc điểm dễ đọc và dễ hiểu đối với cả các nhà phát triển. Cypher được xem là ngôn ngữ truy vấn đồ thị dễ tìm hiểu nhất, cho phép người dùng truy vấn thông tin trên cơ sở dữ liệu theo một mơ hình cụ thể, Nhìn chung, Cypher thể hiện rất tự nhiên và cũng như hầu hết các ngơn ngữ khác, Cypher cũng có các câu lệnh riêng, cú pháp riêng. [6]
</div><span class="text_page_counter">Trang 23</span><div class="page_container" data-page="23">Việc ứng dụng mơ hình CSDL đồ thị đã diễn ra hàng chục năm qua trên khắp thế giới. Thơng thường, chúng ta hình dung mơ hình dữ liệu này phù hợp với các bài toán mạng xã hội do tính chất tự nhiên của mối quan hệ đồ thị, tuy nhiên về thực tế mơ hình CSDL đồ thị có thể phù hợp với hầu hết các lĩnh vực xã hội: đồ thị tri thức (Knowledge Graph); giám sát cơ sở hạ tầng và CSDL cho các hoạt động công nghệ thông tin (Network and Database Infrastructure Monitoring for IT Operations); trí tuệ nhân tạo (Artificial Intelligence and Analytics)...
Các công ty công nghệ lớn luôn đi tiên phong và ứng dụng mơ hình này trong các bài tốn quan trọng của họ, điển hình như:
- Google với sản phẩm Knowledge Graph: hệ thống tìm kiếm tri thức mạnh mẽ kết hợp với semantic web (web ngữ nghĩa) cho phép hiểu được ý nghĩa của các từ khóa, từ đó đưa ra các kết quả chính xác hơn.
- Facebook cung cấp sản phẩm Graph Search: cũng là một công cụ tìm kiếm ngữ nghĩa, cho phép đưa ra các kết quả trên các truy vấn bằng ngôn ngữ tự nhiên của người dùng.
Trong thực tế khi lượng khách hàng tăng trưởng cao hoặc bùng nổ, lượng lớn thông tin lưu trữ trên CSDL quan hệ lại tỉ lệ nghịch với thời gian truy vấn, khai thác hoặc đối với các yêu cầu thường xuyên thay đổi thuộc tính trên các đối tượng quản lý cũng đặt ra thách thức lớn cho mơ hình triển khai này.
Để giải quyết vấn đề, các giải pháp kỹ thuật cũng tiêu tốn nhiều tài ngun và chi phí, từ đó đặt ra u cầu cần nghiên cứu các mơ hình triển khai mới, giảm thiểu hoặc khắc phục các hạn chế trên. Có thể thấy định hướng nghiên cứu về cơ sở dữ liệu đồ thị và ứng dụng vào bài tốn có mối quan hệ dữ liệu đa dạng, phức tạp là khả thi. Nằm trong phân lớp các CSDL NoSQL, CSDL đồ thị với các khái niệm đơn giản, gần gũi, trực quan giúp chúng ta dễ dàng tiếp cận, nghiên cứu và ứng dụng. Với hầu hết các bài tốn thường gặp, việc mơ hình hóa đồ thị thuộc tính cũng
</div><span class="text_page_counter">Trang 24</span><div class="page_container" data-page="24">dễ dàng chỉ thơng qua ba thành phần cơ bản: nút, quan hệ và thuộc tính. Ngơn ngữ Cypher với cú pháp tự nhiên, dễ hiểu là một công cụ mạnh mẽ hỗ trợ chúng ta trong tương tác và khai thác các dữ liệu trên CSDL đồ thị một cách nhanh chóng.
Kết quả nghiên cứu sẽ đánh giá khả năng chuyển đổi mơ hình, hiệu năng và tạo cơ sở cho việc ứng dụng cơ sở dữ liệu trong thực tế.
</div><span class="text_page_counter">Trang 25</span><div class="page_container" data-page="25">Bài toàn Quản lý khách hàng VNPT – Hà Nội đã được triển khai trên hệ quản trị cơ sở dữ liệu quan hệ, thực hiện quản lý mối quan hệ nghiệp vụ: mỗi khách hàng có một tập các mã thanh toán, mỗi mã thanh toán thực hiện thanh toán cho một hoặc nhiều thuê bao (là các dịch vụ cung cấp). Các dịch vụ mới thường xuyên phát sinh theo nhu cầu thị trường, các thuộc tính dịch vụ khác nhau thường khác nhau.
<b>Hình 2.1 Mơ hình bài tốn Quản lý khách hàng</b>
Trong phần này sẽ trình bày lại mơ hình của triển khai bài tốn, đánh giá các ưu nhược điểm trên cả mơ hình CSDL quan hệ và đồ thị, từ đó xây dựng giải pháp chuyển đổi dữ liệu, làm cơ sở ứng dụng thực tế.
</div><span class="text_page_counter">Trang 26</span><div class="page_container" data-page="26"><b>Hình 2.3 Sơ đồ thực thể liên kết Thanh toán – Thuê bao – Dịch vụ</b>
Hai sơ đồ thực thể liên kết rút gọn thực hiện khi triển khai bài tốn trên mơ hình cơ sở dữ liệu quan hệ. Bài tốn triển khai trên mơ hình cơ sở dữ liệu hồn tồn phù hợp, mối quan hệ giữa các thực thể rõ ràng và rất dễ phân tích. Tuy nhiên, sử dụng các sơ đồ này chúng ta có thể đánh giá về mặt lý thuyết một số vấn đề sẽ gặp phải trong thực tế.
Do bài tốn có quan hệ rất rõ ràng, việc triển khai trên mơ hình cơ sở dữ liệu quan hệ có rất nhiều ưu điểm.
- Phân tích bài tốn rõ ràng, rành mạch - Dữ liệu tổ chức gọn gàng, phân loại cụ thể - Dễ dàng xây dựng các truy vấn dữ liệu
</div><span class="text_page_counter">Trang 28</span><div class="page_container" data-page="28">- Hầu hết các hệ quản trị cơ sở dữ liệu quan hệ đều tương thích và cài đặt không tốn kém thời gian, các nền tảng lập trình cũng hỗ trợ rất tốt khi phát triển, giúp cho việc lựa chọn các hệ quản trị cơ sở dữ liệu cũng phù hợp hơn.
Quan sát trên sơ đồ, đối với bài toán của doanh nghiệp lớn sẽ phát sinh một số vấn đề:
- Do sử dụng các phép Join khi truy vấn, nên nếu số lượng khách hàng tăng cao cùng số thuê bao dịch vụ tăng cao, có thể dễ nhận thấy truy vấn dữ liệu sẽ cần tối ưu hóa bởi số lượng bản ghi lưu trữ trên cơ sở dữ liệu tăng dần theo chiều dọc. Với dữ liệu tương đối, ở mức khoảng 1 triệu khách hàng x 1 triệu mã thanh tốn x 2 triệu mã th bao, một phép tính gộp nhóm dữ liệu theo hướng lấy n khách hàng có số lượng thuê bao cao nhất sẽ gặp vấn đề về tải hệ thống. Đối với vai trò cung cấp dữ liệu cho các hệ thống tổng hợp báo cáo, việc triển khai sẽ gặp vấn đề về tốc độ hoặc bộ nhớ.
- Để tối ưu hóa trên các hệ quản trị cơ sở dữ liệu quan hệ, khi sử dụng các kỹ thuật phân vùng dữ liệu, đánh chỉ mục… sẽ gây khó khăn trong cơng tác quản lý và tăng dung lượng lưu trữ. Tuy nhiên, việc này là không tránh khỏi khi thực hiện triển khai trên mơ hình có sở dữ liệu quan hệ. Việc phân vùng dữ liệu ít nhiều làm các bài tốn tổng hợp dữ liệu theo nhiều chu kỳ gặp khó khăn, các bài toán sử dụng tham số đầu vào động cũng cần được xử lý thật tốt mới cho kết quả khả thi.
- Sự cứng nhắc trong thiết kế của cơ sở dữ liệu quan hệ sẽ khó khăn khi bổ sung các thuộc tính mới hoặc loại bỏ các thuộc tính thực sự dư thừa. Về thực tế, bổ sung thêm thuộc tính mới thường khơng xảy ra trên các hệ thống ổn định nghiệp vụ, tuy nhiên là thường xuyên xảy ra trên các hệ thống cung cấp dịch vụ do các yêu cầu thị trường và chính sách.
</div><span class="text_page_counter">Trang 29</span><div class="page_container" data-page="29">- Lãng phí các khơng gian lưu trữ cho các trường không hoặc sử dụng dữ liệu mặc định chỉ để đảm bảo đúng cấu trúc. Việc này sẽ tiêu tốn một lượng tài nguyên khơng nhỏ khi kích thước dữ liệu tăng và phần nào cũng ảnh hưởng đến thời gian truy vấn.
- Đối với việc xử lý thuộc tính động: có thể xử lý thơng qua sử dụng một vài thực thể đóng vai trị quản lý các thuộc tính. Giải pháp này có thể sử dụng tuy nhiên ít nhiều đã phá vỡ mối quan hệ rõ ràng trên mơ hình. Ngồi ra rất khó khăn khi xây dựng các truy vấn dữ liệu, khó khăn cả vể cách viết lẫn phương án tăng tốc độ.
- Đối với việc tăng tốc truy vấn dữ liệu khi kích thước tăng cao: sẽ phụ thuộc vào đánh chỉ mục, phân cùng dữ liệu… tuy nhiên cách làm này lại phụ thuộc vào sự hỗ trợ của hệ quản trị cơ sở dữ liệu và doanh nghiệp lựa chọn.
Việc triển khai bài tốn trên mơ hình cơ sở dữ liệu quan hệ là hợp lý, các ưu nhược điểm cũng đã được phân tích và đều có phương hướng giải quyết. Tuy nhiên, việc tìm kiếm một mơ hình khác có nhiều ưu điểm hoặc dễ dàng hơn khi khắc phục các nhược điểm là điều cần thiết, sẽ giúp giảm chi phí quản lý và điều hành của doanh nghiệp. Mơ hình tốt hơn cần thể hiện kết quả thông qua: phương án xử lý nhược điểm và số liệu đo đạc trên một số câu truy vấn dữ liệu lớn. Việc so sánh giải pháp sẽ được thực hiện thông qua kết quả đo đạc của ứng dụng demo.
Phần này trình bày phương án triển khai lại giải pháp trên cơ sở dữ liệu đồ thị, sử dụng lại tồn bộ các phân tích về dữ liệu khi thực hiện trên cơ sở dữ liệu quan hệ [6].
Có thể nhận thấy giải pháp triển khai trên mơ hình CSDL đồ thị từ bài tốn đang triển khai trên mơ hình CSDL quan hệ chỉ cần một số bước rất ngắn gọn và đơn
</div><span class="text_page_counter">Trang 30</span><div class="page_container" data-page="30">giản, chúng ta có thể mơ hình hóa dữ liệu dựa trên các phân tích như khi triển khai trên CSDL quan hệ, với một vài điểm khác biệt:
- Thực thể được mơ hình dưới các node đồ thị
- Quan hệ giữa các thực thể mơ hình hóa dưới quan hệ các node, khơng sử dụng khóa liên kết như trên CSDL quan hệ
- Các thuộc tính thực thể trở thành thuộc tính node
<b>Hình 2.4 Giải pháp triển khai trên CSDL đồ thị</b>
Như vậy, quan hệ trên CSDL đồ thị được biểu diễn dưới quan hệ trực tiếp giữa các node, không phải là quan hệ giữa các thực thể qua thuộc tính dữ liệu như CSDL đồ thị. Để có cái nhìn chi tiết, phần tiếp theo chúng ta sẽ phân tích mơ hình dữ liệu quan hệ tại Chương 2, mục 2.4 khi triển khai trên mô hình CSDL đồ thị với các bước thực hiện theo giải pháp trên.
Thực hiện chuyển đổi từ mơ hình cơ sở dữ liệu quan hệ sang mơ hình cơ sở dữ liệu đồ thị, chúng ta có mơ hình mới:
</div><span class="text_page_counter">Trang 31</span><div class="page_container" data-page="31">a. Khách hàng:
- Mỗi khách hàng sẽ được mô tả bằng một node
- Các thuộc tính của khách hàng sẽ là thuộc tính của node - Các node khách hàng sẽ được gán label phân loại: KhachHang
- Quan hệ có CO_MA_THANH_TOAN sẽ được gán theo chiều từ node
- Mỗi mã thanh toán sẽ được mơ tả bằng một node
- Các thuộc tính của mã thanh tốn sẽ là thuộc tính của node
- Các node mã thanh toán sẽ được gán label phân loại: MaThanhToan - Quan hệ CO_MA_KHACH_HANG sẽ được gán theo chiều từ node mã
thanh toán => khách hàng
- Quan hệ CO_THUE_BAO sẽ được gán theo chiều từ node mã thanh toán => thuê bao
</div><span class="text_page_counter">Trang 32</span><div class="page_container" data-page="32">c. Thuê bao:
- Thuê bao được thể hiện trên các node với các thuộc tính và bổ sung các thuộc tính đặc trưng của dịch vụ vào thuộc tính node. Điều này thực hiện được do việc bổ sung tự do các thuộc tính của cơ sở dữ liệu đồ thị
- Các node thuê bao gán nhãn phân loại: ThueBao
- Quan hệ THUOC_VE_THANH_TOAN sẽ được gán theo chiều từ node thuê bao => mã thanh toán
- Quan hệ CO_DICH_VU sẽ được gán theo chiều từ node thuê bao => node dịch vụ cụ thể (Cố định, di động….)
d. Dịch vụ:
- Dịch vụ thể hiện trên các node và gán nhãn DichVu - Các thông tin dịch vụ được bổ sung vào thuộc tính node
e. Các thực thể khác: các thực thể khác được phân tích và mơ hình trên cơ sở dữ liệu đồ thị
- Mơ hình dữ liệu trên cơ sở dữ liệu đồ thị rất tường minh và trực quan, cách nhìn nhận dữ liệu và tiếp cận khá đơn giản
- Các mối quan hệ dữ liệu thể hiện rất rõ ràng, quan hệ có định hướng giúp việc phân tích đánh giá thuận lợi
- Dựa vào mơ hình, có thể thấy các phép truy vấn là phép duyệt đồ thị không bị lệ thuộc vào quy mô cả đồ thị, chỉ phụ thuộc vào một phần đồ thị do đó có thể thấy tốc độ truy vấn sẽ khơng giảm khi kích thước dữ liệu tăng (hoặc kích thước đồ thị tăng).
- Các mối quan hệ đã được chuẩn bị và định nghĩa ngay từ đầu, do đó việc truy vấn theo quan hệ mang lại hiệu quả tốc độ
- Các thuộc tính được thêm bớt theo nhu cầu, linh động giúp dễ dàng điều chỉnh cơ cấu dữ liệu, tiết kiệm không gian lưu trữ.
</div><span class="text_page_counter">Trang 33</span><div class="page_container" data-page="33">- Làm rõ mối quan hệ giữa các thực thể, mơ hình hóa theo cơ sở dữ liệu đồ thị từ đầu sẽ đòi hỏi tiêu tốn khá nhiều nguồn lực.
- Các dữ liệu khi lưu trữ chưa có phương án phân tán hiệu quả
- Các nền tảng kỹ thuật hỗ trợ chưa phong phú và cần thời gian để kiểm
Đánh giá sơ bộ, việc chuyển đổi mơ hình từ cơ sở dữ liệu quan hệ sang cơ sở dữ liệu đồ thị khơng q khó khăn về mặt lý thuyết. Sau khi thực hiện phân tích một trường hợp quản lý dữ liệu, có thể thấy việc chuyển đổi về cơ bản sẽ mang lại hiệu quả đối với bài toán phù hợp: có tốc độ tăng trưởng dữ liệu và cần linh động trong việc thay đổi thuộc tính của các thực thể. Việc đánh giá cụ thể kết quả chuyển đổi sẽ được thực hiện trong phần thử nghiệm với các phép đo định lượng, giúp có cơ sở tốt hơn cho đánh giá cuối cùng.
Một vấn đề rất cần chú trọng khi triển khai các giải pháp thực tế, đó là chúng ta có sẵn cơ sở dữ liệu quan hệ, với hàng trăm bảng dữ liệu và hàng triệu bản ghi. Cần tìm giải pháp xử lý việc chuyển đổi từ các CSDL có sẵn này sang đồ thị, sao cho việc chuyển đổi ít nhất về chi phí thực hiện cũng như đảm bảo được phần lớn các mục tiêu đề ra. Dựa vào việc mơ hình hóa đồ thị thuộc tính, xem xét trên các thực thể và quan hệ chúng ta có giải pháp khá dễ thực hiện theo nguyên tắc [6]:
- Các bản ghi dữ liệu là các nút trên đồ thị
- Tên các bảng hay các thực thể được gán cho các nhãn của nút
</div><span class="text_page_counter">Trang 34</span><div class="page_container" data-page="34">- Tên các cột gán cho thuộc tính của nút với giá trị tương ứng
- Quan hệ giữa các thực thể là các cung của đồ thị, có chiều dựa vào quan hệ trên CSDL quan hệ
Với giải pháp trên, việc chuyển đổi từ CSDL quan hệ sang CSDL đồ thị sẽ khá dễ dàng, tái sử dụng tất cả quan hệ, thuộc tính sẵn có. Ngồi ra, có thể nhận thấy việc cài đặt giải pháp cũng không quá phức tạp, tuy nhiên CSDL mới hồn tồn chưa được phân tích tối ưu.
</div><span class="text_page_counter">Trang 35</span><div class="page_container" data-page="35"><b>Hình 2.6 Lưu đồ chuyển đổi CSDL QH sang CSDL ĐT</b>
Trên cơ sở dữ liệu chuyển đổi, ta có một số đặc tính:
- Số lượng node bằng số bản ghi trên cơ sở dữ liệu quan hệ - Số lượng loại quan hệ bằng số lượng quan hệ hiện có
</div><span class="text_page_counter">Trang 36</span><div class="page_container" data-page="36">Áp dụng giải pháp chuyển đổi, thực hiện phân tích CSDL bài tốn Quản lý khách hàng và chuyển đổi từng bước sang CSDL đồ thị.
<i><b>Xét ví dụ chuyển đổi giữa hai thực thể: Khách hàng – Loại khách hàng:</b></i>
- Xác định sơ đồ thực thể liên kết trên CSDL quan hệ có sẵn, mục đích để phân tích rõ mối quan hệ, các thuộc tính dữ liệu cũng như kiểu của
<b>Hình 2.7 Sơ đồ thực thể liên kết Khách hàng – Loại khách hàng</b>
- Ánh xạ sang mơ hình dữ liệu đồ thị: thực hiện ánh xạ sang mơ hình mới, xác định các nút đồ thị và các thuộc tính tương ứng, chiều quan
<b>Hình 2.8 Đồ thị biểu diễn nút Khách hàng – Loại khách hàng</b>
- Thực hiện với từng bản ghi dữ liệu trên bảng KHACH_HANG và LOAI_KH:
từng node cụ thể.
</div><span class="text_page_counter">Trang 37</span><div class="page_container" data-page="37"> Node được gán lable là tên bảng, ở đây chúng ta có hiệu chỉnh lại cho tự nhiên: KHACH_HANG KhachHang, LOAI_KH LoaiKH
trị trên bản ghi
</div>