CouchBase FINAL [PDF]

  • 0 0 0
  • Gefällt Ihnen dieses papier und der download? Sie können Ihre eigene PDF-Datei in wenigen Minuten kostenlos online veröffentlichen! Anmelden
Datei wird geladen, bitte warten...
Zitiervorschau

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

truy vấn được định nghĩa (N1QL), cửa hàng KV được truy cập bằng cách sử dụng các API đơn giản (Tạo, Đọc, Cập nhật, Xóa) và do đó cung cấp một giao diện đơn giản hơn khi truy cập các tài liệu sử dụng các ID của chúng . Kho lưu trữ KV chứa trạng thái cập nhật mới nhất cho mỗi mặt hàng. Để thực hiện tốt hơn, truy vấn và các dịch vụ MapReduce cung cấp cuối cùng các chỉ mục thống nhất mà theo mặc định sử dụng một phiên bản dữ liệu có khả năng hơi lỗi thời. Tuy nhiên, có thể chọn để đợi một thời gian ngắn để đảm bảo đã có cơ hội cập nhật trước khi trả lời truy vấn. Ngược lại, truy vấn kho lưu trữ KV trực tiếp sẽ luôn truy cập vào phiên bản mới nhất của dữ liệu. 3.2.

Các view MapReduce

Các nhà phát triển có thể viết các chương trình JavaScript MapReduce tùy chỉnh để xác định chỉ mục phức tạp và tập hợp các mục được lưu trữ trong Couchbase. MapReduce là một mô hình lập trình để xử lý dữ liệu phân tán trên dữ liệu có độ song song cao: chức năng bản đồ đọc tất cả các tài liệu trong toàn bộ cụm, lọc chúng để chọn các thông tin có liên quan và sau đó phát ra các kết quả; các loại chức năng giảm tải và kết hợp các kết quả. MapReduce hữu ích nhất cho việc xử lý dữ liệu tùy biến cao trên các bộ đầu vào lớn. Xử lý dữ liệu MapReduce là gia tăng, do đó đầu ra tiếp tục cập nhật khi dữ liệu cơ bản trải qua sự đột biến. Các lập trình viên cũng có thể viết các chương trình không gian MapReduce hoạt động trên các dữ liệu hình học dưới dạng GeoJSON, dữ liệu số n chiều (hyper-cubes) hoặc kết hợp cả hai. Điều này có thể được sử dụng để xử lý các truy vấn về hình học, ví dụ, để trả lại một danh sách tất cả các mục trong một hộp giới hạn cụ thể. Các chương trình MapReduce xuất ra các Chế độ xem MapReduce hoặc Chế độ Không gian, được mô tả thêm trong Lập chỉ mục. Mặc dù N1QL cung cấp một giao diện truy vấn phong phú hơn, các ứng dụng sẽ sử dụng kho lưu trữ KV khi tốc độ, tính nhất quán, và mẫu truy cập đơn giản được ưa thích hơn các tùy chọn truy vấn linh hoạt. XXI

Tất cả các hoạt động KV là vi mô, có nghĩa là Đọc và Cập nhật là các hoạt động cá nhân. Để tránh xung đột có thể nảy sinh với nhiều bản cập nhật đồng thời cho cùng một tài liệu, các ứng dụng có thể sử dụng Compare-And-Swap (CAS), là một checksum cho mỗi tài liệu mà Couchbase sửa đổi mỗi lần khi một tài liệu được thay đổi. 3.3.

Truy vấn với N1QL

Couchbase Server có thể được lập trình bằng cách sử dụng SQL. Cho rằng gần như tất cả các lập trình viên đã biết SQL, hầu hết các nhà phát triển sẽ có thể bắt đầu một cách nhanh chóng trên Couchbase. Và vì hầu hết các tổ chức đã có số lượng đáng kể mã SQL, Couchbase Server phù hợp công nghệ hiện tại một cách dễ dàng. Hỗ trợ SQL bằng trình điều khiển JDBC và ODBC mở ra hệ sinh thái gồm các công cụ để phân tích và tích hợp dữ liệu như Microsoft Excel và Tableau. N1QL là ngôn ngữ truy vấn đầu tiên thúc đẩy sự linh hoạt hoàn toàn của JSON với toàn bộ sức mạnh của SQL. Được phát triển bởi Couchbase để sử dụng với Couchbase Server, N1QL cung cấp một ngôn ngữ truy vấn chung và mô hình dữ liệu dựa trên JSON cho các cơ sở dữ liệu định hướng tài liệu phân tán. Couchbase đã tạo ra phương ngữ SQL riêng gọi là N1QL để cung cấp cho các nhà phát triển và doanh nghiệp một ngôn ngữ biểu cảm, mạnh mẽ và đầy đủ để truy vấn, chuyển đổi và điều khiển dữ liệu JSON. Công cụ truy vấn N1QL được tối ưu hóa cho thực thi đa nhân song song, hiện đại. N1QL có các phần mở rộng đặc biệt cho phép xử lý các tài liệu có cấu trúc biến đổi và / hoặc được lồng nhau. Cũng như SQL hoạt động trên hàng, cột và bảng của một RDBMS và trả về các hàng và cột cho ứng dụng, N1QL hoạt động trên JSON và trả về JSON cho ứng dụng.

XXII

N1QL cung cấp một bộ các tính năng phong phú cho phép bạn truy xuất, thao tác, chuyển đổi và tạo dữ liệu tài liệu JSON. Các tính năng chính bao gồm: Câu lệnh SELECT: Câu lệnh SELECT trong N1QL mở rộng chức năng của câu lệnh SQL SELECT để làm việc với các tài liệu JSON. Bạn có thể sử dụng kiến thức về SQL để làm việc với các tính năng NoSQL mạnh mẽ của Couchbase, từ đó cho phép bạn làm việc với dữ liệu lớn, người dùng dữ liệu lớn và điện toán đám mây. Ngôn ngữ Thao tác Dữ liệu (DML): N1QL cung cấp các câu lệnh DELETE, INSERT, UPDATE và UPSERT để tạo, xóa và sửa đổi dữ liệu được lưu trữ trong tài liệu JSON. Bạn có thể thực hiện các thao tác này bằng cách xác định và thực hiện các lệnh đơn giản. Chỉ mục: N1QL cung cấp các câu lệnh CREATE và DROP INDEX để dễ dàng tạo và xóa các chỉ mục. Truy cập khóa chính: Dữ liệu trong Couchbase Server có thể được lưu trữ trong các cặp khóa-giá trị, cung cấp truy cập khoá chính cho bất kỳ dữ liệu nào. Tổng hợp: N1QL cung cấp các toán tử tổng hợp SQL tiêu chuẩn như MIN, MAX, COUNT, cũng như các toán tử nhóm, mệnh đề GROUP BY, và bộ lọc nhóm, HAVING. Câu lệnh join: N1QL cho phép bạn lấy dữ liệu từ nhiều tài liệu bằng cách xác định tham gia trong mệnh đề FROM. Nesting: Nest cho phép bạn lấy các bản ghi phụ cho một bản ghi. Nghĩa là, đối với mỗi đầu vào trái, đầu vào tay phải kết hợp được thu thập thành một mảng, sau đó được nhúng trong kết quả. Ví dụ: bạn có thể xếp mỗi mục theo thứ tự của khách hàng. Các tổ có thể được thực hiện trên nhiều tài liệu.

