CouchDB
 sql >> Cơ Sở Dữ Liệu >  >> NoSQL >> CouchDB

Bắt đầu với CouchDB

NoSQL là một trong những chủ đề được bàn tán nhiều nhất trong vài tháng qua. Hướng dẫn này sẽ giới thiệu cho bạn về CouchDB, một triển khai NoSQL và hướng dẫn bạn cách bắt đầu với nền tảng này.

NoSQL là gì?

NoSQL là giản đồ miễn phí - bạn không cần phải quyết định cấu trúc trước.

NoSQL [ không chỉ SQL ] là một phong trào hướng tới các kho lưu trữ tài liệu không sử dụng mô hình quan hệ. Sự thay đổi mô hình cơ bản là trong cách họ lưu trữ dữ liệu. Ví dụ:khi bạn cần lưu trữ dữ liệu về hóa đơn, trong RDBMS, bạn cần phải chắt lọc thông tin này thành các bảng và sau đó sử dụng ngôn ngữ phía máy chủ để chuyển đổi dữ liệu này trở lại các đối tượng đời thực. Mặt khác, trong NoSQL, bạn chỉ cần lưu trữ hóa đơn. NoSQL là giản đồ miễn phí, có nghĩa là bạn không cần thiết kế bảng và cấu trúc trước - bạn có thể bắt đầu lưu trữ các giá trị mới một cách đơn giản.

Tiếp tục ví dụ về hóa đơn, một số hóa đơn có thể bao gồm số VAT, một số có thể không. Trong RDBMS, trước tiên bạn cần yêu cầu bảng của mình chấp nhận số VAT và sau đó số đó có thể là giá trị rỗng. Tuy nhiên, trong NoSQL, bạn chỉ có thể lưu trữ hóa đơn có hoặc không có số VAT - không có lược đồ. Hãy nhớ rằng NoSQL không phải là một viên đạn bạc. Nếu dữ liệu của bạn thực sự là quan hệ, gắn bó với RDBMS của bạn sẽ là lựa chọn đúng đắn.

Truy vấn cơ sở dữ liệu NoSQL

MapReducing có lợi ích hơn các truy vấn SQL vì tác vụ ánh xạ / thu nhỏ có thể được phân phối giữa nhiều nút, điều không thể xảy ra trong RDBMS.

Cơ sở dữ liệu NoSQL sử dụng bản đồ / rút gọn để truy vấn và lập chỉ mục cơ sở dữ liệu. Trong RDBMS, bạn chạy một truy vấn nối nhiều bảng với nhau để trước tiên tạo một nhóm dữ liệu và sau đó truy vấn chạy tạo một tập kết quả, một tập hợp con của dữ liệu tổng thể. Trong NoSQL, bạn sử dụng bản đồ / giảm để tạo một 'chế độ xem' (tương tự như tập kết quả), chế độ xem này là một tập hợp con của dữ liệu tổng thể.

Bản đồ thực chất là trích xuất dữ liệu và rút gọn, tổng hợp dữ liệu. Bạn càng quen thuộc với RDBMS, việc nắm bắt bản đồ / thu gọn sẽ càng khó khăn hơn. MapReducing có lợi hơn các truy vấn SQL vì tác vụ bản đồ / thu nhỏ có thể được phân phối giữa nhiều nút, điều không thể xảy ra trong RDBMS. Việc thêm bản ghi mới vào cơ sở dữ liệu không phải lúc nào cũng cấu thành tác vụ bản đồ / thu nhỏ được chạy lại hoàn toàn.

Giới thiệu CouchDB

Một vài thông tin về CouchDB mà bạn nên biết:

  • CouchDB là cơ sở dữ liệu hướng tài liệu JSON được viết bằng Erlang.
  • Đây là một cơ sở dữ liệu đồng thời cao được thiết kế để có thể dễ dàng sao chép, theo chiều ngang, trên nhiều thiết bị và có khả năng chịu lỗi.
  • Đây là một phần của quá trình tạo cơ sở dữ liệu NoSQL.
  • Đây là một dự án nền tảng Apache mã nguồn mở.
  • Nó cho phép các ứng dụng lưu trữ tài liệu JSON thông qua giao diện RESTful.
  • Nó sử dụng bản đồ / thu nhỏ để lập chỉ mục và truy vấn cơ sở dữ liệu.

