[Azure] Tiêu chí chọn kho dữ liệu

[Azure] Tiêu chí chọn kho dữ liệu

Dịch từ bài gốc Criteria for choosing a data store (sử dụng Google Translate)

Bài viết này mô tả các tiêu chí so sánh bạn nên sử dụng khi đánh giá một kho dữ liệu trên nền tảng Microsoft Azure. Mục đích là giúp bạn xác định loại lưu trữ dữ liệu nào có thể đáp ứng các yêu cầu của giải pháp của bạn. Bài viết có những khái niệm rất cơ bản cần nhớ.

Xem xét chung: Hãy ghi nhớ những lưu ý sau khi thực hiện lựa chọn của bạn.

Yêu cầu chức năng (Functional Requirements)

  • Định dạng dữ liệu. Bạn định lưu trữ loại dữ liệu nào? Các loại phổ biến bao gồm dữ liệu giao dịch, đối tượng JSON, đo từ xa, chỉ mục tìm kiếm hoặc tệp phẳng.
  • Kích thước dữ liệu. Các thực thể bạn cần lưu trữ lớn đến mức nào? Liệu các thực thể này có cần được duy trì như một tài liệu duy nhất hay chúng có thể được chia thành nhiều tài liệu, bảng, bộ sưu tập, v.v.?
  • Quy mô và cấu trúc. Tổng dung lượng lưu trữ bạn cần là bao nhiêu? Bạn có dự đoán phân vùng dữ liệu của mình không?
  • Các mối quan hệ dữ liệu. Dữ liệu của bạn có cần hỗ trợ mối quan hệ một-nhiều hay nhiều-nhiều không? Bản thân các mối quan hệ có phải là một phần quan trọng của dữ liệu không? Bạn sẽ cần kết hợp hoặc kết hợp dữ liệu từ trong cùng một tập dữ liệu hay từ các tập dữ liệu bên ngoài?
  • Mô hình nhất quán. Tầm quan trọng của các bản cập nhật được thực hiện ở một nút để xuất hiện ở các nút khác, trước khi có thể thực hiện các thay đổi tiếp theo? Bạn có thể chấp nhận sự nhất quán cuối cùng không? Bạn có cần đảm bảo ACID cho các giao dịch không?
  • Tính linh hoạt của lược đồ. Bạn sẽ áp dụng loại lược đồ nào cho dữ liệu của mình? Bạn sẽ sử dụng một lược đồ cố định, một phương pháp tiếp cận ghi trên lược đồ hay một phương pháp tiếp cận lược đồ khi đọc?
  • Đồng thời. Bạn muốn sử dụng loại cơ chế đồng thời nào khi cập nhật và đồng bộ hóa dữ liệu? Ứng dụng sẽ thực hiện nhiều cập nhật có thể gây xung đột. Nếu vậy, bạn có thể yêu cầu khóa hồ sơ và kiểm soát đồng thời bi quan. Ngoài ra, bạn có thể hỗ trợ các điều khiển đồng thời lạc quan không? Nếu vậy, điều khiển đồng thời dựa trên dấu thời gian đơn giản là đủ hay bạn cần thêm chức năng của điều khiển đồng thời nhiều phiên bản?
  • Di chuyển dữ liệu. Giải pháp của bạn có cần thực hiện các tác vụ ETL để di chuyển dữ liệu đến các cửa hàng hoặc kho dữ liệu khác không?
  • Vòng đời dữ liệu. Dữ liệu có được ghi một lần, đọc nhiều không? Nó có thể được chuyển vào kho mát hoặc kho lạnh?
  • Các tính năng được hỗ trợ khác. Bạn có cần bất kỳ tính năng cụ thể nào khác, chẳng hạn như xác thực lược đồ, tổng hợp, lập chỉ mục, tìm kiếm toàn văn bản, MapReduce hoặc các khả năng truy vấn khác không?