XXIII

Unnesting: Unnesting là đối lập của nesting. Hàm UNNEST chiết xuất các bản ghi phụ được lồng từ một bản ghi, làm cho mỗi bản trích xuất một bản ghi riêng biệt. Lưu ý rằng unnesting có thể được thực hiện trên một tài liệu duy nhất. Các truy vấn phụ: N1QL hỗ trợ truy vấn nhiều phần thông qua các truy vấn phụ. Bạn có thể sử dụng một truy vấn phụ với câu lệnh SELECT hoặc làm tổ đó trong một truy vấn con khác, qua đó tinh chỉnh các kết quả của các truy vấn trước. Các lệnh UNION, INTERSECT, VÀ EXCEPT: N1QL cung cấp các thao tác UNION, INTERSECT, và EXCEPT để so sánh hai hoặc nhiều truy vấn. UNION kết hợp kết quả của hai hoặc nhiều truy vấn vào một bộ kết quả duy nhất bao gồm tất cả các hàng thuộc về tất cả các truy vấn trong liên minh. EXCEPT trả về bất kỳ giá trị khác biệt nào từ truy vấn bên trái mà không tìm thấy trên truy vấn đúng. INTERSECT trả về bất kỳ giá trị khác biệt nào được trả về bởi các truy vấn trên cả hai mặt của toán hạng INTERSECT. 3.4.

Tìm kiếm toàn văn

Couchbase Server thực hiện truy vấn tìm kiếm bằng cách sử dụng Tài liệu tham khảo Toàn văn bản (Developer Preview), một công cụ tìm kiếm toàn văn tích hợp. Với Couchbase Full Text Search, bạn, với tư cách là một nhà phát triển, có thể dễ dàng thêm các khả năng tìm kiếm toàn văn vào ứng dụng của bạn mà không cần triển khai thêm các thành phần, làm giảm tính phức tạp trong hoạt động. Ngoài ra, nếu bạn đang sử dụng các công cụ tìm kiếm bên ngoài như Elasticsearch hoặc Lucidworks, bạn có thể tận dụng kết nối sẵn có để liên tục sao chép dữ liệu từ cụm máy chủ Couchbase đến các công cụ tìm kiếm.

XXIV

4. Sự khác biệt giữa N1QL và SQL Sự khác biệt quan trọng nhất giữa SQL truyền thống và N1QL là mô hình dữ liệu. Sự khác biệt nổi bật khác bao gồm chiếu, lựa chọn và lọc dữ liệu. 4.1.

Mô hình dữ liệu

Trong một cơ sở dữ liệu SQL truyền thống, dữ liệu bị ràng buộc vào các bảng có cấu trúc đồng nhất. Đây là cách một cơ sở dữ liệu nhân viên đơn giản có thể tìm trong một cơ sở dữ liệu quan hệ. Nó bao gồm hai bảng, Employee and Employers. Tên là chìa khóa chính. NHÂN VIÊN Tên

| SSN | Mức lương

----------------------------------------------------------------------Jamie | 234 | 123 Steve | 123 | 456    LƯỢC ĐỒ: Tên -> Chiều dài chuỗi 100 SSN -> Chiều dài chuỗi 9 Lương -> Số lượng có chiều dài chuỗi 10 NHÂN VIÊN: -------------------------------------------------- --------------------  Name_Key | Công ty

| Bắt đầu

  Jamie

| Yahoo

| Năm 2005 | Năm 2006

  Jamie

| Oracle

| 2006

  Jamie

| Couchbase | 2012

XXV

| Kết thúc | Năm 2012 | VÔ GIÁ TRỊ

Trong N1QL, dữ liệu tồn tại dưới dạng các tài liệu dạng tự do, được thu thập dưới dạng bộ sưu tập lớn được gọi là các khoảng khóa. Không có sự đồng nhất và không có khoảng cách hợp lý của các đối tượng có cùng một hình dạng dữ liệu trong không gian khóa. Đây là cách dữ liệu trong ví dụ trên trông trong N1QL: (HRData keyspace) { 'Name': 'Jamie' 'SSN': 234 'Wage': 123 'History': [ ['Yahoo', 2005, 2006], ['Oracle', 2006, 2012], ] }, { 'Name': Steve 'SSN': 123, 'Wage': 456, } 4.2.

Chiếu dữ liệu

Khi bạn chạy một truy vấn trong SQL, một tập các hàng bao gồm một hoặc nhiều cột được trả về. Một tiêu đề có thể được lấy ra để có được siêu dữ liệu về mỗi cột. Trong một hệ cơ sở dữ liệu quan hệ, không thể có được một tập kết quả, trong đó mỗi hàng có một bộ các cột khác nhau. Truy vấn: SELECT Name, Company FROM Employee, Employers WHERE Name_Key = Name

XXVI

Kết quả: Name | Company ---------------Jamie | Oracle Jamie | Yahoo Jamie | Couchbase ---------------Giống như SQL, bạn có thể đổi tên các trường trong N1QL bằng cách sử dụng từ khoá AS. Ngoài ra, bạn có thể định hình lại các dữ liệu trong N1QL, mà không có tương tự trong SQL. Điều này được thực hiện bằng cách nhúng các thuộc tính của câu lệnh trong đối tượng kết quả mong muốn. Truy vấn: SELECT Name, History, {'FullTime': true} AS 'Status' FROM HRData Kết quả: { 'Name': 'Jamie', 'History': [ ['Yahoo', 2005, 2006], ['Oracle', 2006, 2012], ['Couchbase', 2012, null] ], 'Status': { 'FullTime': true } } { 'Name': 'Steve', 'Status': { 'FullTime': true } } XXVII

4.3.

Lựa chọn dữ liệu

Trong N1QL, mệnh đề FROM được sử dụng để chọn giữa các nguồn dữ liệu (keyspaces). Nếu HRData là một không gian khóa, câu lệnh sau đây sẽ chọn thuộc tính Name từ tất cả các tài liệu trong không gian khóa HRData có thuộc tính Tên được định nghĩa. Khi sử dụng N1QL, mỗi tài liệu cũng có thể coi mình như một nguồn dữ liệu và chạy truy vấn qua các phần tử lồng nhau của nó. Các phần tử lồng nhau được sử dụng toán tử dấu chấm (.) Để hạ xuống mức và toán tử khung vuông ([]) để chỉ vào một phần tử mảng. Các trường đã chọn cũng có thể được đổi tên bằng toán tử AS, giống như trong SQL: SELECT firstjob FROM HRData.History[0] AS firstjob { 'firstjob': ['Yahoo', 2005, 2006] } SELECT firstjob[2] FROM HRData.History[0] AS firstjob { 'firstjob[2]': 2006 } 4.4.

Lọc dữ liệu

N1QL hỗ trợ mệnh đề WHERE, nhưng với một số khác biệt nhỏ. Tương tự như SQL, dấu chấm (.) Và toán tử khung vuông ([]) có thể được sử dụng để truy cập các phần tử lồng nhau vì chúng được sử dụng trong mệnh đề SELECT. Dữ liệu N1QL có thể có hình dạng không đều và do đó các giá trị không xác định được công nhận là khác biệt với null. N1QL cung cấp một bộ các toán tử bổ sung như IS MISSING ngoài các toán tử chuẩn như IS NULL. Các chuyển đổi XXVIII