Lợi ích chính của CouchDB

  • Tài liệu JSON - Mọi thứ được lưu trữ trong CouchDB được tổng hợp thành tài liệu JSON.
  • Giao diện RESTful - Từ việc tạo, sao chép đến chèn dữ liệu, mọi tác vụ quản lý và dữ liệu trong CouchDB đều có thể được thực hiện thông qua HTTP.
  • N-Master Replication - Bạn có thể sử dụng vô số 'bản gốc', tạo ra một số cấu trúc liên kết sao chép rất thú vị.
  • Được xây dựng cho Ngoại tuyến - CouchDB có thể sao chép sang các thiết bị (như điện thoại Android) có thể chuyển sang chế độ ngoại tuyến và xử lý đồng bộ hóa dữ liệu cho bạn khi thiết bị trực tuyến trở lại.
  • Bộ lọc Sao chép - Bạn có thể lọc chính xác dữ liệu mà bạn muốn sao chép sang các nút khác nhau.

Kết hợp tất cả lại với nhau

CouchDB là một cơ sở dữ liệu được thiết kế để chạy trên internet ngày nay.

CouchDB cho phép bạn viết một ứng dụng phía máy khách nói chuyện trực tiếp với Couch mà không cần đến lớp trung gian phía máy chủ, giảm đáng kể thời gian phát triển. Với CouchDB, bạn có thể dễ dàng xử lý nhu cầu bằng cách thêm nhiều nút sao chép một cách dễ dàng. CouchDB cho phép bạn sao chép cơ sở dữ liệu tới máy khách của mình và với các bộ lọc, bạn thậm chí có thể sao chép dữ liệu của người dùng cụ thể đó.

Có cơ sở dữ liệu được lưu trữ cục bộ có nghĩa là ứng dụng phía máy khách của bạn có thể chạy mà hầu như không có độ trễ. CouchDB sẽ xử lý việc nhân bản lên đám mây cho bạn. Người dùng của bạn có thể truy cập hóa đơn của họ trên điện thoại di động của họ và thực hiện các thay đổi mà không có độ trễ đáng chú ý, tất cả trong khi ngoại tuyến. Khi có kết nối và có thể sử dụng được, CouchDB sẽ tự động sao chép những thay đổi đó vào CouchDB trên đám mây của bạn.

CouchDB là một cơ sở dữ liệu được thiết kế để chạy trên internet ngày nay cho các ứng dụng giống như máy tính để bàn ngày nay và các thiết bị được kết nối mà chúng ta truy cập internet.

Bước 1 - Cài đặt CouchDB

Cách dễ nhất để thiết lập và chạy CouchDB trên hệ thống của bạn là truy cập CouchOne và tải xuống bản phân phối CouchDB cho hệ điều hành của bạn - trong trường hợp của tôi là OSX. Tải xuống tệp zip, giải nén và thả CouchDBX vào thư mục ứng dụng của tôi (hướng dẫn cho hệ điều hành khác trên CouchOne).

Cuối cùng, mở CouchDBX.

Bước 2 - Chào mừng bạn đến với Futon

Sau khi CouchDB khởi động, bạn sẽ thấy bảng điều khiển Futon trong ứng dụng CouchDBX. Trong trường hợp không thể, bạn có thể truy cập Futon thông qua trình duyệt của mình. Nhìn vào nhật ký, CouchDBX cho chúng ta biết CouchDB đã được bắt đầu tại http://127.0.0.1:5984/ (có thể khác trên hệ thống của bạn). Mở trình duyệt và truy cập http://127.0.0.1:5984/_utils/ và bạn sẽ thấy Futon.

Trong suốt phần còn lại của hướng dẫn này, tôi sẽ sử dụng Futon trong Firefox. Tôi cũng sẽ mở Firebug và giao diện điều khiển mở để xem tất cả các yêu cầu HTTP mà Futon đang gửi đằng sau hậu trường. Điều này rất hữu ích vì ứng dụng của bạn có thể làm mọi thứ mà Futon đang làm. Hãy tiếp tục và tạo cơ sở dữ liệu có tên mycouchshop .

CouchDB jQuery Plugin

Futon thực sự đang sử dụng một plugin jQuery để tương tác với CouchDB. Bạn có thể xem plugin đó tại http://127.0.0.1:5984/_utils/script/jquery.couch.js (lưu ý rằng cổng của bạn có thể khác). Điều này cung cấp cho bạn một ví dụ tuyệt vời về việc tương tác với CouchDB.

Bước 3 - Người dùng trong CouchDB

CouchDB, theo mặc định, hoàn toàn mở, cấp cho mọi người dùng quyền quản trị đối với phiên bản và tất cả cơ sở dữ liệu của nó. Điều này rất tốt cho sự phát triển nhưng rõ ràng là không tốt cho sản xuất. Hãy tiếp tục và thiết lập một quản trị viên. Ở dưới cùng bên phải, bạn sẽ thấy thông báo "Chào mừng bạn đến với Nhóm quản trị viên! Mọi người đều là quản trị viên! Khắc phục sự cố này".

Hãy tiếp tục và nhấp vào sửa lỗi này và cung cấp cho mình một tên người dùng và mật khẩu. Điều này tạo tài khoản quản trị và cấp cho người dùng ẩn danh quyền truy cập để đọc và ghi các hoạt động trên tất cả cơ sở dữ liệu, nhưng không có đặc quyền cấu hình.

