CouchDB - Giới thiệu
Hệ quản trị cơ sở dữ liệu cung cấp cơ chế lưu trữ và truy xuất dữ liệu. Có ba loại hệ quản trị cơ sở dữ liệu chính là RDBMS (Hệ thống quản lý cơ sở dữ liệu quan hệ), OLAP (Hệ thống xử lý phân tích trực tuyến) và NoSQL.
RDBMS
RDBMS là viết tắt của Relational Database Management System. RDBMS là cơ sở cho SQL và cho tất cả các hệ thống cơ sở dữ liệu hiện đại như MS SQL Server, IBM DB2, Oracle, MySQL và Microsoft Access.
Hệ quản trị cơ sở dữ liệu quan hệ (RDBMS) là một hệ quản trị cơ sở dữ liệu (DBMS) dựa trên mô hình quan hệ như được giới thiệu bởi EF Codd.
Dữ liệu trong RDBMS được lưu trữ trong các đối tượng cơ sở dữ liệu được gọi là tables. Bảng là một tập hợp các mục dữ liệu có liên quan và nó bao gồm các cột và hàng. Nó chỉ lưu trữ dữ liệu có cấu trúc.
OLAP
Máy chủ xử lý phân tích trực tuyến (OLAP) dựa trên mô hình dữ liệu đa chiều. Nó cho phép các nhà quản lý và nhà phân tích có được cái nhìn sâu sắc về thông tin thông qua việc truy cập thông tin nhanh chóng, nhất quán và tương tác.
Cơ sở dữ liệu NoSQL
Cơ sở dữ liệu NoSQL (đôi khi được gọi là Không chỉ SQL) là một cơ sở dữ liệu cung cấp cơ chế lưu trữ và truy xuất dữ liệu khác với quan hệ bảng được sử dụng trong cơ sở dữ liệu quan hệ. Các cơ sở dữ liệu này không có giản đồ, hỗ trợ sao chép dễ dàng, có API đơn giản, cuối cùng nhất quán và có thể xử lý lượng dữ liệu khổng lồ (dữ liệu lớn).
Mục tiêu chính của cơ sở dữ liệu NoSQL là có những điều sau:
- Sự đơn giản của thiết kế,
- Chia tỷ lệ theo chiều ngang và
- Kiểm soát tốt hơn đối với tình trạng sẵn có.
Cơ sở dữ liệu NoSQL sử dụng cấu trúc dữ liệu khác so với cơ sở dữ liệu quan hệ. Nó làm cho một số hoạt động nhanh hơn trong NoSQL. Tính phù hợp của một cơ sở dữ liệu NoSQL nhất định phụ thuộc vào vấn đề mà nó phải giải quyết. Các cơ sở dữ liệu này lưu trữ cả dữ liệu có cấu trúc và dữ liệu không có cấu trúc như tệp âm thanh, tệp video, tài liệu, v.v. Các cơ sở dữ liệu NoSQL này được phân loại thành ba loại và chúng được giải thích bên dưới.
Key-value Store- Các cơ sở dữ liệu này được thiết kế để lưu trữ dữ liệu theo các cặp khóa-giá trị và các cơ sở dữ liệu này sẽ không có bất kỳ lược đồ nào. Trong các cơ sở dữ liệu này, mỗi giá trị dữ liệu bao gồm một khóa được lập chỉ mục và một giá trị cho khóa đó.
Ví dụ - BerkeleyDB, Cassandra, DynamoDB, Riak.
Column Store- Trong các cơ sở dữ liệu này, dữ liệu được lưu trữ trong các ô được nhóm thành các cột dữ liệu, và các cột này được tiếp tục nhóm lại thành Họ cột. Các họ cột này có thể chứa bất kỳ số lượng cột nào.
Ví dụ - BigTable, HBase và HyperTable.
Document Store- Đây là những cơ sở dữ liệu được phát triển dựa trên ý tưởng cơ bản về các kho khóa-giá trị nơi "tài liệu" chứa nhiều dữ liệu phức tạp hơn. Ở đây, mỗi tài liệu được gán một khóa duy nhất, được sử dụng để truy xuất tài liệu. Chúng được thiết kế để lưu trữ, truy xuất và quản lý thông tin hướng tài liệu, còn được gọi là dữ liệu bán cấu trúc.
Ví dụ - CouchDB và MongoDB.
CouchDB là gì?
CouchDB là một cơ sở dữ liệu mã nguồn mở được phát triển bởi nền tảng phần mềm Apache. Trọng tâm là tính dễ sử dụng, bao quát web. Nó là một cơ sở dữ liệu lưu trữ tài liệu NoSQL.
Nó sử dụng JSON, để lưu trữ dữ liệu (tài liệu), java script làm ngôn ngữ truy vấn của nó để chuyển đổi tài liệu, giao thức http cho api để truy cập tài liệu, truy vấn các chỉ mục bằng trình duyệt web. Nó là một ứng dụng đa tổng thể được phát hành vào năm 2005 và nó đã trở thành một dự án apache vào năm 2008.
Tại sao CouchDB?
CouchDB có API REST dựa trên HTTP, giúp giao tiếp với cơ sở dữ liệu dễ dàng. Và cấu trúc đơn giản của các tài nguyên và phương thức HTTP (GET, PUT, DELETE) rất dễ hiểu và dễ sử dụng.
Khi chúng tôi lưu trữ dữ liệu trong cấu trúc dựa trên tài liệu linh hoạt, không cần phải lo lắng về cấu trúc của dữ liệu.
Người dùng được cung cấp ánh xạ dữ liệu mạnh mẽ, cho phép truy vấn, kết hợp và lọc thông tin.
CouchDB cung cấp tính năng sao chép dễ sử dụng, bằng cách sử dụng đó bạn có thể sao chép, chia sẻ và đồng bộ hóa dữ liệu giữa cơ sở dữ liệu và máy.
Mô hình dữ liệu
Cơ sở dữ liệu là cấu trúc / vùng chứa dữ liệu ngoài cùng trong CouchDB.
Mỗi cơ sở dữ liệu là một tập hợp các tài liệu độc lập.
Mỗi tài liệu duy trì dữ liệu riêng và lược đồ độc lập.
Siêu dữ liệu tài liệu chứa thông tin sửa đổi, giúp có thể hợp nhất các khác biệt đã xảy ra trong khi cơ sở dữ liệu bị ngắt kết nối.
CouchDB thực hiện kiểm soát đồng thời nhiều phiên bản, để tránh phải khóa trường cơ sở dữ liệu trong khi ghi.
Tính năng của CouchDB: Giảm nội dung
Kho lưu trữ tài liệu
CouchDB là một cơ sở dữ liệu NoSQL lưu trữ tài liệu. Nó cung cấp phương tiện lưu trữ các tài liệu với các tên duy nhất và nó cũng cung cấp một API gọi là RESTful HTTP API để đọc và cập nhật (thêm, sửa, xóa) các tài liệu cơ sở dữ liệu.
Trong CouchDB, tài liệu là đơn vị dữ liệu chính và chúng cũng bao gồm siêu dữ liệu. Các trường tài liệu được đặt tên duy nhất và chứa các giá trị thuộc nhiều loại khác nhau (văn bản, số, Boolean, danh sách, v.v.) và không có giới hạn đặt cho kích thước văn bản hoặc số phần tử.
Các bản cập nhật tài liệu (thêm, sửa, xóa) tuân theo Atomicity, tức là chúng sẽ được lưu hoàn toàn hoặc không lưu chút nào. Cơ sở dữ liệu sẽ không có bất kỳ tài liệu được lưu hoặc chỉnh sửa một phần nào.
Cấu trúc tài liệu Json
{
"field" : "value",
"field" : "value",
"field" : "value",
}
Thuộc tính ACID
CouchDB chứa các thuộc tính ACID là một trong những tính năng của nó.
Tính nhất quán - Khi dữ liệu trong CouchDB đã được cam kết, thì dữ liệu này sẽ không bị sửa đổi hoặc ghi đè. Do đó, CouchDB đảm bảo rằng tệp cơ sở dữ liệu sẽ luôn ở trạng thái nhất quán.
Mô hình điều khiển đồng thời nhiều phiên bản (MVCC) được sử dụng bởi các lần đọc CouchDB, do đó máy khách sẽ nhìn thấy ảnh chụp nhanh nhất quán của cơ sở dữ liệu từ đầu đến cuối hoạt động đọc.
Bất cứ khi nào tài liệu được cập nhật, CouchDB sẽ đẩy dữ liệu vào đĩa và tiêu đề cơ sở dữ liệu cập nhật được ghi thành hai phần liên tiếp và giống hệt nhau để tạo thành 4k đầu tiên của tệp, sau đó đồng bộ hóa vào đĩa. Cập nhật một phần trong quá trình xả sẽ bị loại bỏ.
Nếu lỗi xảy ra trong khi cam kết tiêu đề, bản sao còn sót lại của các tiêu đề giống hệt trước đó sẽ vẫn còn, đảm bảo tính đồng nhất của tất cả dữ liệu đã cam kết trước đó. Ngoại trừ khu vực tiêu đề, kiểm tra tính nhất quán hoặc sửa chữa sau sự cố hoặc mất điện là không bao giờ cần thiết.
Nén chặt
Bất cứ khi nào không gian trong tệp cơ sở dữ liệu bị lãng phí trên một mức độ nhất định, tất cả dữ liệu đang hoạt động sẽ được sao chép (nhân bản) sang một tệp mới. Khi quá trình sao chép hoàn tất, tệp cũ sẽ bị loại bỏ. Tất cả điều này được thực hiện bởi quá trình nén. Cơ sở dữ liệu vẫn trực tuyến trong quá trình nén và tất cả các cập nhật và đọc được phép hoàn tất thành công.
Lượt xem
Dữ liệu trong CouchDB được lưu trữ trong các tài liệu bán cấu trúc linh hoạt với các cấu trúc ngầm định riêng lẻ, nhưng nó là một mô hình tài liệu đơn giản để lưu trữ và chia sẻ dữ liệu. Nếu chúng ta muốn xem dữ liệu của mình theo nhiều cách khác nhau, chúng ta cần một cách để lọc, sắp xếp và báo cáo về dữ liệu chưa được phân tách thành các bảng.
Để giải quyết vấn đề này, CouchDB cung cấp một mô hình khung nhìn. Chế độ xem là phương pháp tổng hợp và báo cáo các tài liệu trong cơ sở dữ liệu và được xây dựng theo yêu cầu để tổng hợp, nối và báo cáo các tài liệu trong cơ sở dữ liệu. Bởi vì các dạng xem được tạo động và không ảnh hưởng đến tài liệu bên dưới, bạn có thể có nhiều dạng xem khác nhau của cùng một dữ liệu tùy thích.
Lịch sử
- CouchDB được viết bằng ngôn ngữ lập trình Erlang.
- Nó được bắt đầu bởi Damien Katz vào năm 2005.
- CouchDB trở thành một dự án Apache vào năm 2008.
Phiên bản hiện tại của CouchDB là 1.61.