mới, ví dụ từ các giá trị số nguyên khác 0 thành giá trị Boolean đúng, cũng được hỗ trợ. Hầu hết các hàm SQL tiêu chuẩn (ví dụ LOWER ()) đều được định nghĩa. Ngoài các vị từ lọc chuẩn, N1QL cung cấp các toán tử mới để làm việc với các mảng trong các tài liệu: ANY, SOME, and EVERY. ANY and SOME đánh giá một điều kiện cho mỗi phần tử, và trả về true nếu bất kỳ phần tử nào đáp ứng điều kiện. EVERY cũng đánh giá một điều kiện cho mỗi phần tử, ngoại trừ nó trả về true chỉ khi tất cả các phần tử khớp với điều kiện. 5. Lập chỉ mục Couchbase Server tăng tốc độ truy cập dữ liệu với các chỉ mục. Việc lập chỉ mục đặc biệt quan trọng bởi vì các sản phẩm trong các nhóm Couchbase sản xuất được phân phối qua nhiều nút và bất kỳ mục nào cũng cần phải được truy cập để đáp ứng một truy vấn. Couchbase hỗ trợ một loạt các chỉ số thứ cấp toàn cục và các chỉ số dựa trên chỉ số xem có thể được sử dụng để cải thiện hiệu suất với chi phí của một số phí xử lý để duy trì chỉ mục. Do dữ liệu chỉ mục nhỏ hơn tài liệu nên thường có thể giữ toàn bộ chỉ mục trên một nút chứ không phải phân phối chỉ mục trên nhiều nút. Thực hiện điều này có thể làm truy vấn đến nút hoạt động truy cập cục bộ, giảm thời gian truy cập mạng. Couchbase cung cấp lệnh EXPLAIN cho phép tìm kiếm chi tiết về thực hiện truy vấn và sử dụng chỉ mục có thể giúp hướng dẫn các quyết định về chỉ mục. Couchbase sử dụng nhiều chiến lược thông minh như xây dựng chỉ mục trì hoãn (tạo ra nhiều chỉ mục với một lần quét) và các thiết lập thống nhất chỉ số linh hoạt để kiểm soát tính mệt mỏi. Mặc dù tên của họ, chỉ số thứ cấp toàn cục (GSI) có thể được sử dụng để tạo các chỉ mục chính hoặc thứ cấp hiệu suất cao. Chỉ số thứ cấp toàn cầu Couchbase được phân chia riêng biệt với dữ liệu. Mặc dù dữ liệu Couchbase được phân phối giữa các nút, nhưng các nhà phát triển và quản trị viên hiệu suất tốt nhất thường tạo ra các chỉ mục trên một tập hợp các nút được chọn chạy dịch vụ chỉ mục. Giữ toàn bộ chỉ mục trên một nút có nghĩa là sự phức tạp trong hoạt động vẫn không XXIX

đổi khi cluster phát triển và trong trường hợp chỉ số bao trùm được sử dụng, nó cũng đảm bảo rằng các yêu cầu về chỉ mục có thể được thỏa mãn bằng cách sử dụng dữ liệu cục bộ mà không có độ trễ mạng. Composite Indexes tối ưu hóa truy cập cho các truy vấn yêu cầu dữ liệu từ nhiều thuộc tính. Các chỉ mục hỗ trợ bao gồm tất cả các thông tin cần thiết để đáp ứng một truy vấn mà không cần truy cập vào dữ liệu, vì vậy chúng rất nhanh. Các chỉ mục lọc (hoặc các chỉ mục phần) thực hiện lọc cho phép người dùng tạo một chỉ mục trên một tập con của dữ liệu bằng cách sử dụng mệnh đề WHERE. Điều này có ảnh hưởng đến việc giảm kích thước chỉ mục và các tác động bảo trì liên quan để duy trì khả năng mở rộng và hiệu suất khi xử lý các tập dữ liệu lớn. Các chỉ mục dựa trên chức năng là kết quả của sự tính toán giá trị của một biểu thức trên một loạt tài liệu. Chỉ mục tài liệu phụ được sử dụng để chỉ các cấu trúc nhúng và các đối tượng phức tạp. Các chỉ mục tài liệu phụ có thể cải thiện đáng kể hiệu suất truy vấn đối với các đối tượng JSON tuần tự. Khung nhìn MapReduce gia tăng thường được sử dụng làm chỉ mục. Khi xây dựng một giao diện MapReduce, một nhà phát triển có thể tùy chỉnh nó để tối ưu hóa hỗ trợ cho một bộ truy vấn cụ thể, thường là các truy vấn phức tạp thực hiện phân loại và tập hợp để hỗ trợ phân tích thời gian thực qua các bộ dữ liệu rất lớn. Ví dụ: một chỉ mục xem MapReduce sẽ hữu ích trong việc xây dựng báo cáo tương tác về dữ liệu bán hàng có thể được khám phá theo ngày tháng, mục hoặc khu vực. Bạn có thể tạo chỉ mục một chỉ mục MapReduce bằng cách phát các hàng riêng biệt, đồng thời tập hợp dữ liệu bán hàng theo từng không gian riêng biệt. Các chế độ xem không gian tăng tốc độ truy cập vào dữ liệu số nhiều chiều và được tạo ra bằng cách sử dụng Bản đồ không gian (Spatial MapReduce). Chỉ số không gian là một cây R, một cấu trúc có thể đại diện cho nhiều vùng có khả năng chồng chéo nhau. Thông tin về hình học được hỗ trợ sử dụng đặc tả GeoJSON. XXX

Các chế độ xem không gian cũng có thể được tạo trên dữ liệu số để xác định khối hình đa chiều (hyper-cube), chẳng hạn như mối quan hệ lứa tuổi của khách hàng, thu nhập và chi tiêu suốt đời. Lợi thế của chế độ xem không gian so với chỉ mục hợp chất là chế độ xem không gian có thể phục vụ các truy vấn có kích thước theo thứ tự bất kỳ. Các chỉ mục văn bản đầy đủ cho phép các nhà phát triển dễ dàng thêm các khả năng tìm kiếm toàn văn vào ứng dụng của họ bằng cách sử dụng CBFT (xem trước của nhà phát triển), các trường hợp sử dụng tìm kiếm mà không cần triển khai các thành phần bổ sung, làm giảm tính phức tạp của hoạt động. 6. Quản lý dữ liệu Couchbase Server cung cấp các dịch vụ quản lý dữ liệu thông qua trình quản lý dữ liệu. 6.1.

Thuộc tính nguyên tử

Máy chủ Couchbase cung cấp tính nguyên tử ở cấp tài liệu. Viết tài liệu sẽ rõ ràng hoặc thất bại. Các giao dịch chéo tài liệu thông thường có thể tránh được bằng cách hợp nhất các thông tin thường xuyên truy cập vào một tài liệu, hoặc sử dụng các kỹ thuật khác. 6.2.

Tính nhất quán và độ bền

