Chuyển đến nội dung chính
Kỹ thuật Dữ liệu

Data Contract là gì? Hướng dẫn cho người mới bắt đầu kèm ví dụ

Đạt khả năng mở rộng trong hệ thống dữ liệu phân tán và giảm lỗi.
Mike Shakhomirov's photo
Mike Shakhomirov
Đã cập nhật · 11 phút đọc

Khám phá cùng AI

ChatGPTClaudePerplexity

Tạo tài khoản miễn phí của bạn

Luyện tập và Lộ trình tiến trình của bạn.

Tiếp Tục Với Google
Bằng cách tiếp tục, bạn chấp nhận Điều khoản sử dụng, Chính sách bảo mật và việc dữ liệu của bạn được lưu trữ tại Hoa Kỳ.

Data contract là xương sống của chất lượng dữ liệu và khả năng mở rộng đối với các giải pháp dữ liệu phân tán. Chúng quy định định dạng, schema và các giao thức chi phối việc trao đổi giữa các thực thể trong cơ sở dữ liệu. Những thỏa thuận chính thức này loại bỏ sự mơ hồ và các giả định không được tài liệu hóa về dữ liệu.

Trong bài viết này, tôi sẽ làm rõ khái niệm data contract bằng cách giới thiệu cả kỹ thuật nền tảng lẫn nâng cao để hỗ trợ triển khai hiệu quả.

Tìm hiểu về Data Contract

Một data contract đơn lẻ mô tả chính xác các tham số cho việc trao đổi dữ liệu giữa hai mô hình. Những thỏa thuận chính thức này đảm bảo không còn mơ hồ về định dạng và schema của dữ liệu.

Định nghĩa và xác thực data contract đóng vai trò then chốt cho hợp tác hiệu quả giữa các nhóm.

Tóm lại, data contract là thỏa thuận chính thức giữa quy trình làm thay đổi trạng thái gốc của dữ liệu (bên sản xuất) và các đích đến (bên tiêu thụ). Nó rất giống cách vận hành của hợp đồng kinh doanh: thể hiện nghĩa vụ giữa nhà cung cấp và người tiêu dùng của một sản phẩm kinh doanh. Data contract làm điều tương tự với sản phẩm dữ liệu, như bảng, view, mô hình dữ liệu, v.v.

Mục tiêu là giảm gián đoạn hạ lưu trong pipeline dữ liệu và khiến các phép biến đổi dữ liệu ổn định, đáng tin cậy.

Các thành phần chính của một data contract gồm schema (cột và định dạng), phần lớp ngữ nghĩa (chỉ số, phép tính và ràng buộc), thỏa thuận mức dịch vụ (SLA) và quản trị dữ liệu.

Lợi ích của data contract bao gồm:

  • Tự động hóa và kiểm tra chất lượng dữ liệu khi tạo mới hoặc cập nhật đầu ra dữ liệu.
  • Kích hoạt khả năng mở rộng hiệu quả, đặc biệt với kiến trúc dữ liệu phân tán, ví dụ data mesh.
  • Cải thiện vòng đời phát triển dữ liệu với trọng tâm là xây dựng công cụ xác thực hợp đồng.
  • Thúc đẩy hợp tác thông qua phản hồi giữa bên sản xuất và bên tiêu thụ dữ liệu.

Hình minh họa cách data contract hoạt động.

Data contract. Hình do tác giả cung cấp.

Ví dụ data contract với dbt

Trong một data contract, schema định nghĩa tên thuộc tính, kiểu dữ liệu và thuộc tính có bắt buộc hay không. Chúng cũng có thể quy định định dạng, độ dài và phạm vi giá trị chấp nhận được cho các cột.

Hãy xét một schema mô hình dbt được định nghĩa như sau trong tệp YAML. Schema bảng của chúng ta được khai báo dưới columns:

models:
 - name: dim_orders
   config:
     materialized: table
     contract:
       enforced: true
   columns:
     - name: order_id
       data_type: int
       constraints:
         - type: not_null
     - name: order_type
       data_type: string

