2011-09-04 59 views
5

Theo lý thuyết CAP, Cassandra chỉ có thể có tính nhất quán cuối cùng. Để làm cho mọi thứ tồi tệ hơn, nếu chúng ta có nhiều lần đọc và viết trong một yêu cầu mà không xử lý thích hợp, chúng ta thậm chí có thể mất tính thống nhất hợp lý. Nói cách khác, nếu chúng ta làm việc nhanh, chúng ta có thể làm điều đó sai.Giao dịch với mô hình dữ liệu Cassandra

Trong khi đó thực hành tốt nhất để thiết kế mô hình dữ liệu cho Cassandra là suy nghĩ về các truy vấn chúng ta sẽ có, và sau đó thêm một CF cho nó. Bằng cách này, để thêm/cập nhật một thực thể có nghĩa là cập nhật nhiều lượt xem/CF trong nhiều trường hợp. Không có tính năng giao dịch nguyên tử, thật khó để làm điều đó đúng. Nhưng với nó, chúng ta lại mất đi phần A và P.

Tôi không thấy mối quan tâm này nhiều người, do đó tôi tự hỏi tại sao.

  • Đây có phải là vì chúng tôi luôn có thể tìm cách thiết kế mô hình dữ liệu của mình để tránh làm nhiều lần đọc và viết trong một phiên?
  • Đây có phải là vì chúng tôi có thể bỏ qua phần 'đúng' không?
  • Trong thực tế, chúng ta luôn có tính năng ACID ở đâu đó ở giữa không? Tôi có nghĩa là có thể thực hiện trong lớp ứng dụng hoặc thêm một middleware để xử lý nó?

Trả lời

2

Nó liên quan đến mọi người, nhưng có lẽ bạn đang sử dụng cassandra vì một máy chủ cơ sở dữ liệu không thể đáp ứng nhu cầu của bạn do các vấn đề về độ rộng hoặc độ tin cậy. Bởi vì điều này, bạn buộc phải làm việc xung quanh những hạn chế của một hệ thống phân tán.

Trong thực tế, chúng tôi luôn có tính năng ACID ở đâu đó trong trung tâm ? Tôi có nghĩa là có thể thực hiện trong lớp ứng dụng hoặc thêm một middleware để xử lý nó?

Không, bạn thường không có axit ở một nơi nào khác, như có lẽ một nơi khác phải được phân phối trên nhiều máy. Thay vào đó, bạn thiết kế ứng dụng của mình xung quanh các giới hạn của một hệ thống phân tán.

Nếu bạn đang cập nhật nhiều cột để thỏa mãn các truy vấn, bạn có thể xem phần eventually atomic trong bản trình bày này để biết các ý tưởng về cách thực hiện. Về cơ bản bạn viết đủ thông tin về bản cập nhật của bạn cho cassandra trước khi bạn viết. Bằng cách đó nếu viết không thành công, bạn có thể thử lại sau.

Nếu bạn có thể cấu trúc ứng dụng của mình theo cách như vậy, sử dụng dịch vụ phối hợp như Zookeeper hoặc cages có thể hữu ích.

+0

Cảm ơn và xin lỗi vì đã trả lời muộn. – aXqd

Các vấn đề liên quan