Khi nói về Định lý CAP, các hệ thống quản lý dữ liệu phân tán thường được coi là CP hoặc AP, nghĩa là, các nhà đánh giá tập trung vào sự cân bằng trong tính nhất quán (C) hoặc tính khả dụng (A). Điều quan trọng là phải hiểu rằng định lý CAP chỉ có liên quan đến việc mô tả cách thức một hệ thống hoạt động trong suốt một phân vùng mạng và cách nó khôi phục sau đó; khi một hệ thống hoạt động bình thường, không cần tắt. Couchbase Server hoạt động như một hệ thống CP trong cấu hình mặc định của nó và chạy như một cụm duy nhất. Điều này là bởi vì bất kỳ quyền truy cập vào một khoá nào đó (đọc, ghi, cập nhật, xoá) luôn được chuyển hướng tới nút lưu XXXI

trữ dữ liệu đang hoạt động tại thời điểm đó. Thư viện khách hàng ứng dụng phân phối minh bạch các yêu cầu đến các nút thích hợp và do đó mọi máy chủ ứng dụng / thread sẽ ngay lập tức đọc các ghi của bất kỳ máy chủ ứng dụng khác / thread. Bất kỳ bản ghi nào cũng được sao chép trong cluster, nhưng các bản sao này chủ yếu nhằm mục đích có tính sẵn sàng cao và theo mặc định không cung cấp bất kỳ lưu lượng truy cập nào cho đến khi được kích hoạt. Theo Định lý CAP, một phân vùng mạng không thể phân biệt được với sự thất bại của một phần của hệ thống. Với Couchbase, trong trường hợp thất bại của một nút, một số dữ liệu sẽ tạm thời không khả dụng cho việc viết cho đến khi nó được kích hoạt ở bất cứ đâu trong cluster bằng thủ công hoặc tự động. Đọc, tuy nhiên, có thể tiếp tục được phục vụ bởi các bản sao bản sao của dữ liệu ở nơi khác trong cluster. Nếu một nút đơn không thành công, dữ liệu trên một nút không thành công sẽ không chấp nhận ghi cho đến khi nút đó thành công, mặc dù có thể đọc được từ các bản sao nếu cần. Couchbase Server cho phép người dùng tăng tính khả dụng bằng cách sao chép dữ liệu giữa nhiều nhóm Couchbase Server đang chạy trong cùng một hoặc các trung tâm dữ liệu riêng biệt bằng cách sử dụng một khả năng được gọi là sao chép trung gian dữ liệu (XDCR, mô tả sau). Với XDCR, trạng thái thông tin trên cả hai cụm sẽ dần dần được làm phù hợp, và trong thời gian chờ đợi Couchbase vẫn còn có sẵn để đọc và ghi lưu lượng truy cập. Couchbase Lite làm tăng thêm tính sẵn sàng trong các kịch bản điện thoại di động và IOT. Nó thực hiện việc này bằng cách bảo vệ các thay đổi cục bộ trên thiết bị khi người dùng tương tác với ứng dụng như bình thường và sau đó quản lý đồng bộ hóa với Couchbase Server khi kết nối mạng được khôi phục. Couchbase Server hoạt động như thế nào và phục hồi từ các điều kiện thất bại khác nhau vượt quá phạm vi của bài báo này, đặc biệt là với các tùy chọn cấu hình và lập trình khác nhau.

XXXII

6.3.

Sự nhất quán của chỉ mục và bản sao

Theo mặc định, chỉ mục và bản sao được cập nhật không đồng bộ để có hiệu suất tốt nhất. Trên cơ sở mỗi lần viết hoặc mỗi truy vấn, một ứng dụng có thể chọn để giảm thiểu một số hiệu suất để ưu tiên độ tin cậy (đối với bản sao) hoặc tính nhất quán (đối với truy vấn). RDBMs truyền thống và cơ sở dữ liệu NoSQL ghi chậm để giữ cho các chỉ mục và bản sao được cập nhật. Couchbase theo thiết kế cho phép nhà phát triển ứng dụng tạo ra sự cân bằng thông báo tùy thuộc vào điều gì là quan trọng nhất đối với phần đó của ứng dụng. Các chỉ số Couchbase được xây dựng từng bước, do đó, sau khi Couchbase Server xây dựng ban đầu có thể phản hồi ngay lập tức cho một yêu cầu, hoặc có thể được thực hiện để bắt kịp thời điểm khi truy vấn được phát hành. Nhà phát triển có thể chọn độ tươi của dữ liệu chỉ mục tại thời điểm truy vấn bằng cách đặt thuộc tính "cũ". Điều này cung cấp mức độ cấu hình cao, từ yêu cầu Couchbase Server xử lý tất cả các bản cập nhật trước khi đưa ra phản hồi để cho phép Couchbase Server ngay lập tức đáp ứng yêu cầu sử dụng trạng thái hiện tại của chỉ mục tại thời điểm truy vấn hoặc ở giữa. Phạm vi các tùy chọn cho phép ứng dụng càng nhanh càng tốt trừ khi có yêu cầu khó khăn để có được thông tin mới nhất trong chỉ mục. 6.4.

Tunable Durability Requirements

Theo mặc định, không đồng bộ và trình quản lý dữ liệu sẽ gửi một thông điệp xác nhận (ACK) tới một máy khách ngay khi bản cập nhật nằm trong RAM. Khi một ghi trong bộ nhớ, người quản lý dữ liệu ngay lập tức thêm nó vào các bản sao, đĩa, và lập chỉ mục. Nhân rộng là dựa trên RAM, vì vậy nó là cực kỳ nhanh. Để tăng khả năng chịu lỗi với chi phí tăng độ trễ, Couchbase chỉ có thể thừa nhận sự thay đổi đối với ứng dụng chỉ sau khi bản cập nhật cũng được sao chép, tiếp tục lưu trữ trên đĩa hoặc cả hai. Dữ liệu được nhân lên đến 1, 2, hoặc 3 nút và lưu vào đĩa cho tổng cộng lên đến bốn bản sao, bất kể tin nhắn ACK được giữ lên cho những hoạt động đó. XXXIII

XXXIV

6.5.

Truy cập đồng thời

Trong một hệ thống quản lý dữ liệu phân tán đang làm việc với khối lượng cao, xung đột có thể xảy ra với nhiều khách hàng cố gắng ghi cùng một tài liệu cùng một lúc. Tất cả các hoạt động Couchbase Server là nguyên tử ở cấp tài liệu. Couchbase Server cung cấp cả khóa khách quan và chủ quan để ngăn chặn lỗi đồng thời. Khóa khách quan được dựa trên Giá trị So sánh (CAS), một số nhận dạng gia tăng duy nhất và nguyên tử là một phần của siêu dữ liệu của mọi tài liệu. Một số thao tác cập nhật đòi hỏi phải kiểm tra giá trị CAS thành công để thành công. Ứng dụng vượt qua giá trị CAS như một tham số. Couchbase Server sau đó kiểm tra giá trị CAS đã không thay đổi trước khi một tài liệu bị xóa hoặc sửa đổi để có hiệu quả ngăn ngừa xung đột mà không cần phải khóa hồ sơ. Đây là phương pháp tốt nhất được ưa thích, phương pháp xử lý đồng thời với Couchbase. Couchbase Server cũng hỗ trợ khóa chủ quan (tương tự như semaphores trong một ứng dụng), ít được sử dụng. Khóa bi quan sẽ được tự động phát hành để ngăn chặn các deadlock không thể phục hồi được. 6.6.

Tài liệu hết hạn