Giờ hãy giả sử chúng ta định nghĩa mô hình dim_orders như sau:

select
 'abc123' as order_id,
 'Some order type' as order_type

Khai báo contract với enforced: true trong định nghĩa mô hình sẽ kích hoạt lỗi sau nếu ta cố materialize dim_orders thành một bảng trên nền tảng dữ liệu:

20:53:45  Compilation Error in model dim_customers (models/dim_orders.sql)
20:53:45    This model has an enforced contract that failed.
20:53:45    Please ensure the name, data_type, and number of columns in your contract match the columns in your model's definition.
20:53:45
20:53:45    | column_name | definition_type | contract_type | mismatch_reason    |
20:53:45    | ----------- | --------------- | ------------- | ------------------ |
20:53:45    | order_id    | TEXT            | INT           | data type mismatch |
20:53:45
20:53:45
20:53:45    > in macro assert_columns_equivalent (macros/materializations/models/table/columns_spec_ddl.sql)

Tình huống tương tự cũng sẽ xảy ra với các cột thừa, kiểm tra SLA và metadata bị thiếu, nếu chúng ta lựa chọn định nghĩa chúng.

Một ví dụ dbt nâng cao hơn sẽ bao gồm các ràng buộc mô hình được cưỡng chế:

# models/schema.yaml
models:
 - name: orders
  
   # required
   config:
     contract:
       enforced: true
  
   # model-level constraints
   constraints:
     - type: primary_key
       columns: [id]
     - type: FOREIGN_KEY # multi_column
       columns: [order_type, SECOND_COLUMN, ...]
       expression: "OTHER_MODEL_SCHEMA.OTHER_MODEL_NAME (OTHER_MODEL_FIRST_COLUMN, OTHER_MODEL_SECOND_COLUMN, ...)"
     - type: check
       columns: [FIRST_COLUMN, SECOND_COLUMN, ...]
       expression: "FIRST_COLUMN != SECOND_COLUMN"
       name: HUMAN_FRIENDLY_NAME
     - type: ...
  
   columns:
     - name: FIRST_COLUMN
       data_type: DATA_TYPE
      
       # column-level constraints
       constraints:
         - type: not_null
         - type: unique
         - type: foreign_key
           expression: OTHER_MODEL_SCHEMA.OTHER_MODEL_NAME (OTHER_MODEL_COLUMN)
         - type: …

Cung cấp định nghĩa schema dưới dạng tập luật và ràng buộc áp dụng cho các cột của một tập dữ liệu mang lại thông tin rất quan trọng cho xử lý và phân tích dữ liệu.

Schema có xu hướng thay đổi theo thời gian.

Đây là kịch bản thường gặp. Hãy tưởng tượng bảng nguồn của chúng ta thêm một cột đã được hợp đồng hóa:

select
 'abc123' as order_id,
 'Some order type' as order_type,
 'USD' as currency

Điều cốt yếu là phải cân nhắc thay đổi schema khi thực hiện cập nhật tăng dần, nếu không đầu ra của mô hình tăng dần ở hạ lưu sẽ làm mất hiệu lực hợp đồng. 

Có thể giải quyết bằng cách thêm on_schema_change: append vào chiến lược incremental của dbt.

Xác thực schema có thể tường minh hoặc ngầm định.

Một số định dạng tệp big data như AVRO và Parquet hỗ trợ schema tích hợp và định nghĩa schema ngầm định theo mặc định, nên không cần xác thực ngoài bổ sung.

Ngược lại, các định dạng tệp không schema như JSON cần xác thực schema bên ngoài. Một số thư viện Python như pydantic hoặc một @dataclass đơn giản có thể thực hiện việc này:

from pydantic import BaseModel
class ConnectionDataRecord(BaseModel):
   user: str
   ts: int
record = ConnectionDataRecord(user="user1", ts=123456789)

Nếu chúng ta phá vỡ quy tắc và gán các giá trị không khớp tiêu chí, ngoại lệ sẽ được ném ra. Ví dụ, sẽ xảy ra ngoại lệ nếu ta thử gọi ConnectionDataRecord('', 1).

