2012-02-07 37 views
27

Tôi không chắc mình đã hiểu Eventstore là gì, tôi đã nghĩ nó như một loại "Transactionlog" cho Domainobjects. Ưu điểm/nhược điểm của nó và kịch bản tốt để sử dụng nó là gì và khi nào nó không nên được sử dụng?Khi nào cần sử dụng Eventstore

EDIT:

Kể từ khi tôi có thể đòi hỏi quá nhiều, tôi sẽ rất vui nếu có sẽ là một "đơn giản" kịch bản khi sử dụng một eventstore và khi không? Nói cách khác: Có thể mô tả 2 kịch bản chỉ trong một số câu hay tôi cần đọc 5 cuốn sách để hiểu nó?

Trả lời

42

Có, tìm nguồn cung ứng sự kiện giống như nhật ký giao dịch cho đối tượng miền của bạn và nhật ký giao dịch là nguồn có thẩm quyền của tất cả dữ liệu của bạn. Bạn có thể có các bản sao của dữ liệu trong các biểu mẫu khác được thiết kế để truy vấn dễ dàng nhưng chúng chỉ là các bản sao có thể bị xóa và xây dựng lại bất cứ lúc nào. Nhật ký giao dịch là nguồn gốc của sự thật.

Tôi đồng ý với Craig rằng thật khó để trả lời câu hỏi của bạn một cách ngắn gọn vì nó rất bối cảnh phụ thuộc, nhưng đây là một danh sách ngắn các lý do tại sao bạn có thể xem xét sử dụng một cửa hàng sự kiện:

  • Bạn quan tâm đến làm phân tích lịch sử phức tạp về dữ liệu của bạn. Ví dụ: một người nào đó có thể đến với bạn trong tương lai và hỏi, "Có bao nhiêu khách hàng của chúng tôi đã đưa một sản phẩm vào giỏ hàng của họ, sau đó lấy nó ra, nhưng sau khi chúng tôi gửi cho họ phiếu giảm giá, đã quay lại và mua nó?" Có thể có một nguồn cung cấp vô tận của các câu hỏi BI như vậy và bạn không thể dự đoán trước tất cả chúng. Nếu bạn nắm bắt tất cả các sự kiện trong hệ thống, bạn có thể tái tạo lại câu trả lời cho bất kỳ câu hỏi nào trong tương lai.
  • Tương tự, bạn quan tâm đến việc kiểm tra và có thể chứng minh mà không nghi ngờ chính xác ai đã thay đổi dữ liệu nào vào thời điểm nào và tại sao. Cửa hàng sự kiện của bạn là nhật ký kiểm tra của bạn.
  • Bạn quan tâm đến việc có một hệ thống có khả năng mở rộng cao. Vì mô hình ghi của một cửa hàng sự kiện chỉ là phụ thêm, nó có thể rất phù hợp với các ứng dụng có khối lượng lớn. Bởi vì nó không phải là quan hệ vốn có, nó thường có thể được phân vùng một cách dễ dàng.

Mặt khác, có một số lý do chính đáng để không làm điều đó:

  • Bạn không có bất kỳ nhu cầu nêu trên.
  • Bạn không muốn đối phó với những rắc rối khi phải xây dựng các công cụ gỡ lỗi để có thể dễ dàng xem và sửa đổi dữ liệu trong cửa hàng sự kiện.
  • Bạn đang xây dựng một dự án ngắn ngủi mà bạn không mong đợi có mặt trong một thời gian dài vì vậy bạn không muốn đầu tư nhiều nỗ lực kiến ​​trúc vào nó.
  • Bạn không sẵn sàng học CQRS, DDD và EDA cùng lúc với sự kiện tìm nguồn cung ứng. Những ý tưởng đó không được yêu cầu nghiêm ngặt cho sự kiện tìm nguồn cung ứng, nhưng chúng thường gắn bó với nhau và giá trị thực sự được tìm thấy khi bạn thay đổi hoàn toàn mô hình của mình và sử dụng chúng cùng nhau. Sự kiện tìm nguồn cung ứng là một phần của một gói các kỹ thuật cùng nhau đại diện cho một cách suy nghĩ rất khác về kiến ​​trúc phần mềm. Nó có thể đáng sợ.
+1

Cảm ơn câu trả lời của bạn, vì đó là chính xác những gì tôi cần (một số ví dụ "đơn giản" cho/chống lại việc sử dụng một cửa hàng sự kiện). –

18

Rất nhiều điều cần đặt ra trong câu hỏi ngăn xếp. Một điều còn thiếu trong câu hỏi của bạn là nhược điểm của nó là gì? Dù sao, thay vì trả lời ở đây, tôi muốn cung cấp một số liên kết đến video để bạn xem. Có rất nhiều bối cảnh cần phải được đặt trước khi câu trả lời cho câu hỏi này có ý nghĩa.

Greg Young: Có một video ~ 2 giờ here cung cấp tổng quan tuyệt vời về mọi thứ bạn đang yêu cầu trong câu hỏi của mình. Ngoài ra còn có lớp học trực tuyến ~ 6 giờ here.

Udi Dahan: Có video dài 1 giờ here cung cấp cái nhìn về thời điểm sử dụng các công nghệ này.

Danh sách gửi thư: Có một nhóm here nơi bạn có thể đặt tất cả câu hỏi của mình và thảo luận tốt đẹp về chủ đề.

Hy vọng điều này hữu ích. Chỉ có rất nhiều câu hỏi của bạn mà tôi không nghĩ rằng nó sẽ có thể làm bạn hoặc bất cứ ai khác tốt để thử và trả lời nó trong một cuốn sách ngắn và những người lừa dối.


Cập nhật: Tôi không nghĩ bạn cần đọc 5 cuốn sách hoặc thậm chí xem video bên dưới. Tôi nghĩ rằng nó cũng có giá trị thời gian của bạn để làm như vậy, nhưng không cần thiết. Vấn đề với câu hỏi của bạn là các kịch bản "đơn giản" thường không cần tìm nguồn cung ứng sự kiện. Hầu hết các ứng dụng sẽ chủ yếu là CRUD và hướng dữ liệu. Có lẽ đây là câu trả lời cho câu hỏi của bạn. Nếu không có nhiều "hành vi" trong hệ thống của bạn, thì bạn không cần nó. Nếu có rất nhiều hành vi, thì bạn có thể cần nó.

+0

Cảm ơn câu trả lời của bạn, các liên kết đã giúp (mặc dù tôi nghĩ rằng tôi đã biết hầu hết trong số họ). Chỉ cần nhìn thấy bản cập nhật của bạn trong câu trả lời - điều đó đã giúp ích nhiều hơn. Upvoted câu trả lời của bạn nhưng tôi nghĩ rằng câu trả lời của Eric Lee phù hợp với câu hỏi của tôi tốt hơn. –

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