Thông tin thêm về Người dùng

Trong CouchDB, sẽ không khôn ngoan nếu tạo một siêu người dùng duy nhất và yêu cầu người dùng đó thực hiện tất cả việc đọc / ghi.

Người dùng trong CouchDB có thể hơi khó hiểu khi nắm bắt ban đầu, đặc biệt nếu bạn đã quen với việc tạo một người dùng duy nhất cho toàn bộ ứng dụng của mình và sau đó tự quản lý người dùng trong bảng người dùng (không phải bảng người dùng MySQL). Trong CouchDB, sẽ không khôn ngoan nếu tạo một siêu người dùng duy nhất và yêu cầu người dùng đó thực hiện tất cả việc đọc / ghi, bởi vì nếu ứng dụng của bạn là phía máy khách thì thông tin đăng nhập của siêu người dùng này sẽ hiển thị rõ ràng trong mã nguồn JavaScript của bạn.

CouchDB có tính năng tạo và xác thực người dùng. Bạn có thể tạo người dùng bằng plugin jQuery bằng cách sử dụng $ .couch.signup () . Những người này về cơ bản trở thành người dùng của hệ thống của bạn. Người dùng chỉ là tài liệu JSON giống như mọi thứ khác nên bạn có thể lưu trữ bất kỳ thuộc tính bổ sung nào bạn muốn như email chẳng hạn. Sau đó, bạn có thể sử dụng các nhóm trong CouchDB để kiểm soát những tài liệu mà mỗi người dùng có quyền ghi vào. Ví dụ:bạn có thể tạo cơ sở dữ liệu cho người dùng đó để họ có thể ghi vào và sau đó thêm họ vào một nhóm có quyền truy cập đọc vào các cơ sở dữ liệu khác theo yêu cầu.

Bước 4 - Tạo Tài liệu Sản phẩm

Bây giờ, hãy tạo tài liệu đầu tiên của chúng ta bằng Futon qua các bước sau:

  1. Mở mycouchshop cơ sở dữ liệu.
  2. Nhấp vào "Tài liệu Mới".
  3. Nhấp vào "Thêm trường" để bắt đầu thêm dữ liệu vào tài liệu JSON. Lưu ý rằng ID được điền sẵn cho bạn như thế nào, tôi thực sự khuyên bạn không nên thay đổi điều này. Thêm khóa "tên" với giá trị của "Nettuts CouchDB Tutorial One".
  4. Đảm bảo rằng bạn nhấp vào dấu kiểm bên cạnh mỗi thuộc tính để lưu nó.
  5. Nhấp vào "Lưu tài liệu".