Data Contract ở cấp độ Ngữ nghĩa

Xác thực dữ liệu ngữ nghĩa đảm bảo dữ liệu nhất quán về logic và phù hợp với logic nghiệp vụ.

Các xác thực ngữ nghĩa phải được cưỡng chế một cách tường minh.

Thật vậy, không giống các kiểm tra schema, data contract ngữ nghĩa dựa vào logic nghiệp vụ và phải được triển khai bên ngoài.

Trong nhiều kịch bản, ngữ nghĩa trông như phần mở rộng của các hợp đồng đã được xác thực schema. Thường thì nó phụ thuộc vào quy tắc nghiệp vụ và thể hiện một tập điều kiện theo dòng mà mô hình dữ liệu của chúng ta phải tuân thủ. 

Ví dụ về một hợp đồng ngữ nghĩa có thể như sau:

  • Độ lệch chỉ số: so với trung bình trượt hoặc bất kỳ ngưỡng nào khác. Thực tế, chúng ta có thể chấp nhận số người dùng hoạt động của ngày hôm qua thấp hơn 75% trung bình 7 ngày nhưng sẽ không chấp nhận mức 0%.
  • Logic nghiệp vụ: Cờ cảnh báo giám sát giao dịch và điểm số phòng chống gian lận. Trong kịch bản này, khoản chi trả phải bằng 0.
  • Dòng dõi dữ liệu (data lineage): Mô tả cách các thực thể dữ liệu tiến hóa. Chẳng hạn, transaction_completed_at không thể xảy ra trước created_at.
  • Toàn vẹn tham chiếu: Mối quan hệ giữa các thực thể rất quan trọng và cũng có thể được mô tả bằng hợp đồng ngữ nghĩa. Xem đoạn mã dbt dưới đây. Nó cho biết mỗi refund_id của hoàn tiền ánh xạ về một transaction.id hợp lệ.
- name: refunds
   enabled: true
   description: An incremental table
 columns:
     - name: refund_id
       tests:
         - relationships:
             tags: ['relationship']
             to: ref('transactions')
             field: id

Người dùng cuối sẽ tự quyết định mức cảnh báo cho các hợp đồng ngữ nghĩa, và điều này thường được triển khai bằng các bài kiểm tra chất lượng dữ liệu tùy chỉnh.

Nhiều quy tắc logic nghiệp vụ thường liên quan đến toàn vẹn dữ liệu. Các kịch bản dữ liệu phi logic có thể phát sinh từ lỗi cấu hình cơ sở dữ liệu và máy chủ hoặc việc vô tình đưa dữ liệu thử nghiệm vào môi trường sản xuất. Các kiểm tra toàn vẹn dữ liệu được thiết kế để xác thực dữ liệu theo những quy tắc đó, giúp nhận diện các giá trị có vẻ không đúng hoặc phi logic.

Các thực thể trong cơ sở dữ liệu luôn có liên hệ với nhau. Đây gọi là mối quan hệ thực thể và thường được thể hiện bằng sơ đồ quan hệ thực thể (ERD). Toàn vẹn tham chiếu không đầy đủ có thể dẫn đến các vấn đề như dữ liệu thiếu hoặc không đầy đủ. Data contract phải giải quyết những rủi ro này để đảm bảo tính toàn vẹn và độ chính xác của dữ liệu.

Ví dụ, một mối quan hệ phổ biến là quan hệ một-nhiều giữa customers và orders nơi một khách hàng có thể có nhiều orders. Trong kịch bản này, một đơn hàng chỉ hợp lệ nếu chứa customer_id hợp lệ trong tập dữ liệu customers.

Loại ràng buộc này, một ràng buộc toàn vẹn tham chiếu, đảm bảo mối quan hệ giữa các thực thể được duy trì chính xác.

Service Level Agreement (SLA) trong Data Contract

SLA là một lớp kiểm tra chất lượng dữ liệu bổ sung có thể được triển khai thông qua data contract.

SLA đề cập đến độ tươi của dữ liệu.