Các lập trình viên có thể sử dụng Time to Live (TTL) để đặt thời gian hết hạn cho một tài liệu. Điều này thường được sử dụng với dữ liệu tạm thời như các phiên người dùng. Khi đặt giá trị tùy chọn này, Couchbase Server sẽ xóa các giá trị trong quá trình bảo trì định kỳ nếu TTL cho một mục đã hết hạn. Tài liệu cũng có thể được sửa, cập nhật thời gian hết hạn của chúng mà không sửa đổi nội dung của chúng. Theo mặc định tài liệu không có TTLs và không hết hạn. TTL là một trong những cơ chế cho phép Couchbase Server quản lý khả năng của riêng mình.

XXXV

Chương 3: Bảo mật trong Coachbase 1. Tổng quan Để truy cập vào Couchbase Server, quản trị viên và các ứng dụng phải được xác thực. Xác thực là một quá trình để xác định một người sử dụng đang cố gắng truy cập vào một hệ thống. 2. Chứng thực bằng chứng chỉ Với mối đe dọa ngày càng tăng về bảo mật từ những người dùng giả mạo và / hoặc máy móc, xác thực dựa trên mật khẩu không còn là phương pháp xác thực đáng tin cậy cho người dùng nữa. Couchbase hiện hỗ trợ việc sử dụng các chứng chỉ x.509 để xác thực các máy khách nhằm đảm bảo rằng chỉ những người dùng được phê duyệt (máy móc hoặc thiết bị đầu cuối) mới được chứng thực. Lưu ý rằng cơ chế xác thực này chỉ có sẵn cho dịch vụ dữ liệu. Xác thực dựa trên chứng chỉ cung cấp thêm một lớp bảo mật. Nó dựa vào một cơ quan chứng nhận, CA, để xác nhận tính xác thực và cấp giấy chứng nhận. Chứng chỉ bao gồm các thông tin như tên của tổ chức mà nó xác định, ngày hết hạn, tên của CA đã cấp chứng chỉ, chữ ký số của CA đang phát hành, v.v. Thông tin này phục vụ như một lời giới thiệu cho những người dùng biết và tin cậy CA nhưng không biết thực thể được nhận dạng bởi chứng chỉ. Tất cả các phần mềm hỗ trợ chứng chỉ đều duy trì một bộ sưu tập các chứng chỉ CA đáng tin cậy giúp họ xác định những tổ chức phát hành chứng chỉ nào có thể tin cậy. Trong trường hợp CA là một phần của hệ thống phân cấp, phần mềm có thể xác minh rằng chứng chỉ được ký bởi cùng một CA gốc.

XXXVI

2.1.

Điều kiện chứng thực

Giấy chứng nhận x.509 là tiêu chuẩn chính thức cho chứng chỉ khoá công khai và SSL / TLS dựa vào tiêu chuẩn này. Bạn phải sử dụng các chứng chỉ x.509 hợp lệ được tạo và ký bởi cùng một cơ quan chứng nhận gốc (CA). Chứng chỉ x.509 phải ở định dạng PEM. 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ủ

Bạn có thể bật xác thực dựa trên chứng chỉ trên máy chủ bằng cách sử dụng REST API hoặc CLI. Cơ chế xác thực này chỉ có sẵn cho dịch vụ dữ liệu và cũng có thể được sử dụng với SDK / clients. Đối với truy vấn và các dịch vụ khác, hãy sử dụng các cơ chế xác thực được hỗ trợ khác. 2.2.1. Using REST API Enable x.509 certificate authentication on the server. You must set this parameter once per cluster. curl

-X

POST

--data-binary

"state=enable"

http://Administrator:password@localhost:8091/settings/clientCertAuth Chỉ định đường dẫn của chứng chỉ để sử dụng để phân tích cú pháp cho người dùng trên máy chủ. curl

-X

POST

--data-binary

"path=subject.cn"

http://Administrator:password@localhost:8091/settings/clientCertAuth Chỉ định tiền tố và dấu phân cách trong biểu thức đường dẫn đó. curl

-X

POST

--data-binary

"delimiter="

http://Administrator:password@localhost:8091/settings/clientCertAuth

curl

POST

"prefix="

--data-binary

http://Administrator:password@localhost:8091/settings/clientCertAuth XXXVII

-X

2.2.2. Sử dụng CLI Sử dụng lệnh couchbase-cli sau: couchbase-cli ssl-manage

Options

Value

--set-

disable

client-

mandatory

Description |

enable

| Enable or disable the SSL client certificate authentication.

auth-state

disable:

Disables

client

based

certificate authentication. This is the default value. enable: When enabled, if the client presents

a

certificate,

then

that

certificate is used to authenticate. If authentication fails, then access is denied. However, if the client does not present a certificate, the certificate based authentication will be bypassed. mandatory: The client must present a valid certificate in order to gain access to

Couchbase

buckets.

If

using

XDCR, do not use the mandatory state for X.509 Certificate Authentication. --set-

subject.cn

|

san.uri

| Set SSL client certificate type value.

client-

san.dnsname | san.name

auth-path --set-

set_client_auth_prefix

Set SSL client certificate prefix value.

clientauthprefix XXXVIII

Options

Value

Description

--set-

set_client_auth_delimiter

Set SSL client certificate delimiter

client-

value.

authdelimiter --client-

 

Show

auth

SSL

client

certificate

authentication value. Sau khi thiết lập phía máy chủ để xác thực khách hàng, bạn cũng nên chỉ

định người dùng cho một số vai trò ở phía máy chủ. Làm như sau: Tạo người dùng có nguồn xác thực (miền) 'Couchbase'. Đảm bảo rằng người dùng này là người dùng được quản lý nội bộ với mật khẩu mạnh. Mặc dù mật khẩu không được sử dụng như là một phần của xác thực dựa trên chứng chỉ, nó là cần thiết nếu người dùng đang cố gắng truy cập các tài nguyên thông qua web console. 3. Xác thực bằng mật khẩu Để truy cập Couchbase Server, quản trị viên và ứng dụng phải xác thực. Xác thực dựa trên mật khẩu. Để bảo mật thêm, các ứng dụng có thể được thiết kế để sử dụng mật khẩu trong thói quen dựa trên băm. 3.1.

Xác thực cho Quản trị viên

Tên người dùng và mật khẩu quản trị viên, cả hai đều được yêu cầu để xác thực, ban đầu được thiết lập trong quá trình khởi tạo Couchbase Server: xem Khởi tạo Cluster để biết chi tiết. Sau đó, mật khẩu có thể được thay đổi bằng công cụ đặt lại mật khẩu, reset-admin-password. Cách làm tốt nhất về xác định mật khẩu được liệt kê trong phần Couchbase passwords.

XXXIX

Khi Bảng điều khiển Web Couchbase đang chạy trên cổng mặc định, http: // localhost: 8091, tên người dùng và mật khẩu của quản trị viên được truyền trong rõ ràng, từ trình duyệt của quản trị viên đến giao diện điều khiển. Tùy chọn, Couchbase Web Console có thể được cấu hình để truy cập an toàn, tại https: // localhost: 18091; để tên người dùng và mật khẩu được thông qua ở dạng mã hóa. 3.2.

Xác thực cho các ứng dụng

