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 -