Vì các mô hình dữ liệu thường xuyên được cập nhật với dữ liệu mới, SLA có thể bao gồm các kiểm tra về thời điểm muộn nhất mà dữ liệu mới dự kiến khả dụng hoặc độ trễ tối đa cho phép. Ví dụ, trong dbt, có thể thực hiện bằng kiểm tra freshness:

- name: orders
   enabled: true
   description: A source table declaration
   tests:
     - dbt_utils.recency: # https://github.com/dbt-labs/dbt-utils#recency-source
         tags: ['freshness']
         datepart: day
         field: timestamp
         interval: 1

Giả sử chúng ta muốn tạo báo cáo về dữ kiện của ngày hôm qua; để làm vậy, chúng ta muốn đảm bảo dữ liệu tồn tại. Thật kỳ lạ nếu không thấy đơn hàng mới trong vài ngày hoặc lâu hơn.

Trong ví dụ dưới đây, ta có thể kiểm tra tập dữ liệu về các độ trễ đơn hàng bất thường bằng cấu hình test trong dbt. Điều này cho phép bạn chọn và tham chiếu bài kiểm tra bằng tên cụ thể đó.

version: 2
models:
 - name: orders
   columns:
     - name: status
       tests:
         - accepted_values:
             name: unexpected_order_status_today
             values: ['placed', 'shipped', 'completed', 'returned']
             config:
               where: "order_date = current_date"

Bằng cách đặt tên tùy chỉnh, bạn có toàn quyền kiểm soát cách bài kiểm tra hiển thị trong log và các tạo phẩm metadata.

Tương tự, trong pipeline dữ liệu thời gian thực, dữ liệu thường được kỳ vọng không cũ quá vài giờ. SLA đặc biệt quan trọng với ứng dụng xử lý luồng, nơi dữ liệu được xử lý thời gian thực với độ trễ tính bằng phút hoặc thậm chí giây.

Trong các ứng dụng streaming, chúng ta muốn kiểm tra độ trễ tối đa cho các sự kiện đến muộn và các chỉ số như Thời gian trung bình giữa các lần sự cố (MTBF) và Thời gian trung bình để khôi phục (MTTR). Việc triển khai đòi hỏi theo dõi tỉ mỉ các sự cố và trích xuất dữ liệu liên quan từ công cụ giám sát ứng dụng và quản lý sự cố như PagerDuty, Datadog và Grafana.

Hợp đồng Quản trị Dữ liệu

Xử lý đúng Thông tin Nhận dạng Cá nhân (PII) là phần không thể thiếu của quá trình biến đổi dữ liệu. Với nhiều công ty, điều quan trọng là các tập dữ liệu này tối thiểu phải tuân thủ GDPR và đáp ứng các quy định bảo mật dữ liệu như HIPAA hoặc PCI DSS.

Hợp đồng quản trị dữ liệu đảm bảo các chính sách giả danh hóa (pseudonymization) hoặc che giấu dữ liệu (data masking) được áp dụng đầy đủ. 

Xem đoạn mã dbt dưới đây. Các hợp đồng được cưỡng chế dưới dạng tests yêu cầu user_email phải là băm SHA256 (được che giấu):

models:
 - name: customer_data
   columns:
       - name: user_email
         tests:
           - dbt_expectations.expect_column_values_to_not_match_regex:
               regex: "^(?!.*\b@\b).* # Ensure identifiers do not contain emails
               flags: i # Case-insensitive matching

Mặt khác, chúng ta có thể muốn cưỡng chế khớp mẫu cho các bảng khác. Ví dụ, trong ví dụ bên dưới, trường transaction_reference phải theo mẫu [“TRX-%”, “%-2023”]:

models:
 - name: transaction_data
   columns:
       - name: transaction_reference
         tests:
           - dbt_expectations.expect_column_values_to_match_like_pattern_list:
               like_pattern_list: ["TRX-%", "%-2023"]
               match_on: any

Hợp đồng quản trị dữ liệu cũng hữu ích khi chúng bao gồm các cột dữ liệu nhạy cảm, metadata (chủ sở hữu dữ liệu, v.v.) và vai trò người dùng được phép truy cập một sản phẩm dữ liệu.