Yêu cầu phi chức năng (Non-functional Requirements)

  • Hiệu suất và khả năng mở rộng. Yêu cầu về hiệu suất dữ liệu của bạn là gì? Bạn có yêu cầu cụ thể về tốc độ nhập dữ liệu và tốc độ xử lý dữ liệu không? Thời gian phản hồi có thể chấp nhận được để truy vấn và tổng hợp dữ liệu sau khi được nhập là bao nhiêu? Bạn sẽ cần kho dữ liệu lớn đến mức nào để mở rộng quy mô? Khối lượng công việc của bạn là đọc nhiều hay ghi nhiều hơn?
  • Độ tin cậy. Bạn cần hỗ trợ SLA tổng thể nào? Bạn cần cung cấp mức độ chịu lỗi nào cho người tiêu dùng dữ liệu? Bạn cần loại khả năng sao lưu và khôi phục nào?
  • Nhân rộng. Dữ liệu của bạn có cần được phân phối giữa nhiều bản sao hoặc nhiều vùng không? Bạn yêu cầu loại khả năng sao chép dữ liệu nào?
  • Hạn mức. Các giới hạn của một kho dữ liệu cụ thể có hỗ trợ các yêu cầu của bạn về quy mô, số lượng kết nối và thông lượng không?

Quản lý và chi phí

  • Dịch vụ quản lý. Khi có thể, hãy sử dụng dịch vụ dữ liệu được quản lý, trừ khi bạn yêu cầu các khả năng cụ thể chỉ có thể tìm thấy trong kho dữ liệu được lưu trữ trên IaaS.
  • Khu vực khả dụng. Đối với các dịch vụ được quản lý, dịch vụ có sẵn ở tất cả các khu vực Azure không? Giải pháp của bạn có cần được lưu trữ ở một số vùng Azure nhất định không?
  • Tính di động. Dữ liệu của bạn có cần được di chuyển đến các trung tâm dữ liệu tại chỗ, bên ngoài hay các môi trường lưu trữ đám mây khác không?
  • Cấp phép. Bạn có ưa thích loại giấy phép độc quyền so với OSS không? Có bất kỳ hạn chế bên ngoài nào khác về loại giấy phép bạn có thể sử dụng không?
  • Tổng chi phí. Tổng chi phí sử dụng dịch vụ trong giải pháp của bạn là bao nhiêu? Cần bao nhiêu phiên bản để chạy, để hỗ trợ các yêu cầu về thời gian hoạt động và thông lượng của bạn? Xem xét chi phí hoạt động trong tính toán này. Một lý do để thích các dịch vụ được quản lý là chi phí vận hành giảm.
  • Hiệu quả chi phí. Bạn có thể phân vùng dữ liệu của mình để lưu trữ hiệu quả hơn không? Ví dụ, bạn có thể di chuyển các đối tượng lớn ra khỏi cơ sở dữ liệu quan hệ đắt tiền vào một kho lưu trữ đối tượng không?

Bảo mật

Bảo mật. Bạn yêu cầu loại mã hóa nào? Bạn có cần mã hóa không? Bạn muốn sử dụng cơ chế xác thực nào để kết nối với dữ liệu của mình?

Kiểm toán. Bạn cần tạo loại nhật ký kiểm tra nào?

Yêu cầu về mạng. Bạn có cần hạn chế hoặc quản lý quyền truy cập vào dữ liệu của mình từ các tài nguyên mạng khác không? Dữ liệu có cần chỉ được truy cập từ bên trong môi trường Azure không? Dữ liệu có cần phải được truy cập từ các địa chỉ IP hoặc mạng con cụ thể không? Nó có cần phải được truy cập từ các ứng dụng hoặc dịch vụ được lưu trữ tại chỗ hoặc trong các trung tâm dữ liệu bên ngoài khác không?

DevOps

  • Bộ kỹ năng. Có ngôn ngữ lập trình cụ thể, hệ điều hành hoặc công nghệ khác mà nhóm của bạn đặc biệt thành thạo trong việc sử dụng không? Có những người khác sẽ gây khó khăn cho nhóm của bạn không?
  • Khách hàng: Có hỗ trợ khách hàng tốt cho các ngôn ngữ phát triển của bạn không?
Comments are closed.