CouchDB là một mạng ngang hàng dựa trên hệ thống cơ sở dữ liệu phân tán.Bất cứ một máy nào trong các máy dùng CouchDB(Máy chủ và các máy client) đều có một "nhân bản" cơ sở dữ liệu độc lập, mà các ứng dựng tƣơng tác đầy đủ với cơ sở dữ liệu (truy vấn, thêm xóa sửa).Khi các ứng dụng kết nối lại (online) hoặc theo một chu kỳ, thì
22
dữ liệu sẽ đƣợc đồng bộ 2 chiều.Rất thích hợp với các ứng dụng web hiện nay.Ví dụ nhƣ google docs.Bạn có thể soạn thảo offline khi không kết nối mạng.Khi kết nối mạng.Thì sẽ đồng bộ lại dữ liệu với máy chủ.Vậy điều này sẽ dẫn đến một vấn đề là nếu có 2 hay nhiều máy chủ cùng thay đổi dữ liệu trên cùng một văn bản thì sao.Có thể sẽ xảy ra xung đột.Vậy CouchDB xử lý vấn đề này nhƣ thế nào?
Couch DB đƣợc xây dựng để phát hiện và xử lý những xung đột và quá trình sao chép là tăng dần và nhanh, sao chép văn bản nào thay đổi so với các nhân bản trƣớc.Điều này dẫn đến việc cập nhật các bản ghi và đồng bộ rất nhanh.
Mô hình nhân bản trong CouchDB là mô hình đƣợc thiết kế tốt để tăng tốc, thích hợp cho phân phối.Nền tảng nhân bản này cung cấp một tập các tính năng sau:
Nhân bản từ Master đến máy Slave
Đồng bộ nhân bản giữa máy 2 máy Master với nhau Lọc các nhân bản
Nhân bản tăng dần và 2 chiều (chỉ cập nhật các các văn bản thay đổi từ hai chiều)
Quản lý các xung đột
Các đặc điểm nhân bản có thể đƣợc sử dụng để kết hợp tạp ra các giải pháp mạnh mẽ tới rất nhiều vấn đề trong ngành Công nghệ thông tin.Ngoài các tính năng nhân bản trên, thì ƣu thế của CouchDB về tính ổn định và khả năng mở rộng là một ƣu thế lớn.Nó đƣợc tăng cƣờng hơn nữa khi đƣợc viết trên ngôn ngữ lập trình Erlang.Erlang đƣợc xây dựng để hỗ trợ tối đa cho việc phân phối, khả năng tức thời, khả năng chịu lỗi cao và đã có uy tín trong nhiều năm trong việc xây dựng các hệ thống đáng tin cậy trong ngày công nghiệp viễn thông.Theo thiết kế thì ngôn ngữ Erlang và thời gian chạy đƣợc tận dụng lợi thế phần cứng có nhiều lõi CPU