Các tính năng của Couchbase Server - bao gồm dữ liệu, cài đặt và thống kê chỉ có thể được truy cập bởi những người dùng đã được gán đặc quyền thích hợp. Mỗi privilage là đọc hoặc đọc-viết. Các đặc quyền được chỉ định bởi các Quản trị viên Toàn quyền, dưới dạng vai trò. Khi người dùng xác thực thành công, các vai trò được phân công của họ sẽ được kiểm tra và Couchbase Server đã cấp hoặc từ chối. Để vượt qua các chứng chỉ, các ứng dụng phải sử dụng một trong bốn cơ chế được cung cấp bởi khung cơ cấu chứng thực và bảo mật đơn giản (SASL). Đây là PLAIN, và ba thành viên của Cơ chế xác thực phản ứng Salted Challenge của các hàm băm; đó là SCRAM-SHA1, SCRAM-SHA256 và SCRAM-SHA512. Cơ chế SCRAM cho phép các ứng dụng xác thực một cách an toàn, bằng cách truyền mật khẩu chỉ ở dạng được bảo vệ. Trình điều khiển có thể cần được cập nhật, để hỗ trợ chức năng băm dựa trên SHA. 3.3.

Cơ chế xác thực mật khẩu

Theo thứ tự tăng dần, Couchbase cơ chế xác thực mật khẩu như sau: Khách hàng gửi mật khẩu ở dạng không mã hoá. Tất cả các khách hàng đều ủng hộ phương pháp xác thực này. Nó không an toàn, không có biện pháp phòng vệ nào chống lại mật khẩu bị đánh cắp khi chuyển.

XL

SCRAM-SHA1: Sử dụng một phím 160-bit. SCRAM-SHA256: Một trong những nhóm hàm băm được gọi là SHA2, SCRAM-SHA256 sử dụng một khóa 256-bit. SCRAM-SHA512: Một hàm băm khác từ nhóm SHA2, SCRAM-SHA512 sử dụng một phím 512-bit; và là giao thức xác thực mạnh nhất được hỗ trợ. Trong quá trình đàm phán máy chủ khách hàng ban đầu, giao thức xác thực mạnh nhất được hỗ trợ bởi cả Couchbase Server và hệ điều hành khách hàng của ứng dụng được chọn để sử dụng. Ví dụ, nếu khách hàng chỉ hỗ trợ giao thức PLAIN, giao thức PLAIN được sử dụng; nhưng nếu máy khách cũng hỗ trợ giao thức SCRAM-SHA1, thì SCRAM-SHA1 được sử dụng. Một phương pháp đáp ứng thách thức có thể được truyền qua cả hai kênh mã hóa và không được mã hóa. Lưu ý rằng các giao thức phản ứng thách thức SCRAM chỉ xác thực quá trình xác nhận mật khẩu. Để đảm bảo cho phiên tiếp theo, nên sử dụng TLS. 4. Ủy quyền Để ủy quyền cho người dùng, Couchbase Server cung cấp Kiểm soát Truy cập dựa trên vai trò. 4.1.

RBAC dành cho Quản trị viên

Kiểm soát truy cập dựa vào vai trò (Role-Based Access Control - RBAC) dành cho các quản trị viên được thiết kế để quản lý truy cập quản trị vào hệ thống Couchbase và để phân chia các nhiệm vụ hành chính. Với RBAC, mỗi quản trị viên chỉ có thể thực hiện một bộ hoạt động cố định được xác định rõ ràng dựa trên bản mô tả công việc. RBAC có thể được cấu hình cho người dùng nội bộ hoặc bên ngoài, và một người dùng có thể được ánh xạ bởi Người quản trị toàn quyền vào một hoặc nhiều vai trò hành chính cố định. Các vai trò này chứa một bộ các nhiệm vụ được xác XLI

định có thể được thực hiện trong hệ thống: người dùng không có quyền truy cập quản trị khác, trừ một người được xác định trong vai trò của họ. Quản trị viên đầy đủ trong Couchbase có thể quản lý vai trò người dùng bằng cách sử dụng các công cụ Couchbase CLI (như được mô tả trong quản trịrole-role) hoặc REST API (như được mô tả trong RBAC). 4.2.

RBAC cho các ứng dụng

Dựa trên mô hình bảo mật truy cập dựa trên vai trò (RBAC) được giới thiệu trong phần 4.5 dành cho các quản trị viên, Couchbase Server 5.0 bổ sung RBAC cho các ứng dụng; để bạn có thể kiểm soát ở cả cấp độ rộng và chi tiết, những gì người dùng cuối và các dịch vụ ứng dụng có thể làm. Vì vậy, bạn có thể hạn chế truy cập vào các thông tin mà họ cần, không có gì nhiều hơn hoặc ít hơn, và đáp ứng yêu cầu tuân thủ. 4.3.

Quản lý người dùng RBAC

Couchbase RBAC cho phép người dùng được định nghĩa được gán các vai trò, cho phép truy cập vào tài nguyên. 4.4.

Tài nguyên Dưới Điều khiển Truy cập

Máy chủ Couchbase áp dụng RBAC cho một bộ tài nguyên xác định. Quản trị viên Couchbase toàn bộ có thể gán một vai trò cho người dùng được xác định; vai trò được kết hợp với một trong những đặc quyền nhiều hơn hoặc trên một cá nhân, tên tài nguyên; hoặc trên tất cả các nguồn lực trong một nhóm loại tài nguyên. 4.5.

Nâng cấp lên RBAC

Couchbase cung cấp một đường nâng cấp, nhờ đó người dùng có thể chuyển tiếp các hoạt động của họ từ Couchbase Server 4.6 trở về trước (tất cả các phiên bản trước RBAC) đến 5.0 (đây là bản phát hành RBAC). XLII

XLIII

5. Kiểm tra Các hành động thực hiện trên Couchbase Server có thể được kiểm tra. Điều này cho phép một quản trị viên đầy đủ để đảm bảo rằng các nhiệm vụ quản lý hệ thống đang được thực hiện một cách thích hợp. Điều này có thể tạo điều kiện cho việc tuân thủ các tiêu chuẩn quy định. 5.1.

Các sự kiện kiểm tra

Couchbase Server cung cấp sự kiện kiểm tra, gửi số liệu tương ứng đến các tập tin đích. 5.1.1. Danh sách các sự kiện Kiểm toán Sự kiện được kiểm tra bởi Couchbase Server bao gồm đăng nhập thành công và thất bại, các sự kiện liên quan đến cấu hình cụm và nhóm, và việc sử dụng các công cụ yêu cầu quyền quản trị. Thông tin tương ứng được ghi lại trong các mục tiêu đầu ra, là các tệp ở định dạng JSON. Couchbase Server tạo ra sự kiện kiểm tra bất cứ khi nào xảy ra các hành động sau:

Table 1. Administrative Audit Events Login succeeded or failed

Audit

configuration Auditing

changed Node added to cluster

Node

enabled

or

disabled

removed

from Node failed over

cluster Cluster rebalanced

System started or shut Bucket created down

Bucket deleted Disk

or

changed

index

Bucket flushed path Remote

Bucket-settings modified cluster- Remote cluster-reference

reference established XLIV

updated

Remote cluster-reference User added

User removed

deleted XDCR reference created

XDCR

reference XDCR reference deleted

updated XDCR replication paused XDCR or resumed

replication- XDCR

settings updated

XDCR

replication Auto failover enabled

replication

created Auto failover disabled

canceled Auto failover-count reset Index-node

added

Cluster alerts enabled

or Server-group created

removed Node

removed

index