Đi lên một cấp độ, quay lại cơ sở dữ liệu và bạn sẽ thấy một tài liệu được liệt kê với ID trước đó làm khóa và một giá trị bắt đầu bằng {rev: . Đây là tài liệu JSON mà bạn vừa tạo.

Bước 5 - Cập nhật tài liệu

CouchDB là cơ sở dữ liệu chỉ thêm vào - các bản cập nhật mới được thêm vào cơ sở dữ liệu và không ghi đè lên phiên bản cũ. Mỗi bản cập nhật mới cho tài liệu JSON có ID đã có trước sẽ thêm một bản sửa đổi mới. Đây là ý nghĩa của khóa sửa đổi được chèn tự động. Thực hiện theo các bước bên dưới để xem điều này hoạt động:

  • Xem nội dung của mycouchshop cơ sở dữ liệu, hãy nhấp vào bản ghi duy nhất hiển thị.
  • Thêm một thuộc tính khác với khóa "loại" và giá trị "sản phẩm".
  • Nhấn "Lưu tài liệu".

Sau khi nhấn lưu, khóa sửa đổi mới sẽ hiển thị bắt đầu bằng số 2. Quay lại cấp độ với mycouchshop chế độ xem cơ sở dữ liệu, bạn sẽ vẫn chỉ thấy một tài liệu, đây là bản sửa đổi mới nhất của tài liệu sản phẩm của chúng tôi.

Bản sửa đổi

Trong khi CouchDB sử dụng các bản sửa đổi trong nội bộ, hãy cố gắng không dựa vào nó quá nhiều. Các sửa đổi có thể được làm sạch thông qua Futon khá dễ dàng và nó không được thiết kế để sử dụng như một hệ thống kiểm soát sửa đổi. CouchDB sử dụng các bản sửa đổi như một phần của chức năng sao chép của nó.

Bước 6 - Tạo tài liệu bằng cURL

Tôi đã đề cập rằng CouchDB sử dụng giao diện RESTful và người đọc mắt đại bàng sẽ nhận thấy Futon sử dụng giao diện này thông qua bảng điều khiển trong Firebug. Trong trường hợp bạn không làm như vậy, hãy chứng minh điều này bằng cách chèn tài liệu bằng cURL qua Terminal.

Đầu tiên , hãy tạo một tài liệu JSON với nội dung bên dưới và lưu nó vào màn hình để gọi tệp person.json .

	{
		"forename":	"Gavin",
		"surname":	"Cooper",
		"type":		"person"
	}

Tiếp theo , mở terminal và thực thi cd ~ / Desktop / đưa bạn vào đúng thư mục và sau đó thực hiện chèn với curl -X POST http://127.0.0.1:5984/mycouchshop/ -d @ person.json -H "Content-Type:application / json" . CouchDB lẽ ra phải trả về một tài liệu JSON tương tự như tài liệu bên dưới.

{"ok":true,"id":"c6e2f3d7f8d0c91ce7938e9c0800131c","rev":"1-abadd48a09c270047658dbc38dc8a892"}

Đây là ID và số sửa đổi của tài liệu được chèn. CouchDB tuân theo quy ước RESTful và do đó:

  • ĐĂNG - tạo một bản ghi mới
  • NHẬN - đọc hồ sơ
  • ĐẶT - cập nhật hồ sơ
  • XÓA - xóa một bản ghi

Bước 7 - Xem tất cả tài liệu

Chúng tôi có thể xác minh thêm phụ trang của mình bằng cách xem tất cả các tài liệu trong mycouchshop của chúng tôi cơ sở dữ liệu bằng cách thực thi curl -X NHẬN http://127.0.0.1:5984/mycouchshop/_all_docs .

Bước 8 - Tạo một chức năng bản đồ đơn giản

Xem tất cả các tài liệu là khá vô ích về mặt thực tế. Điều gì sẽ lý tưởng hơn là xem tất cả các tài liệu sản phẩm. Làm theo các bước bên dưới để đạt được điều này:

  • Trong Futon, nhấp vào chế độ xem thả xuống và chọn "Chế độ xem tạm thời".
  • Đây là trình chỉnh sửa thu nhỏ bản đồ trong Futon. Sao chép đoạn mã dưới đây vào hàm bản đồ.
    			function (doc) {
    				if (doc.type === "product" && doc.name) {
    					emit(doc.name, doc);
    				}
    			}
  • Nhấp vào chạy và bạn sẽ thấy một sản phẩm duy nhất mà chúng tôi đã thêm trước đó.
  • Hãy tiếp tục và đặt chế độ xem này vĩnh viễn bằng cách lưu nó.

Sau khi tạo chức năng bản đồ đơn giản này, bây giờ chúng ta có thể yêu cầu chế độ xem này và xem nội dung của nó qua HTTP bằng lệnh sau curl -X GET http://127.0.0.1:5984/mycouchshop/_design/products/_view/products .

Một điều nhỏ cần lưu ý là cách chúng tôi lấy ID và bản sửa đổi của tài liệu theo mặc định.

Bước 9 - Thực hiện Giảm thiểu

Để thực hiện giảm giá hữu ích, hãy thêm một sản phẩm khác vào cơ sở dữ liệu của chúng tôi và thêm thuộc tính price [giá] với giá trị 1,75 vào sản phẩm đầu tiên của chúng tôi.

	{
		"name":		"My Product",
		"price":	2.99,
		"type":		"product"
	}

Đối với chế độ xem mới của chúng tôi, chúng tôi sẽ bao gồm một phần giảm bớt cũng như một bản đồ. Đầu tiên, chúng ta cần xác định bản đồ như bên dưới.

	function (doc) {
		if (doc.type === "product" && doc.price) {
			emit(doc.id, doc.price);
		}
	}

Chức năng bản đồ trên chỉ đơn giản là kiểm tra xem tài liệu nhập vào có phải là sản phẩm hay không và tài liệu đó có giá hay không. Nếu các điều kiện này được đáp ứng, giá sản phẩm sẽ được phát ra. Chức năng giảm ở bên dưới.

function (keys, prices) {
	return sum(prices);
}

Hàm trên nhận giá và trả về tổng bằng cách sử dụng một trong các hàm giảm được tích hợp sẵn của CouchDB. Đảm bảo bạn chọn tùy chọn giảm ở trên cùng bên phải của bảng kết quả vì bạn có thể không thấy kết quả của việc giảm. Bạn có thể cần phải làm mới trang để xem tùy chọn giảm


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Cài đặt Apache CouchDB trên CentOS 7

  2. Cách cài đặt Apache CouchDB 2.3.0 trong Linux

  3. Cài đặt Apache CouchDB trên Debian 9

  4. Cách cài đặt CouchDB trên Debian 10

  5. Cài đặt Apache CouchDB trên CentOS 8