Ví dụ, chúng ta có thể chỉ định chủ sở hữu mô hình dữ liệu và giai đoạn vòng đời phát triển mô hình bằng trường meta trong dbt:

# models/schema.yaml
version: 2
models:
 - name: users
   meta:
     owner: "@data_mike"
     model_maturity: in dev
     contains_pii: true
   columns:
     - name: email
       meta:
       contains_pii: true

Trường meta cho phép bạn đặt metadata cho tài nguyên, sau đó được biên dịch vào tệp manifest.json do dbt tạo ra và có thể xem trong tài liệu được tự động sinh. 

Chúng ta có thể dùng các gói như dbt-checkpoint để quét trong quá trình pull request nhằm đảm bảo các trường meta bắt buộc có mặt. Hook sẽ thất bại nếu bất kỳ mô hình nào (từ manifest hoặc tệp YAML) không có các khóa meta được chỉ định.

Các khóa meta của mô hình phải có trong tệp YAML hoặc manifest.

Mẫu triển khai Data Contract

Xác thực hợp đồng có thể được thực hiện trong pipeline dữ liệu streaming (theo từng dòng) trước khi dữ liệu được ingest và sau đó — tại nguồn (lớp mô hình dữ liệu nguồn).

Khi chúng ta ingest dữ liệu “nguyên trạng”, quy trình xác thực đóng vai trò như một bước biến đổi, cưỡng chế các quy tắc của hợp đồng và lọc bỏ dữ liệu không hợp lệ, ví dụ đưa vào một view cơ sở dữ liệu hoặc một bảng chuyên dụng nơi dữ liệu có thể được điều tra thêm.

Các kiểm tra xác thực có thể được áp dụng hậu kiểm khi dữ liệu được ingest trực tiếp vào data lake thô.

Lợi thế chính của xác thực data contract thời gian thực là khả năng lọc bỏ bản ghi không hợp lệ trước khi chúng đến đích cuối — một data lake hoặc data warehouse. Cách tiếp cận này phổ biến trong xử lý dữ liệu theo sự kiện hoặc thời gian thực, như các sự kiện Change Data Capture (CDC). Ở kiểu xác thực này, một số khía cạnh của hợp đồng được kiểm tra khi dữ liệu chảy qua pipeline.

Công cụ cho Data Contract

Cộng đồng dữ liệu dần nhận ra lợi ích tiềm năng của data contract, một lĩnh vực kỹ thuật dữ liệu liên tục phát triển. Có nhiều công cụ trong không gian này, một số vẫn ở giai đoạn đầu. dbt có thể được xem là khung làm việc phổ quát cho data contract.

Các hợp đồng tương tự có thể được triển khai bằng Dataform của Google tại nguồn (lớp mô hình dữ liệu nguồn), tức là khi dữ liệu đã được ingest thành công vào kho dữ liệu của chúng ta. Ta sẽ muốn dùng các điều kiện theo dòng đơn giản cho mục đích này. 

Xem ví dụ dưới đây. Nó áp dụng một số điều kiện theo dòng cho bảng của chúng ta:

-- my_table.sqlx
config {
 type: "table",
 assertions: {
   nonNull: ["user_id", "customer_id", "email"]
 }
}
SELECT …

Dưới đây là một ví dụ khác về triển khai data contract, có thể thực hiện bằng Soda.io, một khung chất lượng dữ liệu chuyên biệt:

# Checks for basic validations
checks for dim_customer:
 - row_count between 10 and 1000
 - missing_count(birth_date) = 0
 - invalid_percent(phone) < 1 %:
     valid format: phone number
 - invalid_count(number_cars_owned) = 0:
     valid min: 1
     valid max: 6
 - duplicate_count(phone) = 0

Điều chỉnh cài đặt cảnh báo cho phép bạn cấu hình một kiểm tra chỉ phát cảnh báo thay vì làm thất bại xác thực. Một Soda scan sẽ chạy các kiểm tra được chỉ định trong thỏa thuận, kiểm tra tệp YAML hoặc inline trong lời gọi theo lập trình, và trả về kết quả cho mỗi kiểm tra: pass, fail hoặc error.

