ĐẠI HỌC QUỐC GIA HÀ NỘI TRƯỜNG ĐẠI HỌC CÔNG NGHỆ Nguyễn Hoàng Long Lê Văn Đức TÌM HIỂU HỆ QUẢN TRỊ CƠ SỞ DỮ LIỆU RAVENDB Báo Cáo Giữa Kỳ Môn Học Hệ Quản Trị Cơ Sở Dữ Liệu Ngành Công nghệ thông tin HÀ[.]
ĐẠI HỌC QUỐC GIA HÀ NỘI TRƯỜNG ĐẠI HỌC CÔNG NGHỆ Nguyễn Hồng Long Lê Văn Đức TÌM HIỂU HỆ QUẢN TRỊ CƠ SỞ DỮ LIỆU RAVENDB Báo Cáo Giữa Kỳ Môn Học: Hệ Quản Trị Cơ Sở Dữ Liệu Ngành: Công nghệ thông tin HÀ NỘI – 2020 ĐẠI HỌC QUỐC GIA HÀ NỘI TRƯỜNG ĐẠI HỌC CÔNG NGHỆ TÌM HIỂU HỆ QUẢN TRỊ CƠ SỞ DỮ LIỆU RAVENDB Báo Cáo Giữa Kỳ Môn Học: Hệ Quản Trị Cơ Sở Dữ Liệu Giảng Viên: Nguyễn Thị Hậu STT Tên Sinh Viên Mã Sinh Viên Nguyễn Hoàng Long 18020805 Lê Văn Đức 18020352 HÀ NỘI – 2020 MỤC LỤC Chương I: GIỚI THIỆU Mở Đầu: Yêu Cầu: Cấu Trúc Báo Cáo: 4 Chương II: HỆ QUẢN TRỊ CƠ SỞ DỮ LIỆU NoSQL Sơ Lược Về NoSQL: Đặc Điểm Đặc Trưng: Sự Khác Nhau Giữa Dòng NoSQL Dòng SQL: 5 Chương III: TÌM HIỂU VỀ RAVENDB Sơ lược RavenDB: Các tính bật: Cài đặt minh họa: So sánh với vài Hệ quản trị sở liệu 4.1 So Sánh Với Microsoft SQL Express 2012: 4.2 So Sánh Với MongoDB, CouchDB: 9 10 15 15 16 Chương IV: Kết Luận 17 TÀI LIỆU THAM KHẢO: 18 BẢNG KÍ HIỆU, VIẾT TẮT Kí hiệu/ Viết tắt Ý nghĩa CSDL Cơ sở liệu HQT CSDL Hệ Quản Trị Cơ Sở Dữ Liệu Application Programming Interface: giao diện API lập trình ứng dụng RDBMS Cơ Sở Dữ Liệu Hướng Quan Hệ Chương I: GIỚI THIỆU Mở Đầu: Trong khoảng thập niên trở lại đây, hệ quản trị sở liệu quan hệ RDBMS lựa chọn cho việc quản trị sở liệu Tuy nhiên, với yêu cầu RDBMS bộc lộ yếu điểm Chính chặt chẽ, yêu cầu quán liệu gây rườm rà, phức tạp làm giảm hiệu suất hoạt động, trường hợp phải chứa lượng lớn liệu Nhưng với bùng nổ công nghệ nay, với mạng Internet lượng liệu cần lưu trữ ngày tăng Yêu cầu cho việc lưu trữ ngày cao như: lưu trữ nhiều liệu, tốc độ truy xuất nhanh, phân tán liệu nhiều máy chủ… với mơ hình sở liệu quan hệ rõ ràng khơng thể đáp ứng đủ yêu cầu NoSQL sinh để cạnh tranh với RDBMS mà để đảm nhiệm việc mà RDBMS chưa làm tốt Mục tiêu mà NoSQL nhắm đến hiệu suất hoạt động cao với số lượng liệu cực lớn Tuy nhiên để đạt điều NoSQL bỏ qua thông dịch SQL với truy vấn rườm rà Việc sử dụng ràng buộc quan hệ truy vấn SQL thân thiện thích hợp với phần đông liệu Tuy nhiên, liệu đơn giản, thủ tục SQL không cần thiết (theo Curt Monash - nhà phân tích sở liệu, blogger) Đồng thời NoSQL có cách thiết kế liệu khác với sở liệu truyền thống như: tư tưởng thiết kế liệu phi quan hệ, lưu trữ liệu dạng document, sử dụng tối đa indexes… Trong đặc tính đó, liệu phi quan hệ yếu tố quan trọng góp phần làm nên thành cơng cho NoSQL Dữ liệu phi quan hệ tức không tuân theo dạng chuẩn hóa mà sở liệu RDBMS đặt Thay vào đó, thiết kế sở kiệu NoSQL ta phải tuân theo số quy tắc mà NoSQL đặt để đạt hiệu suất hoạt động cao Chính khác biệt loại sở liệu dẫn đến cách thiết kế khác Đa số lập trình viên quen với mơ hình quan hệ truyền thống, cần phải tìm hiểu kĩ cách thiết kế liệu NoSQL để đạt hiệu suất mong muốn Yêu Cầu: - Được định tìm hiểu Hệ Quản Trị Cơ Sở Dữ Liệu RavenDB, nhóm số tìm hiểu hệ quản trị dựa yêu cầu sau: + Các đặc trưng RavenDB + Cài đặt, minh hoạ sử dụng + So sánh đánh giá với Hệ Quản Trị Cơ Sở Dữ Liệu dòng - Ý nghĩa học tập: + Giúp sinh viên tìm hiểu, hiểu rõ dịng NoSQL đặc biệt Hệ Quản Trị CSDL RavenDB Từ đây, sinh viên có nhìn chung cách sử dụng mục đích sử dụng HQTCSDL dịng NoSQL ứng dụng thực tiễn + Sinh Viên có kĩ áp dụng HQTCSDL RavenDB vào dự án cuối kì mơn học xa dự án tương lai + Thuyết trình báo cáo HQTCSDL tìm hiểu giúp cho bạn sinh viên tìm hiểu HQTCSDL khác nắm bắt đặc trưng bản, cách cài đặt sử dụng đơn giản HQTCSDL RavenDB + Giảng viên có nhìn đánh giá xác trình tìm hiểu học tập sinh viên thơng qua báo cáo thuyết trình lớp Cấu Trúc Báo Cáo: - - - Báo cáo tập trung trình bày số kiến thức HQTCSDL dòng NoSQL, kiến thức RavenDB Chương I: Giới thiệu - Giới thiệu mục tiêu, yêu cầu hướng đến báo cáo Chương II: Hệ quản trị sở liệu NoSQL - tập trung giới thiệu đời dòng NoSQL, kiến thức liên quan đến dòng NoSQL khác biệt NoSQL với CSDL Quan Hệ nào? Chương III: Tìm hiểu RavenDB - tập trung giới thiệu chức bản, cài đặt minh họa, so sánh khác biệt RavenDB vài HQTCSDL khác dòng NoSQL Chương IV: Kết Luận - Tổng kết lại vấn đề tìm hiểu đưa mảng cịn thiếu sót q trình tìm hiểu Chương II: HỆ QUẢN TRỊ CƠ SỞ DỮ LIỆU NoSQL Sơ Lược Về NoSQL: - - Cơ sở liệu NoSQL Cơ sở liệu xây dựng dành riêng cho mơ hình liệu có sơ đồ linh hoạt để xây dựng ứng dụng đại Cơ sở liệu NoSQL cơng nhận rộng rãi khả dễ phát triển, chức hiệu quy mô lớn Khi sử dụng thuật ngữ “Cơ sở liệu NoSQL”, người thường sử dụng để sở liệu không quan hệ Một số cho thuật ngữ “NoSQL” viết tắt “Non SQL” người khác nói viết tắt “khơng SQL” Dù diễn đạt cách đưa đến thống sở liệu NoSQL sở liệu lưu trữ liệu định dạng bảng quan hệ - - Khi chi phí cho việc lưu trữ giảm, lúc số lượng ứng dụng liệu cần thiết để lưu trữ truy vấn tăng lên Dữ liệu có đủ hình dạng kích thước - có cấu trúc, bán cấu trúc đa hình - việc xác định trước lược đồ gần thực Cơ sở liệu NoSQL cho phép nhà phát triển lưu trữ lượng lớn liệu phi cấu trúc, mang lại cho chúng nhiều tính linh hoạt Vì lẽ mà sở liệu NoSQL xuất vào đầu năm 2000 Hiện nay, số lượng Hệ Quản Trị Cơ Sở Dữ Liệu thuộc dòng NoSQL lên đến vài chục loại khác Điển hình như: MongoDB, Oracle NoSQL Database, Dynamo, Cassandra, HBase, Redis, Neo4J, … Đặc Điểm Đặc Trưng: Cơ sở liệu NoSQL sử dụng nhiều mơ hình liệu để truy cập quản lý liệu Các loại sở liệu tối ưu hóa dành riêng cho ứng dụng u cầu mơ hình liệu linh hoạt có lượng liệu lớn độ trễ thấp, đạt cách giảm bớt số hạn chế tính quán liệu sở liệu khác - Các sở liệu NoSQL cung cấp nhiều mơ hình liệu khác khóa-giá trị, tài liệu biểu đồ, tối ưu hóa để đạt hiệu quy mô tối ưu - Cơ sở liệu NoSQL thường phải đánh đổi cách nới lỏng số thuộc tính ACID sở liệu quan hệ để có mơ hình liệu linh hoạt có khả thay đổi quy mơ theo chiều ngang Việc biến sở liệu NoSQL thành lựa chọn tuyệt vời cho trường hợp sử dụng cần thông lượng cao, độ trễ thấp cần thay đổi quy mô theo chiều ngang vượt qua giới hạn phiên - API sở đối tượng cho phép nhà phát triển ứng dụng dễ dàng lưu trữ truy xuất cấu trúc liệu nhớ Khóa phân mảnh tìm kiếm cặp khóa-giá trị, tập hợp cột văn có cấu trúc chưa hồn chỉnh có chứa đối tượng thuộc tính ứng dụng xếp theo chuỗi ● Các loại sở liệu NoSQL: Theo q trình phát triển, có loại sở liệu chính: - - - - - Tài liệu (Document databases): lưu trữ liệu tài liệu tương tự đối tượng JSON (JavaScript Object Notation) Mỗi tài liệu chứa cặp trường giá trị Các giá trị thường nhiều loại bao gồm thứ chuỗi, số, boolean, mảng đối tượng cấu trúc chúng thường phù hợp với đối tượng mà nhà phát triển làm việc mã Đồ Thị (Graph databases): lưu trữ liệu nút cạnh Các nút thường lưu trữ thông tin người, địa điểm thứ cạnh lưu trữ thông tin mối quan hệ nút Hàng - Cột (Wide-column stores): lưu trữ liệu bảng, hàng cột động Cửa hàng cột rộng cung cấp nhiều tính linh hoạt so với sở liệu quan hệ hàng khơng bắt buộc phải có cột giống Nhiều người coi cửa hàng cột rộng sở liệu khóa-giá trị hai chiều Khóa - Giá Trị(Key-value databases): có khả phân mảnh cao cho phép thay đổi quy mô theo chiều ngang quy mơ lớn mà loại hình sở liệu khác làm Mô hình liệu khóa–giá trị dùng cho trị chơi, cơng nghệ quảng cáo đặc biệt thích hợp cho IoT ● Các đặc tính vượt trội NoSQL: Cơ sở liệu NoSQL lựa chọn thích hợp cho nhiều ứng dụng đại, ví dụ di động, web trò chơi đòi hỏi phải sử dụng sở liệu thiết thực, linh hoạt, có khả thay đổi quy mơ hiệu cao để đem đến cho người dùng trải nghiệm tuyệt vời - Linh hoạt: Cơ sở liệu NoSQL thường cung cấp sơ đồ linh hoạt giúp công đoạn phát triển nhanh có khả lặp lại cao Mơ hình liệu linh hoạt biến sở liệu NoSQL thành lựa chọn lý tưởng cho liệu không tổ chức thành cấu trúc có cấu trúc chưa hồn chỉnh - Khả thay đổi quy mô: Cơ sở liệu NoSQL thường thiết kế để tăng quy mô cách sử dụng cụm phần cứng phân phối thay tăng quy mô - - cách bổ sung máy chủ mạnh tốn Một số nhà cung cấp dịch vụ đám mây xử lý hoạt động cách không công khai dạng dịch vụ quản lý đầy đủ Hiệu cao: Cơ sở liệu NoSQL tối ưu hóa theo mơ hình liệu cụ thể mẫu truy cập giúp tăng hiệu cao so với việc cố gắng đạt mức độ chức tương tự sở liệu quan hệ Cực kỳ thiết thực: Cơ sở liệu NoSQL cung cấp API kiểu liệu thiết thực xây dựng riêng cho mơ hình liệu tương ứng Sự Khác Nhau Giữa Dòng NoSQL Dòng SQL: - Được đời vào năm 1970, Cơ Sở Dữ Liệu Quan Hệ sử dụng vô rộng rãi tận Vậy NoSQL CSDL Quan hệ có khác biệt Chúng ta tìm hiểu bảng sau: Nội Dung Cơ sở liệu NoSQL Cung cấp nhiều mơ hình liệu khác Mơ hình liệu Cơ sở liệu quan hệ Mơ hình quan hệ chuẩn hóa liệu vào bảng hình thành từ hàng cột Thường đánh đổi cách nới lỏng Các thuộc tính mang tính nguyên số thuộc tính ACID sở Thuộc tính ACID tố, quán, tách biệt bền vững liệu quan hệ để có mơ hình liệu (ACID) linh hoạt Được thiết kế dành cho ứng Được thiết kế cho mẫu truy cập dụng xử lý giao dịch trực tuyến Tối ưu công việc liệu, bao gồm ứng dụng có độ trễ giao dịch có độ ổn định cao thấp thích hợp để xử lí phân tích trực tuyến Hiệu - Hiệu thường phụ thuộc vào hệ Hiệu thường xem chức thống ổ đĩa Việc tối ưu kích cỡ cụm phần cứng ngầm, hóa truy vấn ảnh hưởng lớn độ trễ mạng ứng dụng đưa lệnh gọi tới hiệu hệ thống Từ bảng so sánh trên, nhận thấy khác CSDL Quan hệ NoSQL Cũng giải thích NoSQL sinh để phục vụ cho mơ hình liệu lớn, cần độ trễ thấp mà hiệu cao NoSQL đánh đổi vài thuộc tính tồn vẹn liệu để đạt hiệu cao xử lý công việc - Tuy nhiên, đến thời điểm CSDL Quan Hệ sử dụng tính tồn vẹn liệu truy vấn, xử lý công việc vài đặc điểm cần thiết liên kết bảng liệu chặt chẽ Chương III: TÌM HIỂU VỀ RAVENDB Sơ lược RavenDB: RavenDB document database nên thừa hưởng lợi ích to lớn sở liệu NoSQL nói chung sở liệu hướng tài liệu nói riêng RavenDB sở liệu hướng tài liệu mã nguồn mở có hỗ trợ transactional viết cho tảng NET RavenDB đưa mơ hình liệu linh hoạt nhằm đáp ứng yêu cầu hệ thống giới thực RavenDB cho phép xây dựng ứng dụng có hiệu suất cao, độ trễ thấp cách nhanh chóng hiệu RavenDB viết C# Hibernating Rhinos với giấy phép GNU AGPL v3.0 RavenDB giải pháp NoSQL tảng NET xây dựng dựa kiến trúc client-server Dữ liệu lưu trữ thực thể máy chủ yêu cầu liệu gửi tới máy chủ từ nhiều máy người dùng khác Những yêu cầu gửi tới máy chủ thực cách sử dụng Client API có sẵn ứng dụng NET ứng dụng SilverLight, cách truy cập trực tiếp tới Server’s RESTful API Nếu NET developer sử dụng NET Client API cách dễ để làm việc với RavenDB cung cấp lượng lớn tính nhiều API hỗ trợ RESTful API làm cho RavenDB truy cập từ nhiều tảng khác truy vấn AJAX trang web ứng dụng Non-Windows viết Ruby-on-Rail Các tính bật: Ngồi tính chất cần có hệ quản trị sở bình thường ravenDb cịn có số đặc điểm bật như: 2.1 Dynamic Querying(Truy vấn động ) Ngay bạn không thiết lập mục cho truy vấn, RavenDB tự động thực Bạn thực nhiều truy vấn, có nhiều mục RavenDB thiết lập tối ưu hóa Điều đạt hai điều: +Bạn sử dụng RavenDB, hoạt động nhanh +Khi bạn phát hành dựng ứng dụng mục trở nên vô dụng, RavenDB tự động tạo mục để hiệu suất bạn mạnh mẽ 2.2 On-the-Fly Aggregates:(tính chất tổng hợp) RavenDB chạy tổng hợp giữ cho cách thêm vào bảng kiểm đếm có liệu Khi bạn đưa yêu cầu truy vấn tương lai cho tổng hợp giống nhau, câu trả lời nhanh Việc truy vấn phải quét toàn sở liệu bạn cho tổng số trở nên không cần thiết 2.3 Both ACID and Non-Relational: Có tính chất ACID bốn tính chất quan trọng hệ sở liệu không sử dụng ràng buộc liệu cho quán liệu Để theo kịp với nhiều đối tượng người mua sản phẩm bạn, bạn cần mơ hình sở liệu tăng hiệu suất chống lại mức độ mở rộng nhanh chóng lưu lượng truy cập khơng ảnh hưởng đến an tồn liệu bạn Đó lý RavenDB ACID, cam kết toàn giao dịch đĩa khơng hồn tồn, đảm bảo khách hàng bạn biết họ đứng đâu sau mua 2.4 Transparent GUI (giao diện Minh bạch): Để giữ cho sở liệu bạn hiệu suất cao nhất, Giao diện người dùng cho bạn biết thứ Trong RavenDB, bạn thấy trạng thái hoạt động nút, phân tích cách mục chạy loạt số khác để bạn nhanh chóng xác định nút thắt làm chậm sở liệu bạn 2.5 Database Security(Tính bảo mật cao) RavenDB cụm sở liệu bảo mật TLS 1.2 sử dụng chứng ứng dụng khách X509 để xác thực Dữ liệu bảo vệ chuyển tiếp trạng thái nghỉ RavenDB tự động tạo lại chứng bảo mật sau 2-3 tháng, theo kịp tiêu chuẩn ngành để bảo vệ thông tin bạn Cài đặt minh họa: Để cài đặt RavenDb phải cài đặt phần : + Phần Server tập trung vào cài đặt, thiết lập cấu hình máy chủ RavenDB 10 +Phần Khách hàng mô tả nguyên tắc chung đằng sau thư viện khách hàng Phía Sever: Chuẩn bị: Tải xuống sever pakage giải nén file Windows: +Cài đặt Visual C++ 2015 Redistributable Package +Kiểm tra xem netCore cài đặt chưa có Linux +Cập nhập Linux OS +Cài đặt netcore in linux MacOS +Cập nhập mac os +Cài đặt netCore in macOs Cài ravenDb Windows: +Chạy file run.ps1 file giản nén windown PowerSell Để chạy Setup Wizard(trình hướng dẫn thiết lập ) lên giao diện : +Chọn vào Let's Encrypt Certificate :tạo chứng cho miền bạn; +Nhập giấy phép bạn(key license) : Nếu chưa có ấn vào get license để lấy key 11 +Bước xác nhận miền phụ bạn Trong ví dụ đây, chọn miền phụ "duck63" + Bước Cấu hình địa node + Node A ( https://a.duck63.ravendb.community )với địa ip 127.0.0.1 on port 8080 +Đợi máy chạy để cấp tên miền : 12 sau tải xuống file zip để cấu hình Chọn restart sever sau truy cập tên miền https://a.duck63.ravendb.community 13 Nếu cài đặt node phần sever hồn thành; Từ h trở sau cần chạy file run ps1 sever mở làm việc Thêm Database server ravenDB : +Khi mở server lên truy cập vào địa https://a.duck63.ravendb.community:8080/studio/index.html#databases + Tạo newDatabase import liệu lên sever sử dụng hệ quản trị sở liệu RavenDb Phía client: Sau máy chủ bạn khởi động chạy, để viết ứng dụng, bạn cần có thư viện truy cập Máy khách: NET từ NuGet Java từ Maven Node.js từ NPM Python từ PyPi Ruby Go Ví dụ để sử dụng C# vs Nuget : 14 So sánh với vài Hệ quản trị sở liệu 4.1 So Sánh Với Microsoft SQL Express 2012: - MS SQL Express 2012 Cơ Sở Dữ Liệu Hướng Quan Hệ phát triển Microsoft Chúng ta so sánh xem MS SQL Express RavenDB có khác biệt tốc độ truy vấn nhé: 15 Chúng ta nhận thấy tốc độ truy vấn RavenDB thể vượt trội lượng liệu đưa vào ngày lớn Điều chứng tỏ RavenDB thực hữu dụng ứng dụng xử lý lượng lớn liệu, ứng dụng cần độ trễ thấp 4.2 So Sánh Với MongoDB, CouchDB: - loại HQT CSDL sau so sánh thuộc loại Document Database Chúng ta tham khảo bảng so sánh sau tính hỗ trợ hệ quản trị RavenDB, MongoDB CouchDB: Nội dung Loại CSDL RavenDB MongoDB CouchDB Document Database Document Database Document Database Lưu Trữ JSON BSON JSON Metadata Có hỗ trợ Khơng hỗ trợ Có hỗ trợ Hỗ trợ tự động tạo khóa cho document Mỗi view tạo Bất trường hàm javascript MongoDB mà thực thi hành đánh mục động map reduce (giống mục Sau trả giá trị đơn bên RMDB) kết hợp documents Chỉ Mục Phân tán liệu Có khả nhân MongoDB lưu trữ nhiều máy chủ khác liệu cho thiết bị file hệ thống, Lưu Trữ Dữ Liệu Mỗi máy chủ tự động đồng tốt cho việc cân lưu trữ mảnh liệu thiết bị hoạt tải nhân liệu liệu động trở lại Written In Transactions C# C++ Erlang Có Hỗ Trợ Khơng Không 16 Kết hợp nhân phân tán Nhân phân tánliệu nên hạn chế liệu khả mát liệu hệ thống Cú pháp LINQ Hỗ trợ mô khả nhân Master-slave Một chiều với liệu master điều offline khiển việc đọc ghi Javascript Javascript Qua bảng so sánh thấy điểm khác điểm mạnh RavenDB so với CouchDB MongoDB sau: - RavenDB hỗ trợ transaction Điều có nghĩa liệu lưu trữ xử lý cách an toàn, đáng tin cậy - Mở rộng với RavenDB dễ dàng nhiều với gói tính mạnh mẽ là: Replication Sharding ( Nhân Phân Tán) Replication hỗ trợ master – slave master –master Việc phân tán liệu vô đơn giản, khơng u cầu cấu hình Một máy đơn RavenDB lưu trữ đến 16 terabytes liệu - RavenDB hỗ trợ hàm thủ tục theo cú pháp LinQ khác với Javascript MongoDB hay CouchDB - Ngôn ngữ để tạo lên CSDL khác nhau: với RavenDB C# * Ngồi tính RavenDB cịn có số đặc điểm: - Hỗ trợ tốt NET client API Đây tính có sẵn RavenDB - Tối ưu hóa cho việc xử lý đồng thời hàng ngàn người dùng lượng liệu cực lớn - Raven Studio Management công cụ quản lý vô hữu ích Với giao diện web trực quan, xem, thêm, thay đổi liệu cách dễ dàng với Raven Studio Management Ngồi cịn giúp làm nhiều việc khác như: quản lý logs, patching, tasks, alerts, … Chương IV: Kết Luận - Tổng hợp phân tích chi tiết sở liệu NoSQL với ứng dụng thực tiễn Qua tài liệu này, người đọc có nhìn bao qt NoSQL ứng dụng vào hệ thống cần lưu trữ nhiều liệu 17 - Trình bày phân tích loại khác NoSQL bao gồm: key-value store, column families, document database graph database Tìm hiểu tính năng, đặc điểm lợi ích số loại document database phổ biến là: MongoDB, CouchDB, RavenDB TÀI LIỆU THAM KHẢO: TIẾNG VIỆT: [1]AWS - NoSQL ? - Website: https://aws.amazon.com/vi/nosql/ [2]Giới Thiệu NoSQL- Website: https://toidicodedao.com/2015/09/24/nosql-cogi-hay-ho-tong-quan-ve-nosql-phan-1/ TIẾNG ANH: [3] Nhà phát triển RavenDB - Khái Niệm Cơ Bản Về Truy Vấn Trong RavenDB Website: https://ravendb.net/docs/article-page/5.0/csharp/indexes/querying/basics 18