Schema là gì?
Scrapeless Web Unlocker truy xuất nội dung web mà ứng dụng của bạn có thể chuyển đổi thành các bản ghi được quản lý bởi một schema dữ liệu tường minh.
Schema là gì?
Schema là một mô tả về cách dữ liệu được tổ chức và các quy tắc mà cấu trúc của nó phải thỏa mãn. Nó có thể định nghĩa tên trường, kiểu dữ liệu, giá trị bắt buộc, quan hệ và ràng buộc. Từ này có một số nghĩa liên quan: một schema cơ sở dữ liệu có thể mô tả bảng và khóa, một schema API có thể mô tả các thông điệp được trao đổi, và một schema SQL có tên có thể cung cấp một không gian tên cho các đối tượng cơ sở dữ liệu.
Câu hỏi hữu ích là schema thiết lập hợp đồng nào. Một quan sát về sản phẩm có thể yêu cầu một định danh nguồn và thời điểm quan sát, cho phép thiếu giá, và yêu cầu tiền tệ bất cứ khi nào có số tiền. Hợp đồng đó mang lại cho bên sản xuất và bên tiêu thụ một cách hiểu chung về bản ghi. Một danh sách trường không kèm các ý nghĩa đó chỉ là một đặc tả một phần.
Tóm tắt
- Schema mô tả cấu trúc và các ràng buộc. Phạm vi chính xác của nó phụ thuộc vào hệ thống dữ liệu.
- Thiếu, null và rỗng là những trạng thái khác nhau. Hãy xác định ý nghĩa của chúng trước khi chuẩn hóa dữ liệu nguồn.
- Một bản ghi hợp lệ vẫn có thể sai về mặt thực tế. Kiểm tra cấu trúc không xác nhận độ chính xác của nguồn.
- Thay đổi schema đòi hỏi phải kiểm tra khả năng tương thích của bên tiêu thụ. Một thay đổi có vẻ chỉ là bổ sung vẫn có thể làm hỏng các trình đọc nghiêm ngặt.
Bạn nên phân biệt những nghĩa nào của Schema?
Schema có thể chỉ mô hình dữ liệu khái niệm, hợp đồng bản ghi logic, cấu trúc cơ sở dữ liệu vật lý, hoặc không gian tên đối tượng. Một mô hình khái niệm nói rằng một sản phẩm có thể có nhiều chào bán. Một schema logic định nghĩa các trường và quan hệ được dùng để biểu diễn các chào bán đó. Một thiết kế vật lý chọn các bảng, kiểu và chỉ mục cụ thể.
Một không gian tên SQL là một nghĩa hẹp hơn. Phần mô tả về named schemas của PostgreSQL giải thích cách các schema tổ chức các đối tượng cơ sở dữ liệu trong một cơ sở dữ liệu. Việc tạo ra một không gian tên như vậy tự nó không định nghĩa ý nghĩa nghiệp vụ của từng bảng mà nó chứa.
Các schema thông điệp API mô tả những gì bên gọi gửi và nhận. JSON Schema là một ngôn ngữ để chỉ định cấu trúc và ràng buộc JSON. Một hợp đồng API cũng có thể cần yêu cầu xác thực, hành vi phân trang, ý nghĩa lỗi và các quy tắc tương thích. Những mối quan tâm đó vượt ra ngoài hình dạng của từng thông điệp riêng lẻ.
Dữ liệu có cấu trúc cho tìm kiếm là một cách dùng khác của thuật ngữ này. Mô tả một trang bằng một bộ từ vựng không thay thế schema của cơ sở dữ liệu ứng dụng của bạn. Hãy giữ rõ ràng đối tượng và ranh giới xác thực bất cứ khi nào một tài liệu thiết kế chỉ nói đơn giản “schema”.
Một hợp đồng bản ghi hữu ích nên định nghĩa gì?
Một hợp đồng bản ghi hữu ích định nghĩa định danh, kiểu, quy tắc hiện diện, đơn vị, quan hệ và ý nghĩa dự định. Hãy bắt đầu với đơn vị hạt của bản ghi. Một dòng có thể đại diện cho một sản phẩm, một chào bán, hoặc một quan sát sản phẩm tại một thời điểm cụ thể. Những đơn vị hạt đó cần khóa khác nhau ngay cả khi chúng chia sẻ các trường như tiêu đề và giá.
Kiểu nên theo miền nghiệp vụ hơn là hình thức bên ngoài. Một định danh sản phẩm được tạo từ các chữ số có thể cần giữ nguyên là chuỗi vì số 0 ở đầu là quan trọng và các phép toán học không có ý nghĩa với nó. Một số tiền cần một chính sách về độ chính xác và ngữ cảnh tiền tệ. Một timestamp cần một cách diễn giải được xác định và chính sách múi giờ.
Các quy tắc hiện diện cũng quan trọng không kém. Phần các quy tắc JSON Schema cho thuộc tính đối tượng phân biệt các thuộc tính được mô tả bởi schema với các thuộc tính bắt buộc phải xuất hiện. Khai báo kiểu của một thuộc tính không tự động làm cho thuộc tính đó là bắt buộc.
Hãy mô tả liệu các trường bổ sung có được chấp nhận không. Một trình đọc nghiêm ngặt có thể từ chối các thuộc tính không biết. Một trình đọc dễ dãi có thể giữ lại chúng hoặc bỏ qua chúng. Không nên giả định bất kỳ hành vi nào chỉ từ việc payload dùng JSON. Ghi lại những quyết định này trong hợp đồng và kiểm chứng chúng bằng các đầu vào tiêu biểu.
| Quyết định hợp đồng | Câu hỏi cần giải quyết | Lỗi thường gặp |
|---|---|---|
| Định danh | Một bản ghi xác định cái gì? | Chào bán và sản phẩm dùng chung một khóa mơ hồ |
| Hiện diện | Thuộc tính có bắt buộc tồn tại không? | Một giá trị bị bỏ qua được tự động bịa ra |
| Khả năng null | Thuộc tính có thể chứa null không? | Null và thiếu được xem là giống hệt nhau |
| Đơn vị | Giá trị số đo cái gì? | Các số tiền với tiền tệ khác nhau bị đem ra so sánh |
| Tiến hóa | Những thay đổi nào trình đọc có thể chấp nhận? | Bên sản xuất thay đổi ý nghĩa mà không đổi kiểu |
Giá trị Thiếu, Null và Rỗng khác nhau như thế nào?
Một thuộc tính missing là thuộc tính vắng mặt khỏi bản ghi, một thuộc tính null là thuộc tính có mặt với giá trị null, và một chuỗi rỗng là một chuỗi hiện diện nhưng không có ký tự nào. Ý nghĩa nghiệp vụ của chúng phụ thuộc vào hợp đồng. Đối với phần mô tả nguồn, missing có thể có nghĩa là bộ trích xuất không tìm thấy trường; null có thể có nghĩa là nguồn rõ ràng báo cáo là không có giá trị; một chuỗi rỗng có thể không được cho phép.
The Đặc tả trao đổi dữ liệu JSON định nghĩa null, chuỗi, số, đối tượng và mảng là các giá trị JSON riêng biệt. Nó không gán ý nghĩa nghiệp vụ của ứng dụng bạn cho một giá bị thiếu hoặc một tiêu đề rỗng. Việc diễn giải đó thuộc về hợp đồng bản ghi.
Đừng thay thế những con số không biết bằng số 0 chỉ để thỏa mãn một cột số. Số 0 là một giá trị và có thể ảnh hưởng đến tổng, bộ lọc và cảnh báo. Hãy bảo toàn trạng thái vắng mặt rõ ràng và, khi hữu ích, cả lý do như nguồn bỏ sót hoặc không chắc chắn trong quá trình trích xuất.
Khoảng trắng và locale cũng cần được quyết định. Một số tiền hiển thị có thể chứa ký hiệu tiền tệ hoặc dấu phân cách thập phân phụ thuộc locale. Chuẩn hóa nó bằng một quy tắc hiểu biết về nguồn đồng thời giữ lại đủ bằng chứng được cho phép để giải thích cách diễn giải.
Bạn Áp dụng Schema cho Dữ liệu Được Scrape Như Thế Nào?
Áp dụng một schema sau khi xác định bản ghi nguồn và trước khi xuất bản đầu ra đã chuẩn hóa cho bên sử dụng. Trong một quy trình danh mục minh họa, hãy thu thập trang đã được phê duyệt, xác nhận rằng nó chứa danh mục dự định, trích xuất các mục liệt kê ứng viên, và ánh xạ từng trường tới hợp đồng quan sát đã được thống nhất. Việc kiểm tra sau đó sẽ đánh giá ứng viên đã được chuẩn hóa đó.
Scrapeless Web Unlocker có thể cung cấp nội dung trang. Yêu cầu thu thập Web Unlocker là một hợp đồng riêng biệt so với schema đầu ra của bạn. Một phản hồi thu thập được định dạng tốt không đảm bảo rằng bản ghi sản phẩm bạn trích xuất chứa đúng số tiền hoặc đúng định danh.
Giữ lỗi phân tích cú pháp tách biệt với việc nguồn vắng mặt. Nếu một trang sản phẩm có giá nhưng bộ chọn của bạn không thể tìm được, đánh dấu số tiền là source-null sẽ diễn đạt sai bằng chứng. Một ứng viên có thể vẫn chưa được giải quyết mà không cần đi vào tập dữ liệu đã chấp nhận. Sự phân biệt này giúp cho việc sửa bộ phân tích cú pháp sau này trở nên dễ hiểu.
Việc chuyển đổi từ các bản ghi được scrape sang các bảng phân tích cho thấy lý do tại sao kiểu của đầu ra lại quan trọng tại ranh giới lưu trữ. Một schema cũng nên mô tả cách mảng, các ưu đãi lặp lại và các biến thể lồng nhau trở thành các dòng quan hệ, thay vì để mỗi bên sử dụng tự làm phẳng chúng một cách độc lập.
Schema-on-Write hoặc Schema-on-Read Có Nghĩa Là Gì?
Schema-on-write áp dụng một cách diễn giải cấu trúc trước hoặc trong khi chấp nhận vào lưu trữ, trong khi schema-on-read áp dụng cách diễn giải khi dữ liệu được đọc. Sự khác biệt liên quan đến thời điểm các quy tắc được áp dụng. Nó không có nghĩa là một hệ thống có ý nghĩa còn hệ thống kia thì không có cấu trúc.
Việc xác thực sớm bắt các bản ghi không tương thích trước khi các truy vấn hạ nguồn nhìn thấy chúng. Nó cũng có thể từ chối các trường nguồn mới cho đến khi hợp đồng được cập nhật. Việc diễn giải muộn giữ được tính linh hoạt nhưng chuyển trách nhiệm sang người đọc, những người có thể bất đồng nếu họ áp dụng các quy tắc phân tích khác nhau.
Nhiều quy trình làm việc kết hợp cả hai cách tiếp cận. Một lớp lưu trữ ban đầu có thể giữ lại một biểu diễn thô đã được phê duyệt với siêu dữ liệu tối thiểu, trong khi các bảng đã được biên soạn áp đặt một schema nghiệp vụ ổn định. Việc giữ lại dữ liệu thô cần các quyền truy cập và kiểm soát xóa riêng; tính linh hoạt không phải là lý do để giữ mọi phản hồi nguồn mãi mãi.
Làm Thế Nào Để Một Schema Tiến Hóa Một Cách An Toàn?
Sự tiến hóa của schema chỉ an toàn tương đối với những trình đọc và ghi phải giữ được khả năng tương thích. Thêm một trường tùy chọn có thể hoạt động với một trình đọc dễ tính và lỗi với một trình đọc từ chối các thuộc tính không biết. Thay đổi một số thành chuỗi có thể phá vỡ các phép tính ngay cả khi giá trị hiển thị có vẻ không đổi.
Các thay đổi ngữ nghĩa đặc biệt dễ bị bỏ sót. Một trường tên là price có thể ban đầu có nghĩa là số tiền cho ưu đãi chính và sau đó có nghĩa là khoản trả góp thấp nhất. Kiểu dữ liệu vẫn là số, nhưng cách diễn giải của bên sử dụng bị hỏng. Hãy đổi tên hoặc tạo phiên bản cho khái niệm và công bố lộ trình chuyển đổi khi ý nghĩa thay đổi.
Kiểm tra kỳ vọng của bên tạo và bên sử dụng cùng nhau. Giữ lại các bản ghi đã chấp nhận tiêu biểu, các trường hợp vắng mặt và các trường hợp bị từ chối. Đánh giá trình đọc cũ với đầu ra mới khi khả năng tương thích ngược được hứa hẹn. Xác định khi nào một hợp đồng cũ có thể ngừng sử dụng và ai chịu trách nhiệm chuyển đổi.
Đối với việc trao đổi dạng bảng, mô hình dữ liệu dạng bảng và siêu dữ liệu của W3C mô tả các chú thích cột, khóa và các khái niệm kiểm tra. Chúng giúp ghi lại một hợp đồng xuyên suốt các công cụ, nhưng không loại bỏ nhu cầu phải thống nhất về định nghĩa nghiệp vụ.
Kết luận
Hãy viết ra một bản ghi có nghĩa là gì, rồi định nghĩa cấu trúc và các trạng thái vắng mặt của nó. Kiểm tra tại ranh giới xuất bản và coi thay đổi trong ý nghĩa như thay đổi hợp đồng. Khi lập kế hoạch phần thu thập, hãy sử dụng Scrapeless pricing cùng với chi phí kiểm tra và lưu trữ riêng của bạn.
Đưa Tầng Thu Thập Vào Thực Tiễn
Chọn khả năng thu thập của Scrapeless phù hợp với nguồn của bạn, rồi áp dụng các quyết định về kiểm tra và vận hành được mô tả ở trên.
Đăng ký hôm nay và nhận $5 tín dụng miễn phí — không cần thẻ tín dụng.
Nhận $5 Tín Dụng Của Bạn →FAQ
Schema có giống với dữ liệu không?
Không. Schema mô tả cấu trúc và các ràng buộc được cho phép; dữ liệu là một bản thể được đánh giá dựa trên các quy tắc đó. Một schema có thể tồn tại trước khi bất kỳ bản ghi nào được thu thập.
JSON có tự động áp dụng schema không?
Không. JSON định nghĩa một định dạng dữ liệu. Việc kiểm tra schema cần một schema đã thống nhất và một bộ kiểm tra hoặc logic ứng dụng tương đương thực sự đánh giá bản ghi.
Việc thêm một trường có luôn tương thích ngược không?
Không. Tính tương thích phụ thuộc vào hành vi của người dùng. Các trình đọc từ chối trường không xác định có thể gặp lỗi khi nhà sản xuất thêm một thuộc tính, ngay cả khi thuộc tính đó là tùy chọn.
Một schema có thể chứng minh một mức giá được thu thập là chính xác không?
Không. Một schema có thể yêu cầu một số tiền và đơn vị tiền tệ, nhưng việc đối sánh nguồn và diễn giải sẽ quyết định liệu các giá trị đó có mô tả đúng ưu đãi dự định hay không. Đồng thời hãy sử dụng các kiểm tra chất lượng có xét đến nguồn.