Theo kinh nghiệm của tôi, việc đưa data contract vào nhiều công ty vẫn còn phân mảnh, tùy thuộc vào các yếu tố như mẫu thiết kế pipeline dữ liệu (batch hay thời gian thực), lựa chọn tuần tự hóa dữ liệu và hệ thống dùng để lưu trữ, xử lý.

Triển khai data contract phụ thuộc vào yêu cầu và logic nghiệp vụ.

Great Expectations, một thư viện Python, có thể được dùng để triển khai data contract ở cấp độ ngữ nghĩa. Có thể cài đặt bằng pip: pip install great_expectations. 

Sau khi chạy great_expectations init, chúng ta có thể tiếp tục xác thực dữ liệu:

Using v3 (Batch Request) API
 ___              _     ___                  _        _   _
/ __|_ _ ___ __ _| |_  | __|_ ___ __  ___ __| |_ __ _| |_(_)___ _ _  ___
| (_ | '_/ -_) _ |  _| | _|\ \ / '_ \/ -_) _|  _/ _ |  _| / _ \ ' \(_-<
\___|_| \___\__,_|\__| |___/_\_\ .__/\___\__|\__\__,_|\__|_\___/_||_/__/
                               |_|
            ~ Always know what to expect from your data ~
Let's create a new Data Context to hold your project configuration.
Great Expectations will create a new directory with the following structure:
   great_expectations
   |-- great_expectations.yml
   |-- expectations
   |-- checkpoints
   |-- plugins
   |-- .gitignore
   |-- uncommitted
       |-- config_variables.yml
       |-- data_docs
       |-- validations
OK to proceed? [Y/n]:

Xem đoạn mã dưới đây. Nó giải thích cách tạo định nghĩa kiểm tra dữ liệu cho cột price:

"expectation_type": "expect_column_values_to_match_regex",
"kwargs": {
 "column": "price",
 "mostly": 1.0,
 "regex": "^\\$([0-9],)*[0-9]+\\.[0-9]{2}$"
},

Thực hành tốt nhất cho Data Contract

Không có câu trả lời đúng hay sai ở đây vì theo kinh nghiệm của tôi, một triển khai data contract thành công phụ thuộc rất nhiều vào yêu cầu doanh nghiệp. Để data contract hoạt động hiệu quả, hãy làm theo các thực hành tốt sau:

  • Khả năng mở rộng: Tôi khuyến nghị bổ sung cơ chế mở rộng (ví dụ on_schema_change: append) và versioning, cho phép chỉnh sửa điều khoản data contract mà không làm gián đoạn tích hợp pipeline hiện có. Thiết kế data contract với tầm nhìn cho những thay đổi và khả năng mở rộng trong tương lai. Cách tiếp cận này đảm bảo hợp đồng có thể thích ứng với nhu cầu và tăng trưởng đang tiến hóa.
  • Quy tắc rõ ràng: Tôi khuyến nghị sử dụng ngôn ngữ trực quan, súc tích trong data contract để tránh hiểu sai và diễn giải lệch. Hợp đồng nên được viết và đặt tên theo cách mà tất cả các bên liên quan, dù trình độ kỹ thuật khác nhau, đều có thể tiếp cận và thấu hiểu.
  • Hợp tác: Nỗ lực hợp tác đảm bảo hiểu biết toàn diện và đa chiều về yêu cầu, giải quyết nhiều góc nhìn và nhu cầu. Khi tạo data contract, hãy thu hút các bên liên quan đa dạng, bao gồm nhà sản xuất dữ liệu, kỹ sư dữ liệu, nhà khoa học dữ liệu và đại diện từ bộ phận kinh doanh, CNTT, pháp lý và tuân thủ.
  • Metadata: Tôi khuyến nghị cung cấp tài liệu và metadata đầy đủ cho data contract. Tài liệu toàn diện hỗ trợ áp dụng và bảo trì hợp đồng trơn tru. Bao gồm mô tả chi tiết, định nghĩa trường, quy tắc xác thực và các thông tin liên quan khác nhằm hỗ trợ hiểu rõ và triển khai hợp đồng hiệu quả.
  • Rà soát định kỳ: Rà soát liên tục giúp duy trì tính phù hợp và hiệu quả của hợp đồng theo thời gian. Hãy triển khai cách tiếp cận có cấu trúc để giám sát và cập nhật data contract. Việc rà soát định kỳ đảm bảo hợp đồng luôn cập nhật, phù hợp với yêu cầu kinh doanh đang thay đổi và tuân thủ các quy định mới hoặc thay đổi.

