Đăng ký Đăng nhập
Trang chủ Hệ quản trị csdl phi quan hệ nosql couchbase và vấn đề bảo mật...

Tài liệu Hệ quản trị csdl phi quan hệ nosql couchbase và vấn đề bảo mật

.PDF
56
1
73

Mô tả:

BAN CƠ YẾU CHÍNH PHỦ HỌC VIỆN KỸ THUẬT MẬT Mà ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯ AN TOÀN CƠ SỞ DỮ LIỆU Đề tài Hệ quản trị CSDL phi quan hệ - NoSQL Couchbase và vấn đề bảo mật Chuyên ngành: An toàn thông tin Sinh viên thực hiện: - Bùi Xuân Tài - Bùi Anh Tuấn - Nguyễn Hồng Hải - Nguyễn Hữu Hoàng Cán bộ hướng dẫn : GV. Trần Thị Lượng Khoa An toàn thông tin – Học viện Kỹ thuật mật mã Hà Nội, 12/2017 I MỤC LỤC Lời nói đầu....................................................................................................................... 1 Chương 1: Tổng quan.....................................................................................................2 1. Giới thiệu couchbase...............................................................................................2 2. Giao diện lập trình thống nhất.................................................................................3 3. Truy vấn..................................................................................................................3 4. Tìm kiếm toàn văn...................................................................................................4 5. Nền tảng di động và nền tảng IoT............................................................................4 6. Phân tích..................................................................................................................4 7. Cơ sở dữ liệu Core...................................................................................................4 8. Kiến trúc Scale-out..................................................................................................5 9. Kiến trúc bộ nhớ ưu tiên..........................................................................................6 10. Dữ liệu lớn và tích hợp SQL................................................................................6 11. An toàn toàn bộ ngăn xếp.....................................................................................6 12. Triển khai container và đám mây.........................................................................7 13. Tính sẵn sàng cao.................................................................................................7 14. Tóm lược.............................................................................................................. 8 Chương 2: Hệ quản trị cơ sở dữ liệu couchbase............................................................9 1. Tổng quan................................................................................................................9 2. Mô hình dữ liệu.......................................................................................................9 2.1. Mô hình dữ liệu hướng tài liệu..........................................................................9 2.2. Sơ đồ động......................................................................................................11 2.3. Cân nhắc thiết kế tài liệu.................................................................................12 2.4. Normalization và denormalization..................................................................13 3. Truy cập dữ liệu.....................................................................................................14 3.1. Sự hoạt động của key- value...........................................................................14 II 3.2. Các view MapReduce.....................................................................................15 3.3. Truy vấn với N1QL.........................................................................................16 3.4. Tìm kiếm toàn văn..........................................................................................18 4. Sự khác biệt giữa N1QL và SQL...........................................................................19 4.1. Mô hình dữ liệu...............................................................................................19 4.2. Chiếu dữ liệu...................................................................................................20 4.3. Lựa chọn dữ liệu.............................................................................................22 4.4. Lọc dữ liệu......................................................................................................22 5. Lập chỉ mục...........................................................................................................23 6. Quản lý dữ liệu......................................................................................................25 6.1. Thuộc tính nguyên tử......................................................................................25 6.2. Tính nhất quán và độ bền................................................................................25 6.3. Sự nhất quán của chỉ mục và bản sao..............................................................27 6.4. Tunable Durability Requirements...................................................................27 6.5. Truy cập đồng thời..........................................................................................28 6.6. Tài liệu hết hạn...............................................................................................28 Chương 3: Bảo mật trong Coachbase..........................................................................29 1. Tổng quan..............................................................................................................29 2. Chứng thực bằng chứng chỉ...................................................................................29 2.1. Điều kiện chứng thực......................................................................................30 2.2. Bật tính năng xác thực dựa trên chứng chỉ x.509 trên máy chủ.......................30 3. Xác thực bằng mật khẩu........................................................................................32 3.1. Xác thực cho Quản trị viên.............................................................................32 3.2. Xác thực cho các ứng dụng.............................................................................33 3.3. Cơ chế xác thực mật khẩu...............................................................................33 4. Ủy quyền...............................................................................................................34 III 4.1. RBAC dành cho Quản trị viên........................................................................34 4.2. RBAC cho các ứng dụng................................................................................35 4.3. Quản lý người dùng RBAC.............................................................................35 4.4. Tài nguyên Dưới Điều khiển Truy cập............................................................35 4.5. Nâng cấp lên RBAC........................................................................................35 5. Kiểm tra.................................................................................................................36 5.1. Các sự kiện kiểm tra........................................................................................36 5.2. Các đối tượng cần kiểm tra.............................................................................38 6. Mã hóa...................................................................................................................40 6.1. Mã hóa lúc ngừng hoạt động...........................................................................41 6.2. Mã hóa đối tượng............................................................................................41 6.3. Mã hóa trong ứng dụng...................................................................................44 6.4. Secret-Management........................................................................................45 Kết luận..........................................................................................................................46 Tài liệu tham khảo.........................................................................................................47 IV Danh mục hình vẽ Hình 1. Mô hình quan hệ cho lịch trình chuyến bay.......................................................10 Hình 2. Mô hình dữ liệu hướng dẫn tài liệu cho việc đặt chuyến bay.............................11 Hình 3. Xác minh chứng chỉ...........................................................................................43 Hình 4. Chọn chứng chỉ gốc trong vai trò Quản trị viên.................................................43 Hình 5. Chứng chỉ gốc (minh họa).................................................................................44 V Lời nói đầu Trong vài năm qua chúng ta đã thấy sự gia tăng của một loại cơ sở dữ liệu mới, đó là cơ sở dữ liệu NoSQL - mà đang thách thức sự thống trị của cơ sở dữ liệu quan hệ. Cơ sở dữ liệu quan hệ đã thống trị ngành công nghiệp phần mềm trong một thời gian dài khi đã cung cấp cơ chế để lưu trữ dữ liệu liên tục, đồng thời kiểm soát, giao dịch, giao diện được chuẩn hóa và được tích hợp vào các hệ thống dữ liệu ứng dụng, báo cáo. Tuy nhiên, ưu thế đó đã không còn tồn tại cho cơ sở dữ liệu quan hệ nữa. Nội dung báo cáo này sẽ tập trung vào ứng dụng của NoSQL và các vấn đề bảo mật xung quanh nó. Chúng em xin chân thành cảm ơn cô Nguyễn Thị Lượng đã tận tình hướng dẫn và đưa ra những nhận xét giúp báo cáo của nhóm được hoàn thiện hơn. VI Chương 1: Tổng quan 1. Giới thiệu couchbase Các ứng dụng quan trọng ngày nay đòi hỏi hỗ trợ hàng triệu tương tác với người dùng cuối. Các cơ sở dữ liệu truyền thống đã được xây dựng từ lâu, được thiết kế cho tính nhất quán và kiểm soát nhưng thiếu tính linh hoạt và khả năng mở rộng. Để đáp ứng các yêu cầu này các tổ chức buộc phải triển khai nhiều loại cơ sở dữ liệu, dẫn đến việc phải dùng nhiều cơ sở dữ liệu và không hiệu quả, chậm trễ và trải nghiệm không cao. Các cơ sở dữ liệu thực tế được lưu trữ trên điện toán đám mây. Một nền tảng quản lý dữ liệu đám mây mang lại cho bạn một lợi thế cạnh tranh cao. Các doanh nghiệp nhận ra rằng các ứng dụng chưa đáp ứng đầy đủ được yêu cầu của khách hàng. Giao diện ứng dụng chỉ là sự trải nghiệm ban đầu chưa phải là điều quan trọng nhất, cơ sở dữ liệu bên dưới mới là cốt lõi. Cơ sở dữ liệu Engagement tạo ra nhiều sự tương tác và trải nghiệm bằng cách giải phóng toàn bộ tiềm năng của dữ liệu, ở bất kỳ quy mô nào, qua bất kỳ kênh hoặc thiết bị nào, để thúc đẩy một mối quan hệ có ý nghĩa hơn. Couchbase Server là một phần mềm nguồn mở, phân tán. Nó cho thấy một kho lưu trữ giá trị nhanh với bộ nhớ cache được quản lý cho các hoạt động dữ liệu dưới mili giây, trình tạo chỉ mục cho các truy vấn nhanh và một công cụ truy vấn mạnh mẽ để thực hiện các truy vấn giống như SQL. Đối với môi trường di động và Internet, Couchbase cũng chạy trực tiếp trên thiết bị và quản lý đồng bộ hóa với máy chủ. Couchbase Server chuyên cung cấp công cụ quản lý dữ liệu có độ trễ thấp cho các ứng dụng tương tác web, di động và IoT quy mô lớn. Các yêu cầu chung của Couchbase Server được thiết kế để thỏa mãn bao gồm: - Giao diện lập trình thống nhất - Truy vấn - Tìm kiếm VII - Mobile và IoT - Phân tích - Công cụ cơ sở dữ liệu lõi - Kiến trúc bộ nhớ đầu tiên - Dữ liệu lớn và tích hợp SQL - Bảo mật toàn stack - Triển khai container và đám mây - Tính sẵn sàng cao 2. Giao diện lập trình thống nhất Couchbase Data Platform cung cấp các API phát triển ứng dụng đơn giản, thống nhất và mạnh mẽ trên nhiều ngôn ngữ lập trình, cách kết nối và các công cụ làm cho các ứng dụng xây dựng đơn giản và đẩy nhanh thời gian cho ra mắt các ứng dụng. Couchbase rất đơn giản để triển khai và quản lý. Các tính năng như sao lưu được tích hợp sẵn và tự động. Sự thay đổi cấu trúc liên kết xảy ra minh bạch mà không cần thay đổi ứng dụng hoặc các nút Couchbase khác. Mỗi nút Couchbase Server bao gồm phần mềm hoàn toàn giống hệt nhau, tự động hóa dễ dàng. Toàn bộ cụm được quản lý thông qua một bảng điều khiển duy nhất dành cho quản trị viên, cung cấp việc mở rộng cụm và cân bằng lại. Ngay cả những công nghệ tiên tiến, chẳng hạn như nhân rộng trung gian dữ liệu, có thể được cấu hình với một cú nhấn chuột trong Couchbase Web Console. 3. Truy vấn Cung cấp nhiều đường truy cập dữ liệu để truy vấn và quản lý tài liệu JSON. Nhà phát triển ứng dụng có thể chọn mô hình truy cập dữ liệu đáp ứng tốt nhất yêu cầu của họ. Đường dẫn truy cập dữ liệu linh hoạt làm cho Couchbase hữu ích cho nhiều ứng dụng và trường hợp sử dụng. Couchbase Server có thể được truy vấn bằng cách sử dụng N1QL, một phương ngữ SQL thể hiện, mạnh mẽ và đầy đủ để truy vấn, chuyển đổi và điều VIII khiển dữ liệu JSON. Như SQL, nó ngay lập tức quen thuộc với các nhà phát triển những người có thể nhanh chóng bắt đầu phát triển các ứng dụng phong phú. Không giống như các cơ sở dữ liệu NoSQL khác, Couchbase hỗ trợ JOIN, cho phép một loạt các mô hình dữ liệu. Để giúp người dùng phát triển các ứng dụng phong phú với sự linh hoạt, N1QL được hỗ trợ bởi một cơ sở hạ tầng chỉ mục phong phú và cũng có các phần mở rộng cho phép xử lý các tài liệu không đồng nhất với cấu trúc lồng nhau. N1QL có thể truy cập vào một loạt các công cụ để phân tích và tích hợp dữ liệu thông qua JDBC và ODBC, chẳng hạn như Microsoft Excel và Tableau. 4. Tìm kiếm toàn văn Tích hợp tìm kiếm toàn văn giúp đơn giản hóa cho các nhà phát triển thêm sự thông minh vào ứng dụng. Các chỉ mục văn bản đầy đủ được quản lý tự động trong Couchbase cluster, tránh thời gian trễ, chi phí và phức tạp trong việc quản lý một sản phẩm tìm kiếm và cơ sở hạ tầng riêng. 5. Nền tảng di động và nền tảng IoT Cung cấp nền tảng dữ liệu đầy đủ cho các ứng dụng di động và IoT của bạn, đồng bộ hóa dữ liệu trong thời gian thực, bảo mật cấp doanh nghiệp và tích hợp dữ liệu vào hệ sinh thái của bạn. 6. Phân tích Couchbase analytics cung cấp xử lý truy vấn song song mạnh mẽ. Được thiết kế để thực hiện hiệu quả các truy vấn phức tạp, dài có chứa join phức tạp, thiết lập, tập hợp và hoạt động nhóm. Giải quyết các thách thức của việc hỗ trợ ứng dụng đáp ứng, khả năng mở rộng và phân tích đặc biệt trên cùng tập dữ liệu. 7. Cơ sở dữ liệu Core Công cụ cơ sở dữ liệu lõi cung cấp các khả năng cơ bản cho việc quản lý và lập chỉ mục tài liệu. Dựa trên bộ nhớ thứ nhất, cấu trúc bất đồng bộ ở mọi nơi, điều IX này bao gồm các năng lực cốt lõi của công cụ cơ sở dữ liệu, như: lưu trữ dữ liệu, sao chép liên nút. Tài liệu Couchbase là JSON, một định dạng tự mô tả có thể biểu diễn các cấu trúc và mối quan hệ phong phú. Không giống như RDBMS truyền thống, lược đồ trong Couchbase Server là một cấu trúc logic được định nghĩa hoàn toàn trong mã ứng dụng và được lưu giữ trong cấu trúc của các tài liệu lưu trữ. Vì không có giản đồ rõ ràng để duy trì, các nhà phát triển có thể thêm các đối tượng và thuộc tính mới vào bất kỳ lúc nào chỉ bằng cách đẩy mã ứng dụng mới lưu trữ JSON mới mà không cần phải thực hiện các thay đổi tương tự cho các lược đồ. Điều này cho phép các ứng dụng phát triển nhanh chóng và liền mạch. Couchbase là một cơ sở dữ liệu tham gia phục vụ các yêu cầu của khách hàng ở quy mô internet. Điều này tương phản với các cơ sở dữ liệu phân tích như Hadoop và Spark và các môi trường học máy mà các nhà phân tích hoặc các nhà khoa học dữ liệu truy cập được có thể chịu đựng được độ trễ lớn hơn. 8. Kiến trúc Scale-out Để cung cấp những trải nghiệm khách hàng đặc biệt, bạn cần phải đảm bảo rằng cơ sở dữ liệu tham gia của bạn luôn luôn hoạt động, luôn đáp ứng và có thể mở rộng để đáp ứng các khối lượng công việc thay đổi. Couchbase cung cấp tích hợp trong lưu trữ và xử lý dữ liệu. Kiến trúc này đảm bảo rằng ứng dụng luôn hoạt động bằng cách cung cấp khả năng phát hiện và phục hồi từ sự cố phần cứng và mạng. Couchbase được thiết kế để dễ dàng mở rộng các phần cứng và có hiệu quả về phần cứng hơn các cơ sở dữ liệu NoSQL khác. Nhân rộng và sharding là những tính năng cơ bản của Couchbase Server. Nó tự động phân phối dữ liệu qua các nút trong cluster. Do đó, cơ sở dữ liệu có thể phát triển theo chiều ngang để chia sẻ tải bằng cách thêm RAM, đĩa và dung lượng CPU mà không làm tăng gánh nặng cho các nhà phát triển và quản trị viên. Couchbase Server đạt hiệu suất phần cứng cao bằng cách sử dụng I / O không đồng bộ, không khóa ở tất cả các cấp để sử dụng X hiệu quả các tài nguyên máy chủ. Điều này tối đa hoá cả I / O lưu trữ và số lượng khách hàng kết nối đồng thời trên mỗi nút. Couchbase kiến trúc đảm bảo rằng khối lượng công việc được phân bố đều trên các nút cluster, giảm tắc nghẽn và cho phép người dùng tận dụng các phần cứng có sẵn. 9. Kiến trúc bộ nhớ ưu tiên Khách hàng mong đợi và yêu cầu ứng dụng nhanh, đáp ứng đủ như cầu. Nền tảng dữ liệu Couchbase cung cấp một kiến trúc có hiệu suất cao, đảm bảo rằng tất cả các hoạt động xảy ra trong bộ nhớ và cung cấp các tùy chọn quản lý dữ liệu tối ưu hóa bộ nhớ. Couchbase được thiết kế để xử lý lưu lượng truy cập dữ liệu trực tuyến - đọc và viết lớn cho các ứng dụng web, di động và IoT hiện đại. Đối với Couchbase, độ trễ thấp ở quy mô thường dùng để chỉ các lần đọc và viết một phần không đổi của mili giây. Mặc dù tốc độ thô tối đa rất quan trọng nhưng nhiều người lại quan tâm đếntốc độ cao và thời gian trễ thấp với sự khác biệt tối thiểu trong khối lượng công việc. Couchbase tiếp tục cung cấp hiệu suất cao nhất kể cả khi chịu tải nặng. Khả năng dự đoán và nhất quán đảm bảo đáp ứng và cải thiện trải nghiệm người dùng trong triển khai thực tế. Couchbase Server là một hệ thống tập trung vào bộ nhớ, giúp lưu trữ các tài liệu, siêu dữ liệu và các chỉ mục thường xuyên truy cập trong RAM, thông qua khả năng đọc / ghi cao ở độ trễ rất thấp. Những khả năng này phát sinh từ Couchbase của đối tượng quản lý tích hợp bộ nhớ cache mà là một bảng băm phân phối với khả năng tương thích memcached đầy đủ. Cơ sở dữ liệu tài liệu làm cho việc sử dụng nặng của đối tượng được quản lý bộ nhớ cache. 10.Dữ liệu lớn và tích hợp SQL Couchbase Data Platform bao gồm tích hợp Big Data và tích hợp SQL, cho phép bạn tận dụng các công cụ, khả năng xử lý, và dữ liệu bất cứ nơi nào nó có thể lưu trữ. 11.An toàn toàn bộ ngăn xếp XI Bảo vệ dữ liệu khách hàng là điều bắt buộc, cả từ việc tuân thủ và từ góc nhìn truy cập dữ liệu cơ bản. Couchbase Data Platform cung cấp dữ liệu an toàn ở mọi nơi - trên dây, trên thiết bị, trong đám mây và trong trung tâm dữ liệu. XII 12.Triển khai container và đám mây Các doanh nghiệp đang nhanh chóng áp dụng chiến lược điện toán đám mây để tạo ra và cung cấp sự đổi mới nhanh hơn và thích nghi với sự thay đổi liên tục trong nhu cầu kinh doanh. Couchbase hỗ trợ tất cả các nền tảng đám mây, cũng như một loạt các container và các công nghệ ảo hóa để hoạt động. 13.Tính sẵn sàng cao Được xây dựng với sự nhấn mạnh về độ tin cậy, tính sẵn sàng cao và quản lý đơn giản, một tính năng quan trọng của Couchbase Server là tất cả các hoạt động đều có thể được thực hiện trong khi hệ thống vẫn trực tuyến mà không cần phải sửa đổi hay làm gián đoạn các ứng dụng đang chạy. Hệ thống không bao giờ cần phải được thực hiện ngoại tuyến để bảo trì thường xuyên như nâng cấp phần mềm, xây dựng chỉ mục, nén dữ liệu, làm mới phần cứng, hoặc bất kỳ hoạt động khác. Ngay cả việc cung cấp hoặc gỡ bỏ các nút có thể được thực hiện hoàn toàn trực tuyến mà không bị gián đoạn chạy các ứng dụng và không yêu cầu các nhà phát triển sửa đổi các ứng dụng của họ. Không kém phần quan trọng, Couchbase Server được xây dựng trong các cơ chế chịu lỗi chống lại thời gian chết do sự cố bất ng, bao gồm cả sự ngưng hoạt động của máy chủ. Nhân rộng và chuyển đổi dự phòng là những cơ chế quan trọng làm tăng tính khả dụng của hệ thống. Máy chủ Couchbase sao chép dữ liệu qua nhiều nút để hỗ trợ chuyển đổi dự phòng. Đảm bảo rằng các bản sao bổ sung của dữ liệu có sẵn được tự động để đối phó với những sự gián đoạn không thể tránh khỏi mà hệ thống phân phối lớn được thiết kế để phục hồi. Tất cả điều này được thực hiện tự động mà không cần can thiệp bằng tay hoặc thời gian chết. Toàn bộ Couchbase Server clusters có thể được sao chép đến một hoặc nhiều vị trí địa lý thay thế bằng cách sử dụng Cross Data Center Replication (XDCR), một công nghệ cung cấp tính sẵn sàng cao, phục hồi thảm họa và cân bằng tả. XDCR giải quyết những thách thức duy nhất vốn có trong việc liên kết các cụm liên quan đến mạng diện rộng (WAN) chứ không chỉ đơn giản là mở rộng việc sao chép cụm địa phương qua mạng WAN. XIII 14.Tóm lược Nhiều cơ sở dữ liệu có thể thỏa mãn một hoặc nhiều các yêu cầu này nhưng đòi hỏi sự cân bằng khi chạy với các ứng dụng quan trọng trên phạm vi internet. Ví dụ, một giải pháp có thể mang lại tính linh hoạt cho mô hình dữ liệu, có thể rất linh hoạt trong mô hình dữ liệu nhưng không có khả năng thêm hoặc xoá các nút mà không có ảnh hưởng nghiêm trọng đến sự hoạt động. Một giải pháp khác có thể chứng minh khả năng mở rộng tốt mà không có khả năng lập chỉ mục và thay đổi mô hình dữ liệu khi đang di chạy. Couchbase Server được thiết kế để cung cấp trải nghiệm nhà phát triển tuyệt vời và quản lý dễ dàng trong khi vẫn cung cấp hiệu suất vượt trội ở quy mô khác nhau, cho dù trong đám mây, trong một container, tại chỗ hoặc trên các thiết bị khác. XIV Chương 2: Hệ quản trị cơ sở dữ liệu couchbase 1. Tổng quan Couchbase Server là một cơ sở dữ liệu hướng tài liệu NoSQL mã nguồn mở cung cấp quản lý dữ liệu độ trễ thấp cho các ứng dụng trực tuyến tương tác quy mô lớn. Nó được thiết kế để quy mô dễ dàng và hiệu suất cao, được xây dựng với sự nhấn mạnh về độ tin cậy, tính sẵn sàng cao và quản lý đơn giản, Couchbase phục vụ dữ liệu liên tục với sự can thiệp tối thiểu của nhà phát triên. Couchbase Server có thể được sử dụng như là một: - Bộ nhớ đệm được quản lý - Một nơi lưu trữ key- value - Một cơ sở dữ liệu hướng tài liệu Couchbase Server cùng với Couchbase Mobile cho phép các doanh nghiệp tăng linh hoạt của doanh nghiệp, đạt được thời gian nhanh hơn để phục vụ thị trường và hoạt động trên quy mô toàn cầu đồng thời giảm chi phí. Couchbase giúp đáp ứng các yêu cầu cho nhiều nhu cầu khác nhau, từ doanh nghiệp sang cơ sở hạ tầng đám mây, đến Internet of Things và dữ liệu lớn, cho các thiết bị di động. 2. Mô hình dữ liệu 2.1. Mô hình dữ liệu hướng tài liệu Tài liệu được lưu trữ trong Couchbase Server ở định dạng JSON, một ký pháp đơn giản, nhẹ gọn và nhỏ gọn có thể đọc được của con người. JSON hỗ trợ cả hai kiểu dữ liệu cơ bản như số và chuỗi và các kiểu phức tạp như từ điển và mảng nhúng. Có một số lợi thế khi sử dụng JSON làm định dạng dữ liệu trong Couchbase. JSON là trung gian của việc trao đổi dữ liệu trong các ứng dụng di động và trên web: đây là loại trả về API REST phổ biến nhất. Do tính phổ biến này, JSON rất dễ dàng và hiệu quả để tạo và sử dụng từ bất kỳ ngôn ngữ lập trình XV nào. Serialization và deserialization rất nhanh. JSON là nguồn gốc của JavaScript, điều này làm cho nó rất thuận tiện cho việc lập trình ứng dụng web. Trong Couchbase, một tài liệu thường đại diện cho một thể hiện duy nhất của một đối tượng trong mã ứng dụng. Tài liệu Couchbase giống như các hàng trong một bảng quan hệ: mỗi một là một bản ghi. Mỗi thuộc tính giống như một cột trong bảng. Không giống như một bảng quan hệ, tuy nhiên, các tài liệu của các lược đồ khác nhau có thể được lưu trữ trong Couchbase. Nếu một ứng dụng muốn phân biệt giữa nhiều loại, có thể thực hiện một số cách tiếp cận (như thêm trường 'type' trong một tài liệu, như được hiển thị bên dưới). Tài liệu couchbase bản thân có thể chứa các cấu trúc lồng nhau (tiểu tài liệu). Điều này cho phép các nhà phát triển dễ dàng thể hiện các mối quan hệ nhiều-nhiều mà không đòi hỏi phải có một "bảng tham chiếu" hoặc "bảng giao lộ". Nó cũng diễn tả cho dữ liệu phân cấp tự nhiên. Để hiểu mô hình tài liệu trên thực tế, hãy suy nghĩ về một đơn đặt chỗ chuyến bay trực tuyến cho phép người sử dụng tìm kiếm các chuyến bay theo ngày tháng. Trong một mô hình dữ liệu quan hệ, sẽ có các bảng cho các hãng hàng không, chuyến bay và lịch trình trong số nhiều người khác có thể trông giống như hình dưới đây. Hình 1. Mô hình quan hệ cho lịch trình chuyến bay XVI Tuy nhiên, trong Couchbase, mô hình hướng tài liệu có thể là một đối tượng tuyến đường duy nhất nhúng một mảng lịch cho tất cả các chuyến bay giữa hai sân bay. Hình 2. Mô hình dữ liệu hướng dẫn tài liệu cho việc đặt chuyến bay Trái ngược với mô hình quan hệ, mỗi tài liệu tuyến đường đều chứa một yêu cầu duy nhất cho một nút Couchbase có thể trả lại tất cả các thông tin cần thiết để hoàn thành yêu cầu của ứng dụng. Sự độc lập của các tài liệu có ý nghĩa quan trọng đối với khả năng mở rộng và độ trễ. Ví dụ, các tài liệu có thể dễ dàng sao chép hoặc thay đổi mà không ảnh hưởng đến bất kỳ tài liệu nào khác. Điều này cho phép Couchbase theo chiều ngang bằng cách sử dụng một nhóm các phần cứng mà không cần yêu cầu các nút phải phối hợp để đáp ứng yêu cầu của ứng dụng. 2.2. Sơ đồ động Trong Couchbase, khi chúng ta đề cập đến một giản đồ, chúng ta đề cập đến cách ứng dụng cấu trúc các tài liệu của nó. Trái với RDBMS truyền thống, các lược đồ trong Couchbase được xác định và quản lý hoàn toàn bởi ứng dụng. Các tài liệu Couchbase lấy các lược đồ chỉ từ cấu trúc của JSON. Thay vì cơ sở dữ liệu thực thi lược đồ và yêu cầu tất cả dữ liệu thống nhất, Couchbase (và NoSQL nói chung) chuyển điều khiển này sang ứng dụng và đơn giản hóa nó ở mức cơ sở dữ liệu. Thiết kế này cho phép thay đổi giữa các tài liệu, thậm chí các tài liệu cùng loại. Hãy xem xét một cửa hàng bán lẻ trực tuyến lớn có chứa nhiều XVII sản phẩm văn phòng, chẳng hạn như bút và máy in laser. Mặc dù nhiều thuộc tính như kích thước hoặc trọng lượng sẽ áp dụng cho cả hai mặt hàng, chỉ một số tài liệu cần có các thuộc tính như "kiểu kết nối" và "in hai mặt". Với Couchbase Server, không cần phải tạo ra vô số các thuộc tính null hoặc để xác định hàng trăm các lược đồ khác nhau để xử lý các dữ liệu đó - các thuộc tính cần thiết có thể được đưa vào các tài liệu cần đến và chỉ cần bỏ đi những tính năng không cần thiết. Các tài liệu lược đồ linh hoạt cũng phù hợp với dữ liệu có kích thước khác nhau, chẳng hạn như ví dụ đặt chỗ chuyến bay ở trên: không có gì khác biệt khi một số tài liệu định tuyến chứa hàng ngàn chuyến bay theo lịch trình và một số khác chỉ có một vài chuyến bay. Vì một lược đồ trong Couchbase là một cấu trúc logic được xác định bởi ứng dụng nên các lược đồ vì vậy là động - chúng thay đổi cùng với ứng dụng của bạn, cho phép nó thực sự nhanh nhẹn. Đối với người lập trình, lợi ích quan trọng của các lược đồ linh hoạt là các đối tượng có thể được định nghĩa một lần trong mã ứng dụng hơn là cần phải được xác định và giữ đồng bộ trong cả hai mã ứng dụng và riêng trong một giản đồ cơ sở dữ liệu. Không giống như một RDBMS truyền thống với một giản đồ cố định, một lập trình viên có thể thêm thuộc tính hoặc cấu trúc vào một số tài liệu mà không cần quay lại và thêm chúng vào các tài liệu khác cùng loại. Bằng cách này, các ứng dụng có thể phát triển mà không yêu cầu lập trình thay đổi cấu trúc của các bảng bên dưới, quản lý phiên bản lược đồ hoặc chịu rắc rối về di chuyển lược đồ. Lợi thế cho một giản đồ ứng dụng được xác định là rõ ràng trong các ứng dụng lớn và lâu dài. Các nhà phát triển có thể thay đổi mã ứng dụng và có giản đồ được cập nhật ngay lập tức được lưu trữ và truy cập được. Tài liệu có thể phát triển liên tục theo thời gian khi ứng dụng web thay đổi. 2.3. Cân nhắc thiết kế tài liệu Các tài liệu linh hoạt giúp cho việc xây dựng lược đồ trở nên dễ dàng hơn nhưng vẫn cần thiết kế JSON để có hiệu suất và khả năng mở rộng tốt nhất. Câu hỏi chính là có bao nhiêu thông tin để đưa vào một tài liệu duy nhất. Tốt hơn là có XVIII ít tài liệu phong phú hơn nhúng thông tin phức tạp, hoặc nhiều hơn, các tài liệu đơn giản hơn tham khảo các tài liệu đơn giản được duy trì độc lập khác? Để trả lời câu hỏi này, hãy xem xét các mẫu truy cập thông tin và cách các đối tượng được quản lý trong mã ứng dụng. Thuộc tính nhóm với nhau phải được truy cập hoặc viết đồng thời thông thường mang lại khả năng mở rộng tốt nhất và hiệu năng: tất cả các thông tin đều được đọc hoặc ghi trong một thao tác, tính nguyên tử được cải thiện bởi vì tất cả các đột biến xảy ra cùng một lúc và khả năng mở rộng cải thiện vì có ít mối quan hệ giữa các đối tượng. Thuộc tính nhóm lại với nhau cũng đảm bảo rằng chúng vẫn phù hợp với nhau - các thuộc tính liên quan đến logic, miễn là chúng tồn tại trong cùng một tài liệu, có thể được đọc và cập nhật vĩ mô. Mặt khác, nhiều tài liệu đơn giản thường nên được ưa chuộng khi các mẫu truy cập có thể dự đoán được và kích thước của thông tin được vận chuyển cần phải được giữ càng nhỏ càng tốt để giảm thiểu việc sử dụng mạng. Tài liệu cũng có thể thiết lập các mối quan hệ cơ bản với các tài liệu khác. Sử dụng JOIN bạn có thể dễ dàng lấy các tài liệu và tài liệu liên quan qua N1QL, ngôn ngữ truy vấn Couchbase (SQL-like). Có khả năng này liên quan đến năng lực được xây dựng để N1QL làm cho đề cập đến các tài liệu khác đáng kể đơn giản hơn trong Couchbase nhưng trái ngược với các cơ sở dữ liệu NoSQL khác. 2.4. Normalization và denormalization Vì lý do hiệu suất, Couchbase khuyến khích người dùng giữ lại dữ liệu được truy cập cùng nhau, mặc dù nó có thể dẫn đến nhân bản, lặp lại giá trị, hoặc các giá trị phi nguyên tử. Các ràng buộc bình thường mang lại khả năng mở rộng tốt hơn và hiệu suất truy vấn với chi phí nhỏ có thể làm tăng kích thước dữ liệu. XIX 3. Truy cập dữ liệu Couchbase cung cấp nhiều cách truy cập dữ liệu: sử dụng mẫu truy cập giá trị khóa, truy vấn dữ liệu bằng MapReduce (lượt xem) hoặc N1QL. Bạn cũng có thể sử dụng tính năng Tìm kiếm Toàn văn (FTS) để truy vấn dữ liệu. Ở cấp độ cao, truy cập khóa-giá trị cung cấp đường dẫn truy cập hiệu năng cao trực tiếp đến dữ liệu bằng cách sử dụng khoá cho mục được lưu trữ. Đối với các ứng dụng đang tìm thời gian trễ milli giây lẻ, phương pháp giá trị khóa cung cấp truy cập nhanh nhất dữ liệu của bạn. Tuy nhiên, không phải tất cả các truy cập dữ liệu có thể có một chìa khóa trong tay và đó là nơi các truy vấn đi vào. Các truy vấn có thể được thực hiện bằng cách sử dụng xem MapReduce và N1QL. N1QL cung cấp một ngôn ngữ truy vấn linh hoạt và khai báo giống như truy cập SQL được cung cấp bởi cơ sở dữ liệu quan hệ. N1QL thật tuyệt vời để truy cập nhanh vào dữ liệu của bạn cho các hoạt động như tra cứu thứ cấp về các thuộc tính trong tài liệu JSON của bạn. Ví dụ: tra cứu người dùng bằng địa chỉ email người dùng và không phải là userID được sử dụng cho khoá tài liệu. Chế độ xem cũng cung cấp một cách mạnh mẽ để lập chỉ mục dữ liệu với bản đồ do người dùng định nghĩa và giảm chức năng. Chế độ xem có thể là một lựa chọn mạnh mẽ để tái tạo lại và tập hợp dữ liệu trước. Chế độ xem là giải pháp lý tưởng để báo cáo tương tác dữ liệu của bạn. 3.1. Sự hoạt động của key- value Trung tâm của Couchbase phân phối giá trị khóa (KV) lưu trữ. Nơi lưu trữ KV là một cách tiếp cận rất đơn giản, ít lược đồ để quản lý dữ liệu, như tên của nó, lưu trữ một ID duy nhất (chìa khóa) cùng với một mẩu thông tin tùy ý (giá trị); nó có thể được nghĩ như là một bản đồ băm hoặc từ điển. KV chính nó có thể chấp nhận bất kỳ dữ liệu nào, dù là một blob nhị phân hay một tài liệu JSON, và các tính năng Couchbase như N1QL và MapReduce tận dụng khả năng xử lý các tài liệu JSON của kho lưu trữ KV. Do tính đơn giản của chúng, các thao tác KV thực hiện với độ trễ cực thấp, thường dưới mili giây. Mặc dù dịch vụ truy vấn được truy cập bởi một ngôn ngữ XX
- Xem thêm -

Tài liệu liên quan