from Server-group deleted

changed

or

created

or FTS index deleted

FTS

index

control-

command issued

FTS

configuration FTS

configuration GC run triggered

refreshed

replanned

CPU profiling started

Memory

profiling Self-signed

started

SSL

certificate regenerated

authentication- Encryption key-rotation Compaction

settings modified 5.2.

Password reset

updated

LDAP

Node added to servergroup

server-group FTS

Cluster alerts disabled

requested

settings

modified

Các đối tượng cần kiểm tra

Đối tượng của một cuộc kiểm tra Couchbase Server là một tệp JSON; sau khoảng thời gian được định cấu hình và đường dẫn vị trí có thể định cấu hình được. Phần này cung cấp một số ví dụ về nội dung xuất hiện. 5.2.1. Log của các đối tượng cần kiểm tra XLV

Sự kiện kiểm tra được ghi lại trong các tệp JSON. Một tập tin mặc định, được gọi là audit.log luôn sẵn có; và các sự kiện đăng nhập được ghi vào tập tin này. Sau khoảng thời gian được quản trị viên xác định - tối thiểu là 15 phút và tối đa là 7 ngày - tệp mặc định được lưu dưới tên được sửa đổi, có dấu thời gian tương ứng với thời gian lưu. Một tệp audit.log trống và mới được lưu lại, và các sự kiện đăng nhập vẫn tiếp tục được ghi vào tệp mới này. (Lưu ý rằng việc di chuột qua có thể xảy ra sớm hơn nếu tệp đạt đến kích thước tối đa là 20MB). Để biết hướng dẫn về cách định thời gian xoay vòng của tệp, hãy xem mục kiểm tra. 5.2.2. Đăng nhập Một bản kiểm toán cho một đăng nhập thành công có thể xuất hiện như sau: {

"timestamp":"2015-02-20T08:48:49.408-08:00",

"id":8192,

"name":"login

success", "description":"Successful login to couchbase cluster", "role":"admin", "real_userid":

{

"source":"ns_server",

"sessionid":"0fd0b5305d1561ca2b10f9d795819b2e",

"user":"bjones"

},

"remote":{"ip":"172.23.107.165",

"port":59383} }

Trong ví dụ này, một người dùng có tên bjones đã đăng nhập thành công vào một cụm Couchbase bằng cách sử dụng địa chỉ IP của miền 172.23.107.165.

XLVI

5.2.3. Đăng nhập thất bại Biểu ghi kiểm toán sau đây chỉ ra rằng nỗ lực đăng nhập thất bại: { "real_userid": { "source": "rejected", "user": "auditBucketUser" }, "remote": { "ip": "127.0.0.1", "port": 64416 }, "timestamp": "2017-03-16T15:45:27.420Z", "id": 8193, "name": "login failure", "description": "Unsuccessful attempt to login to couchbase cluster" }

Bản ghi này chỉ ra rằng người dùng tên auditBucketUser đã có một nỗ lực không thành công để đăng nhập vào nhóm couchbase vào năm 2017-03-16 lúc 15:45:27. 5.2.4. Tạo thùng Biểu ghi kiểm toán dưới đây tương ứng với việc tạo ra một bucket. { "props": {

"storage_mode":

"eviction_policy":

"couchstore", "value_only",

"conflict_resolution_type": "num_threads":

3,

"seqno",

"flush_enabled":

false, "purge_interval": "undefined", "auth_type": "sasl", "ram_quota": 1156579328, "membase",

"replica_index": "bucket_name":

false,

"num_replicas":

"auditBucket",

1

"real_userid":

}, {

"type": "source":

"ns_server", "user": "Administrator" }, "sessionid":

"dca284b5efe1937a1a4085ef88c2fbcb",

"remote": { "ip": "127.0.0.1", "port": 64477 }, "timestamp": "2017-03-16T15:43:35.187Z", "id": 8201, "name": "create bucket", "description": "Bucket was created" }

Bản ghi này cho thấy một bucket được tạo ra vào năm 2017-03-16 lúc 15:43:35; rằng bucket được đặt tên auditBucket; rằng nó được tạo ra với yêu cầu truy cập xác thực sasl, và chính sách thu hồi của nó được định nghĩa là value_only, được tạo bởi Quản trị viên toàn hệ thống của hệ thống. XLVII

5.2.5. Tạo người dùng Biểu ghi kiểm tra dưới đây tương ứng với việc tạo ra một người dùng. {

"roles":

[

"ro_admin"

"auditBucketUser2"

},

],

"identity":

"real_userid":

{

{

"source":

"source":

"builtin",

"ns_server",

"user": "user":

"Administrator" }, "sessionid": "dca284b5efe1937a1a4085ef88c2fbcb", "remote": { "ip": "127.0.0.1", "port": 64416 }, "timestamp": "2017-03-16T15:44:32.254Z", "id": 8232, "name": "set user", "description": "User was added or updated" }