Kết luận

Gần đây đã có sự dịch chuyển sang mô hình sở hữu dữ liệu phân tán, nơi các nhóm theo miền chịu trách nhiệm về sản phẩm dữ liệu của họ. Thay đổi này buộc các tổ chức phải xác định lại kỳ vọng chất lượng dữ liệu, được chính thức hóa thông qua data contract.

Xác thực dữ liệu ngữ nghĩa đảm bảo dữ liệu nhất quán về logic và phù hợp với logic nghiệp vụ. Chúng giúp kiểm tra pipeline dữ liệu để phát hiện ngoại lệ về dữ liệu, giá trị, dòng dõi và toàn vẹn tham chiếu. Toàn vẹn tham chiếu không đầy đủ có thể dẫn tới dữ liệu thiếu hoặc không hoàn chỉnh, vì vậy đây cũng là khía cạnh quan trọng. 

Hợp đồng quản trị dữ liệu cũng có thể được triển khai trong pipeline CI/CD và trở nên rất hữu ích khi chúng chỉ ra các cột dữ liệu nhạy cảm, metadata (chủ sở hữu dữ liệu, v.v.) và vai trò người dùng được phép truy cập sản phẩm dữ liệu. 

Metadata của một mô hình, cùng với bất kỳ trường meta bắt buộc nào khác do nhà phát triển xác định, hỗ trợ việc giám sát mức sử dụng tài nguyên và hiệu năng của mô hình. 

Service Level Agreement (SLA) trong data contract nêu rõ các cam kết cụ thể liên quan đến độ tươi, tính đầy đủ và khả năng khôi phục khi xảy ra lỗi.

Data contract là thành phần thiết yếu của các kỹ thuật mô hình dữ liệu hiện đại và giúp đảm bảo nền tảng dữ liệu ít lỗi và mở rộng tốt. Giải quyết vấn đề chất lượng dữ liệu có thể tốn kém. Với các công ty cấp doanh nghiệp, tối đa hóa lợi tức đầu tư (ROI) từ dữ liệu ngày càng quan trọng bằng cách tận dụng các công cụ chất lượng dữ liệu hiện có hỗ trợ xác thực data contract.

FAQs

Data contract khác gì so với xác thực và kiểm thử dữ liệu?

Data contract là các thỏa thuận chính thức quy định định dạng, schema và giao thức trao đổi giữa bên sản xuất và bên tiêu thụ dữ liệu. Chúng thiết lập kỳ vọng và trách nhiệm rõ ràng về chất lượng dữ liệu. Trong khi đó, xác thực và kiểm thử dữ liệu là các quy trình kiểm tra xem dữ liệu có đáp ứng các kỳ vọng đó hay không. Xác thực đảm bảo dữ liệu tuân thủ hợp đồng đã định nghĩa, còn kiểm thử đánh giá độ chính xác và độ tin cậy của dữ liệu.

Có thể dùng data contract trong pipeline dữ liệu streaming thời gian thực không?

Có, data contract có thể được triển khai trong pipeline dữ liệu streaming thời gian thực. Chúng giúp lọc dữ liệu không hợp lệ trước khi đến đích, đảm bảo chỉ dữ liệu tuân thủ các quy tắc và định dạng được định trước mới được xử lý. Cách tiếp cận này hữu ích trong xử lý theo sự kiện hoặc thời gian thực, nơi tính toàn vẹn và tính kịp thời của dữ liệu rất quan trọng.

Xử lý versioning trong data contract như thế nào khi schema thay đổi thường xuyên?

Xử lý versioning trong data contract liên quan đến việc duy trì khả năng tương thích ngược và theo dõi tiến hóa của schema. Một cách tiếp cận là dùng schema có phiên bản, trong đó mỗi phiên bản hợp đồng gắn với một phiên bản schema cụ thể. Các công cụ như on_schema_change: append trong dbt có thể giúp quản lý thay đổi schema mà không làm gián đoạn tích hợp hiện có, cho phép chuyển đổi và cập nhật dần dần.

Data contract đóng vai trò gì trong kiến trúc data mesh?

Trong kiến trúc data mesh, quyền sở hữu dữ liệu được phân bổ cho các nhóm theo miền; data contract đảm bảo chất lượng dữ liệu nhất quán và khả năng tương tác giữa các miền. Chúng chính thức hóa kỳ vọng giữa bên sản xuất và bên tiêu thụ dữ liệu, giúp các nhóm thống nhất về tiêu chuẩn dữ liệu và giảm rủi ro vấn đề chất lượng khi dữ liệu luân chuyển qua các miền khác nhau.

Data contract giúp tuân thủ các quy định bảo mật như GDPR hoặc HIPAA như thế nào?

Data contract có thể cưỡng chế các chính sách quản trị dữ liệu, bao gồm quy định bảo mật như GDPR hoặc HIPAA. Chúng có thể định nghĩa quy tắc che giấu dữ liệu, giả danh hóa và kiểm soát truy cập, đảm bảo dữ liệu nhạy cảm được xử lý phù hợp. Bằng cách nhúng các quy tắc này vào hợp đồng, tổ chức có thể tự động hóa kiểm tra tuân thủ và giảm nguy cơ vi phạm quyền riêng tư.


Mike Shakhomirov's photo
Author
Mike Shakhomirov
LinkedIn

Đam mê và tập trung vào chuyển đổi số, tôi hứng khởi trước những thách thức của tiếp thị số.

Trước khi chuyển đến Vương quốc Anh, tôi đã có hơn mười năm kinh nghiệm trong lĩnh vực bán hàng, rủi ro ngân hàng doanh nghiệp và tiếp thị số, qua đó phát triển chuyên môn về quản trị rủi ro, mô hình hóa toán học, phân tích thống kê, quản trị kinh doanh và marketing.

Sau khi hoàn thành chương trình MBA tại Newcastle, hiện tôi mong muốn theo đuổi sự nghiệp trong lĩnh vực tiếp thị dựa trên dữ liệu, khoa học máy tính hoặc AI, với tiềm năng tiếp tục học lên tiến sĩ. Những lĩnh vực này đem lại cơ hội ứng dụng khoa học vào thực tiễn, phát triển nghề nghiệp liên tục, đổi mới và đóng góp cho một ngành công nghiệp năng động.

Chủ đề
Kỹ thuật Dữ liệu

Tìm hiểu thêm về kỹ thuật dữ liệu với các khóa học này!

Khóa học

Tìm hiểu Data Engineering

2 giờ
378K
Khám phá cách các kỹ sư dữ liệu xây dựng nền tảng cơ bản để khoa học dữ liệu trở nên khả thi. Không cần viết mã!
Xem chi tiếtBắt Đầu Khóa Học

Tạo tài khoản miễn phí của bạn

Luyện tập và Lộ trình tiến trình của bạn.

Tiếp Tục Với Google
Bằng cách tiếp tục, bạn chấp nhận Điều khoản sử dụng, Chính sách bảo mật và việc dữ liệu của bạn được lưu trữ tại Hoa Kỳ.
Xem thêm
Liên quan

blog

Claude Opus 4.6: Tính năng, Điểm chuẩn, Bài kiểm tra thực hành và hơn thế nữa

Mô hình mới nhất của Anthropic dẫn đầu ở mã hóa tác tử và lập luận phức tạp. Thêm vào đó, nó có cửa sổ ngữ cảnh 1M.
Matt Crabtree's photo

Matt Crabtree

10 phút

Xem thêm