Bản ghi này chỉ ra rằng một người dùng tên auditBucketUser2 đã được tạo ra bởi Quản trị viên đầy đủ vào 2017-03-16 lúc 15:44:32; và rằng người dùng đã được trao vai trò của ro_admin. 5.2.6. Tạo chỉ mục Biểu ghi kiểm toán sau đây chỉ ra rằng một chỉ mục đã được tạo hoặc cập nhật: {

"timestamp":

"2017-03-16T16:12:36.198Z",

"real_userid":

{

"source":

"ns_server", "user": "Administrator" }, "index_name": "def-airportname", "id": 24577,

"name":

"Create/Update

index",

"description":

"FTS

index

was

created/Updated" }

Bản ghi này chỉ ra rằng một chỉ mục FTS có tên def-airportname đã được tạo hoặc cập nhật vào 201703-16 vào lúc 16:12:36. 6. Mã hóa Couchbase sử dụng mã hóa để bảo vệ dữ liệu, trong toàn hệ thống. Mã hóa dữ liệu được sử dụng để ngăn chặn truy cập vào dữ liệu nhạy cảm. Couchbase Server hỗ trợ mã hóa dữ liệu đang ngừng hoạt động (trên đĩa), trên dây, và được giữ bởi các ứng dụng. Ngoài ra, nó cung cấp một hệ thống của SecretManagement, cho phép thông tin thiết yếu cho an ninh và bảo trì của Couchbase Server chính nó sẽ được lưu trữ dưới dạng mã hoá; và sau đó giải mã và sử dụng hợp lý tại cluster-startup. XLVIII

XLIX

6.1.

Mã hóa lúc ngừng hoạt động

Mã hoá ở phần còn lại đề cập đến mã hóa dữ liệu nằm trên phương tiện vật lý. Nó nên được sử dụng để bảo vệ dữ liệu được lưu trữ trên các phương tiện truyền thông như vậy bởi Couchbase Server. 5.2.1. Bảo vệ Phương tiện Truyền thông Couchbase Server sử dụng phương tiện vật lý để lưu trữ các tệp và chỉ mục. Nếu phương tiện truyền thông bị đánh cắp, dữ liệu trở nên dễ bị truy cập trái phép. Do đó, để bảo vệ những dữ liệu đó, mã hóa tất cả các dữ liệu quan trọng và lưu trữ chỉ mục-vị trí, sử dụng mã hoá dữ liệu minh bạch, được cung cấp bởi các nhà cung cấp phần mềm mã hoá trên đĩa của bên thứ ba; từ chối truy cập dữ liệu cho bất kỳ ai không có khóa mã hoá thích hợp hoặc không tuân thủ với chính sách bảo mật được chỉ định. Mã hóa như vậy đảm bảo rằng dữ liệu được lưu trữ không thể bị tổn hại; ngay cả khi cơ sở dữ liệu bị đánh cắp, sao chép, mất hoặc truy cập không đúng cách. Thường được sử dụng các công cụ mã hóa của bên thứ ba bao gồm: - Thiết lập khoá thống nhất Linux (LUKS): - Vormetric - Gemalto - Tính 6.2.

Mã hóa đối tượng

Các công cụ được liệt kê ở trên cho phép sử dụng mã hóa toàn bộ hoặc đĩa. Nếu cấp tệp được chọn, các thư mục và tệp Couchbase sau đây cần được mã hóa: Đường dẫn tệp dữ liệu và chỉ mục - Linux: / opt / couchbase / var / lib / couchbase / dữ liệu - Windows: C: \ Program Files \ couchbase \ server \ var \ lib \ couchbase \ data L

Đường dẫn tập tin chỉ mục Global Secondary Index - Linux: / opt / couchbase / var / lib / couchbase / data / @ 2i - Windows: C: \ Program Files \ couchbase \ server \ var \ lib \ couchbase \ data \ @ 2i Các tập tin cấu hình Couchbase và thư mục - Linux: / opt / couchbase / var / lib / couchbase / dữ liệu - Windows: C: \ Program Files \ couchbase \ server \ var \ lib \ couchbase \ data Tập tin mật khẩu Couchbase - Linux: /opt/couchbase/var/lib/couchbase/isasl.pw và / opt / couchbase / var / lib / couchbase / config /. - Windows: C: \ Program Files \ couchbase \ server \ var \ lib \ couchbase \ isasl.pw và C: \ Program Files \ couchbase \ server \ var \ lib \ couchbase \ var \ lib \ config \. 6.2.1. Mã hóa trên đường truyền Dữ liệu trên đườngt ruyền cần phải được bảo vệ khỏi bị nghe trộm. Do đó, Couchbase Server sử dụng SSL / TLS để mã hóa dữ liệu được truyền theo từng cách sau: giữa máy khách và máy chủ; giữa các nút máy chủ trong một cụm; và giữa các trung tâm dữ liệu. 6.2.2. Bảo vệ Quản trị viên Truy cập Quản trị viên toàn quyền có thể định cấu hình quyền truy cập quản trị để client-communication với Couchbase Server được mã hóa bằng SSL / TLS. Giao thức này được hỗ trợ đầy đủ bởi Couchbase client-libraries cho cả Couchbase Web Console và REST API. Khi khởi tạo một cách an toàn, Couchbase Server tạo ra một chứng chỉ tự ký cho nút ban đầu, sau đó được truyền trong tất cả các nút trong cluster. Về mặt an ninh, chứng chỉ này được cho là phù hợp với các hoạt động tiền sản xuất của bạn: LI

tùy chọn, bạn có thể chuyển sang chứng chỉ X.509, trước khi triển khai ứng dụng vào sản xuất. 6.2.3. Kết nối an toàn vào Console Couchbase Web Console có thể được truy cập qua HTTPS, trên cổng 18091. Vì nó được bảo vệ bởi SSL / TLS, kết nối này được bảo mật. Ví dụ, nếu bạn đã thiết lập Couchbase Web Console trên http: // servername: 8091, bạn có thể truy cập nó một cách an toàn vào https: // servername: 18091. 6.2.4. Thực hiện xác minh chứng chỉ Để xác minh chứng chỉ mà cụm của bạn hiện đang sử dụng, truy cập Couchbase Web Console, và nhấp chuột trái vào tab Security, trong thanh điều hướng ở phía bên tay trái:

Hình 3. Xác minh chứng chỉ

Thao tác này sẽ hiển thị màn hình Bảo mật. Khi nó xuất hiện, nhấp chuột trái vào tab Chứng chỉ gốc, nằm trên thanh điều khiển nằm ngang, phía trên đầu (lưu ý rằng bạn phải ở trong vai trò của Quản trị viên, để xem và truy cập Chứng chỉ gốc):

Hình 4. Chọn chứng chỉ gốc trong vai trò Quản trị viên

LII

Thao tác này hiển thị chế độ xem chứng chỉ gốc (Root Certificate View), có chứa chứng chỉ gốc tự ký, trong một khung cuộn:

Hình 5. Chứng chỉ gốc (minh họa)

Lưu ý rằng chứng chỉ có thể được tái tạo hoặc thay thế, sử dụng API mã hoá On-the-Wire, hoặc các lệnh CLI để quản lý chứng chỉ. 6.3.

Mã hóa trong ứng dụng

Bạn có thể mã hóa dữ liệu bên trong ứng dụng của bạn, ngay cả trước khi nó được gửi đến máy chủ. Điều này cho phép mã hoá được sử dụng có chọn lọc, chỉ cho những thông tin nhạy cảm nhất mà bạn định gửi. Khuyến khích: Luôn luôn duy trì tính bí mật của khóa mã hóa: bằng vòng khoá an toàn hoặc mô-đun bảo mật phần cứng (HSM). Luôn sử dụng thư viện mã hóa tiêu chuẩn để mã hóa dữ liệu; và không bao giờ dựa vào các giải pháp quản lý chìa khóa trong nhà hoặc mã hoá. Không bao giờ, khi quản lý tài liệu, bao gồm thông tin nhạy cảm trong ID tài liệu.

LIII

6.4.

Secret-Management

Secret - Management cung cấp một cách để quản lý các bí mật máy chủ. Điều này làm tăng tính bảo mật của dữ liệu và có khả năng làm cho nó đáp ứng yêu cầu tuân thủ dễ dàng hơn. Quản lý bí mật (đó là tính năng Enterprise Edition của Couchbase Server) cho phép ghi các bí mật vào đĩa ở định dạng được mã hóa. Bí mật được Couchbase Server xác định, và bao gồm các mật khẩu và chứng chỉ hệ thống thiết yếu. Couchbase sử dụng thuật toán AES 256-bit ở chế độ GCM, để mã hóa bí mật bằng cách sử dụng một hệ thống phân cấp mã hóa; như thể hiện trong minh hoạ sau:

LIV

Kết luận Chúng ta đã đề cập đến rất nhiều trong những vấn đề chung, cần phải nhận thức được để đưa ra quyết định trong thế giới mới của cơ sở dữ liệu NoSQL. Bây giờ là lúc để nói về lý do tại sao chúng ta sẽ chọn cơ sở dữ liệu NoSQL. Dưới đây là một số lý do để xem xét việc sử dụng các cơ sở dữ liệu NoSQL. - Để cải thiện năng suất lập trình bằng cách sử dụng một cơ sở dữ liệu phù hợp hơn với nhu cầu của ứng dụng. - Để cải thiện hiệu suất truy cập dữ liệu thông qua một số sự kết hợp xử lý khối lượng dữ liệu lớn hơn, giảm độ trễ, và cải thiện thông.

LV

Tài liệu tham khảo - https://developer.couchbase.com/documentation/server/5.0/introduction/wha ts-new.html - https://en.wikipedia.org/wiki/Couchbase_Server

LVI