kèo chấp bóng đá hôm nay loại dữ liệu JSON là để lưu trữ dữ liệu JSON (ký hiệu đối tượng JavaScript), như được chỉ định trongRFC 7159. Dữ liệu đó cũng có thể được lưu trữ dưới dạngText
, nhưng kèo chấp bóng đá hôm nay loại dữ liệu JSON có lợi thế là thực thi rằng mỗi giá trị được lưu trữ là hợp lệ theo kèo chấp bóng đá hôm nay quy tắc của JSON. Ngoài ra còn có kèo chấp bóng đá hôm nay chức năng và toán tử dành riêng cho JSON và kèo chấp bóng đá hôm nay toán tử có sẵn cho dữ liệu được lưu trữ trong kèo chấp bóng đá hôm nay loại dữ liệu này;Phần 9.16.
PostgreSQLCung cấp hai loại để lưu trữ dữ liệu kèo chấp bóng đá hôm nay:kèo chấp bóng đá hôm nay
vàjsonb
. Để thực hiện kèo chấp bóng đá hôm nay cơ chế truy vấn hiệu quả cho kèo chấp bóng đá hôm nay loại dữ liệu này,PostgreSQLcũng cung cấpJsonPath
Kiểu dữ liệu được mô tả trongPhần 8.14.7.
Thekèo chấp bóng đá hôm nay
vàjsonb
kèo chấp bóng đá hôm nay loại dữ liệu Chấp nhậngần nhưBộ giá trị giống hệt nhau làm đầu vào. Sự khác biệt thực tế chính là một trong những hiệu quả.kèo chấp bóng đá hôm nay
Kiểu dữ liệu lưu trữ một bản sao chính xác của văn bản đầu vào, kèo chấp bóng đá hôm nay chức năng xử lý phải sửa chữa trên mỗi lần thực thi; trong khiJSONB
Dữ liệu được lưu trữ ở định dạng nhị phân bị phân hủy làm cho nó chậm hơn một chút so với đầu vào do chi phí chuyển đổi được thêm vào, nhưng nhanh hơn đáng kể để xử lý, vì không cần thiết phải lặp lại.jsonb
Cũng hỗ trợ lập chỉ mục, có thể là một lợi thế đáng kể.
vìkèo chấp bóng đá hôm nay
Loại lưu trữ một bản sao chính xác của văn bản đầu vào, nó sẽ bảo tồn khoảng trắng không đáng kể về mặt ngữ nghĩa giữa kèo chấp bóng đá hôm nay mã thông báo, cũng như thứ tự của kèo chấp bóng đá hôm nay khóa trong kèo chấp bóng đá hôm nay đối tượng JSON. Ngoài ra, nếu một đối tượng JSON trong giá trị chứa cùng một khóa hơn một lần, tất cả kèo chấp bóng đá hôm nay cặp khóa/giá trị được giữ.jsonb
Không bảo toàn không gian trắng, không bảo toàn thứ tự của kèo chấp bóng đá hôm nay phím đối tượng và không giữ kèo chấp bóng đá hôm nay phím đối tượng trùng lặp. Nếu kèo chấp bóng đá hôm nay khóa trùng lặp được chỉ định trong đầu vào, chỉ có giá trị cuối cùng được giữ.
Nói chung, hầu hết kèo chấp bóng đá hôm nay ứng dụng nên thích lưu trữ dữ liệu JSON dưới dạngjsonb
, Trừ khi có nhu cầu khá chuyên môn, chẳng hạn như kèo chấp bóng đá hôm nay giả định di sản về việc đặt hàng kèo chấp bóng đá hôm nay khóa đối tượng.
RFC7159 Chỉ định rằng kèo chấp bóng đá hôm nay chuỗi JSON nên được mã hóa trong UTF8. Do đó, kèo chấp bóng đá hôm nay loại JSON không thể phù hợp với đặc tả JSON trừ khi mã hóa cơ sở dữ liệu là UTF8.
RFC7159 cho phép kèo chấp bóng đá hôm nay chuỗi JSON chứa kèo chấp bóng đá hôm nay chuỗi thoát Unicode được ký hiệu bởi\ u
. Trong hàm đầu vào choxxxx
kèo chấp bóng đá hôm nay
13355_13514\ u
). Tuy nhiên, chức năng đầu vào chojsonb
là nghiêm ngặt hơn: nó không cho phép thoát ra kèo chấp bóng đá hôm nay ký tự không thể được biểu diễn trong mã hóa cơ sở dữ liệu. TheJSONB
Loại cũng từ chối\ U0000
(vì điều đó không thể được biểu diễn trongPostgreSQL'sText
Loại), và nó khẳng định rằng bất kỳ việc sử dụng kèo chấp bóng đá hôm nay cặp thay thế unicode để chỉ định kèo chấp bóng đá hôm nay ký tự bên ngoài mặt phẳng đa ngôn ngữ cơ bản không chính xác. Escapes unicode hợp lệ được chuyển đổi thành ký tự đơn tương đương để lưu trữ;
Nhiều chức năng xử lý kèo chấp bóng đá hôm nay được mô tả trongPhần 9.16Sẽ chuyển đổi Escapes Unicode sang kèo chấp bóng đá hôm nay ký tự thông thường và do đó sẽ ném kèo chấp bóng đá hôm nay loại lỗi tương tự chỉ được mô tả ngay cả khi đầu vào của chúng thuộc loạijsonb
khôngJSONB
. Thực tế làkèo chấp bóng đá hôm nay
Hàm đầu vào không tạo ra kèo chấp bóng đá hôm nay kiểm tra này có thể được coi là một tạo tác lịch sử, mặc dù nó cho phép lưu trữ đơn giản (không xử lý) của JSON Unicode Escapes trong mã hóa cơ sở dữ liệu không hỗ trợ kèo chấp bóng đá hôm nay ký tự được đại diện.
Khi chuyển đổi đầu vào kèo chấp bóng đá hôm nay văn bản thànhjsonb
, kèo chấp bóng đá hôm nay loại nguyên thủy được mô tả bởiRFC7159 được ánh xạ hiệu quả vào bản địaPostgreSQLkèo chấp bóng đá hôm nay loại, như trongBảng 8.23. Do đó, có một số ràng buộc bổ sung nhỏ về những gì cấu thành hợp lệJSONB
15503_15536jsonb
Loại, cũng như JSON trong bản tóm tắt, tương ứng với kèo chấp bóng đá hôm nay giới hạn về những gì có thể được biểu diễn bằng kiểu dữ liệu cơ bản. Đáng chú ý,jsonb
sẽ từ chối kèo chấp bóng đá hôm nay số nằm ngoài phạm vi củaPostgreSQL Số
Kiểu dữ liệu, trong khikèo chấp bóng đá hôm nay
Sẽ không. kèo chấp bóng đá hôm nay hạn chế được xác định theo triển khai như vậy được cho phép bởiRFC7159. Tuy nhiên, trong thực tế, kèo chấp bóng đá hôm nay vấn đề như vậy có nhiều khả năng xảy ra trong kèo chấp bóng đá hôm nay triển khai khác, vì thông thường đại diện cho JSONSố
Loại nguyên thủy là IEEE 754 Điểm nổi chính xác gấp đôi (màRFC7159 dự đoán rõ ràng và cho phép). Khi sử dụng JSON làm định dạng trao đổi với kèo chấp bóng đá hôm nay hệ thống như vậy, nguy cơ mất độ chính xác số so với dữ liệu được lưu trữ ban đầu bởiPostgreSQLnên được xem xét.
Ngược lại, như đã lưu ý trong bảng có một số hạn chế nhỏ đối với định dạng đầu vào của kèo chấp bóng đá hôm nay loại nguyên thủy JSON không áp dụng cho tương ứngPOSTGRESQLTYPE.
Bảng 8.23. kèo chấp bóng đá hôm nay loại nguyên thủy của JSON và tương ứngPostgreSQLloại
kèo chấp bóng đá hôm nay Loại nguyên thủy | PostgreSQLloại | ghi chú |
---|---|---|
chuỗi |
Text |
\ U0000 không được phép, cũng như kèo chấp bóng đá hôm nay lối thoát Unicode đại diện cho kèo chấp bóng đá hôm nay ký tự không có sẵn trong mã hóa cơ sở dữ liệu |
Số |
Số |
NAN vàVô cực Giá trị không được phép |
Boolean |
Boolean |
Chỉ chữ thườngTRUE vàSai Chính tả được kèo chấp bóng đá hôm nay nhận |
null |
(Không) | SQLnull là một khái niệm khác |
Cú pháp đầu vào/đầu ra cho kèo chấp bóng đá hôm nay loại dữ liệu JSON được chỉ định trongRFC7159.
Sau đây đều hợp lệjsonb
(hoặcJSONB
) Biểu thức:
- Giá trị vô hướng/nguyên thủy đơn giản
Như đã nêu trước đây, khi giá trị kèo chấp bóng đá hôm nay được nhập và sau đó được in mà không có bất kỳ xử lý bổ sung nào,kèo chấp bóng đá hôm nay
đầu ra cùng một văn bản được nhập, trong khijsonbb
không bảo tồn kèo chấp bóng đá hôm nay chi tiết đáng kể về mặt ngữ nghĩa như khoảng trắng. Ví dụ: lưu ý sự khác biệt ở đây:
Chọn '"Bar": "Baz", "Cân bằng": 7.77, "Active": Sai' :: kèo chấp bóng đá hôm nay;
Một chi tiết đáng chú ý về mặt ngữ nghĩa là trongjsonb
, Số sẽ được in theo hành vi của cơ bảnSố
Loại. Trong thực tế, điều này có nghĩa là kèo chấp bóng đá hôm nay số được nhập vớiE
Ký hiệu sẽ được in mà không có nó, ví dụ:
Chọn '"Đọc": 1.230E-5' :: jsonb, '"đọc": 1.230e-5' :: jsonbb;
Tuy nhiên,JSONB
21015_21171
Để biết danh sách kèo chấp bóng đá hôm nay chức năng và toán tử tích hợp có sẵn để xây dựng và xử lý kèo chấp bóng đá hôm nay giá trị JSON, xemPhần 9.16.
Đại diện cho dữ liệu là JSON có thể linh hoạt hơn đáng kể so với mô hình dữ liệu quan hệ truyền thống, hấp dẫn trong kèo chấp bóng đá hôm nay môi trường nơi kèo chấp bóng đá hôm nay yêu cầu là chất lỏng. Hoàn toàn có thể cho cả hai cách tiếp cận để cùng tồn tại và bổ sung cho nhau trong cùng một ứng dụng.MạnhTài liệuHồi(mốc dữ liệu) trong bảng.
Dữ liệu JSON phải tuân theo kèo chấp bóng đá hôm nay cân nhắc kiểm soát đồng thời giống như bất kỳ loại dữ liệu nào khác khi được lưu trữ trong bảng. Mặc dù việc lưu trữ kèo chấp bóng đá hôm nay tài liệu lớn là có thể thực hiện được, hãy nhớ rằng bất kỳ bản cập nhật nào cũng có được khóa cấp hàng trên toàn bộ hàng.
JSONB
Ngăn chặn và tồn tại#Kiểm traViênglà một khả năng quan trọng củaJSONB
. Không có bộ cơ sở song song chojsonb
Loại. Kiểm tra ngăn chặn xem mộtjsonb
Tài liệu có trong đó một tài liệu khác. kèo chấp bóng đá hôm nay ví dụ này trả về đúng ngoại trừ như đã lưu ý:
- Giá trị vô hướng/nguyên thủy đơn giản chỉ chứa giá trị giống hệt nhau:khôngđược coi là trong
Nguyên tắc chung là đối tượng chứa phải khớp với đối tượng chứa đối tượng với cấu trúc và nội dung dữ liệu, có thể sau khi loại bỏ một số phần tử mảng không khớp hoặc kèo chấp bóng đá hôm nay cặp giá trị/phím đối tượng khỏi đối tượng chứa. Nhưng hãy nhớ rằng thứ tự của kèo chấp bóng đá hôm nay phần tử mảng không có ý nghĩa khi thực hiện kết hợp ngăn chặn và kèo chấp bóng đá hôm nay phần tử mảng trùng lặp chỉ được xem xét một lần một lần.
Là một ngoại lệ đặc biệt đối với nguyên tắc chung là kèo chấp bóng đá hôm nay cấu trúc phải khớp, một mảng có thể chứa một giá trị nguyên thủy:
- Mảng này chứa giá trị chuỗi nguyên thủy:
JSONB
cũng cótồn tạiToán tử, là một biến thể về chủ đề ngăn chặn: Nó kiểm tra xem một chuỗi (được đưa ra dưới dạngText
Giá trị) xuất hiện dưới dạng phần tử phím hoặc mảng đối tượng ở cấp cao nhất củajsonbb
Giá trị. kèo chấp bóng đá hôm nay ví dụ này trả về đúng ngoại trừ như đã lưu ý:
- Chuỗi tồn tại dưới dạng phần tử mảng:
kèo chấp bóng đá hôm nay đối tượng JSON phù hợp hơn so với kèo chấp bóng đá hôm nay mảng để ngăn chặn hoặc tồn tại thử nghiệm khi có nhiều khóa hoặc phần tử liên quan, bởi vì không giống như kèo chấp bóng đá hôm nay mảng chúng được tối ưu hóa bên trong để tìm kiếm và không cần phải tìm kiếm tuyến tính.
Vì ngăn chặn JSON được lồng, một truy vấn thích hợp có thể bỏ qua lựa chọn rõ ràng kèo chấp bóng đá hôm nay đối tượng phụ. Ví dụ, giả sử rằng chúng ta có mộtdoc
cột chứa kèo chấp bóng đá hôm nay đối tượng ở cấp cao nhất, với hầu hết kèo chấp bóng đá hôm nay đối tượng chứaTags
kèo chấp bóng đá hôm nay trường chứa kèo chấp bóng đá hôm nay mảng của kèo chấp bóng đá hôm nay đối tượng phụ. Truy vấn này tìm kèo chấp bóng đá hôm nay mục trong đó kèo chấp bóng đá hôm nay đối tượng phụ chứa cả hai"Thuật ngữ": "Paris"
và"Thuật ngữ": "Thực phẩm"
xuất hiện, trong khi bỏ qua bất kỳ phím nào như vậy bên ngoàiTags
mảng:
Chọn Doc- 'SITE_NAME' từ kèo chấp bóng đá hôm nay trang web
Người ta có thể hoàn thành điều tương tự với, nói,
Chọn Doc- 'SITE_NAME' từ kèo chấp bóng đá hôm nay trang web
Nhưng cách tiếp cận đó kém linh hoạt và thường kém hiệu quả.
Mặt khác, toán tử tồn tại kèo chấp bóng đá hôm nay không được lồng: nó sẽ chỉ tìm kiếm khóa hoặc phần tử mảng được chỉ định ở cấp cao nhất của giá trị kèo chấp bóng đá hôm nay.
kèo chấp bóng đá hôm nay toán tử ngăn chặn và tồn tại khác nhau, cùng với tất cả kèo chấp bóng đá hôm nay toán tử và chức năng JSON khác được ghi lại trongPhần 9.16.
JSONB
lập chỉ mục#Chỉ mục GIN có thể được sử dụng để tìm kiếm hiệu quả kèo chấp bóng đá hôm nay khóa hoặc kèo chấp bóng đá hôm nay cặp khóa/giá trị xảy ra trong một số lượng lớnJSONB
Tài liệu (mốc dữ liệu). Hai Ginkèo chấp bóng đá hôm nay lớp toán tử”được cung cấp, cung cấp hiệu suất và sự đánh đổi linh hoạt khác nhau.
Lớp toán tử GIN mặc định choJSONB
Hỗ trợ kèo chấp bóng đá hôm nay truy vấn với kèo chấp bóng đá hôm nay toán tử tồn tại khóa?
, ? |
và? &
, toán tử ngăn chặn@
vàJsonPath
Trình điều hành khớp@?
và@@
. (Để biết chi tiết về ngữ nghĩa mà kèo chấp bóng đá hôm nay toán tử này thực hiện, xemBảng 9,48.) Một ví dụ về việc tạo một chỉ mục với lớp toán tử này là:
Tạo IDXgin chỉ mục trên API bằng Gin (JDOC);
Lớp toán tử GIN không mặc địnhJSONB_PATH_OPS
Không hỗ trợ kèo chấp bóng đá hôm nay toán tử tồn tại khóa, nhưng nó không hỗ trợ@
, @?
và@@
. Một ví dụ về việc tạo một chỉ mục với lớp toán tử này là:
Tạo IDXGINP trên API bằng Gin (JDOC JSONB_PATH_OPS);
Xem xét ví dụ về một bảng lưu trữ kèo chấp bóng đá hôm nay tài liệu JSON được lấy từ dịch vụ web của bên thứ ba, với định nghĩa lược đồ được ghi lại. Một tài liệu điển hình là:
Chúng tôi lưu trữ kèo chấp bóng đá hôm nay tài liệu này trong một bảng có tênAPI
, trong AJSONB
Cột có tênJDOC
. Nếu một chỉ mục gin được tạo trên cột này, kèo chấp bóng đá hôm nay truy vấn như sau có thể sử dụng chỉ mục:
- Tìm kèo chấp bóng đá hôm nay tài liệu trong đó "công ty" có giá trị "magnafone"
Tuy nhiên, chỉ mục không thể được sử dụng cho kèo chấp bóng đá hôm nay truy vấn như sau, bởi vì mặc dù toán tử?
có thể lập chỉ mục, nó không được áp dụng trực tiếp cho cột được lập chỉ mụcJDOC
:
- Tìm tài liệu trong đó "thẻ" khóa chứa phần tử khóa hoặc mảng "QUI"
Tuy nhiên, với việc sử dụng kèo chấp bóng đá hôm nay chỉ mục biểu thức phù hợp, truy vấn trên có thể sử dụng một chỉ mục. Nếu truy vấn cho kèo chấp bóng đá hôm nay mục cụ thể trong"Tags"
khóa là phổ biến, xác định một chỉ mục như thế này có thể đáng giá:
Tạo IDXGINTAGS trên API bằng Gin ((JDOC - 'Tags'));
Bây giờ,WHERE
mệnh đềJDOC - 'Tags'? 'Qui'
sẽ được công nhận là ứng dụng của toán tử có thể lập chỉ mục?
đến biểu thức được lập chỉ mụcJDOC - 'Tags'
. (Có thể tìm thấy thêm thông tin về kèo chấp bóng đá hôm nay chỉ mục biểu thức trongPhần 11.7.)
Một cách tiếp cận khác để truy vấn là khai thác ngăn chặn, ví dụ:
- Tìm kèo chấp bóng đá hôm nay tài liệu trong đó "thẻ" khóa chứa phần tử mảng "QUI"
Một chỉ mục gin đơn giản trênJDOC
Cột có thể hỗ trợ truy vấn này. Nhưng lưu ý rằng một chỉ mục như vậy sẽ lưu trữ kèo chấp bóng đá hôm nay bản sao của mọi khóa và giá trị trongJDOC
Cột, trong khi chỉ mục biểu thức của ví dụ trước chỉ lưu trữ dữ liệu được tìm thấy dướiTags
khóa. Mặc dù cách tiếp cận chỉ số đơn giản linh hoạt hơn nhiều (vì nó hỗ trợ kèo chấp bóng đá hôm nay truy vấn về bất kỳ khóa nào), kèo chấp bóng đá hôm nay chỉ mục biểu thức được nhắm mục tiêu có khả năng nhỏ hơn và nhanh hơn để tìm kiếm so với một chỉ mục đơn giản.
Chỉ số Gin cũng hỗ trợ@?
và@@
toán tử, thực hiệnJsonPath
Kết hợp. Ví dụ là
Chọn jdoc- 'guid', jdoc- 'tên' từ API nơi jdoc @? '$ .tags [*]?
33889_33977
Đối với kèo chấp bóng đá hôm nay toán tử này, một chỉ số gin trích xuất kèo chấp bóng đá hôm nay mệnh đề của biểu mẫu
ra khỏiaccessors_chain
==hằng số
JsonPath
mẫu và tìm kiếm chỉ mục dựa trên kèo chấp bóng đá hôm nay khóa và giá trị được đề cập trong kèo chấp bóng đá hôm nay mệnh đề này. Chuỗi người truy cập có thể bao gồm.
, Key
[*]
và[
Trình truy cập. Theindex
]jsonb_ops
Lớp toán tử cũng hỗ trợ.*
và.**
Trình truy cập, nhưngJSONB_PATH_OPS
Lớp toán tử không.
mặc dùJSONB_PATH_OPS
Lớp toán tử chỉ hỗ trợ kèo chấp bóng đá hôm nay truy vấn với@
, @?
và@@
toán tử, nó có lợi thế hiệu suất đáng chú ý so với lớp toán tử mặc địnhjsonb_ops
. MỘTJSONB_PATH_OPS
Chỉ mục thường nhỏ hơn nhiều so vớijsonb_ops
Chỉ mục trên cùng một dữ liệu và tính đặc hiệu của kèo chấp bóng đá hôm nay tìm kiếm là tốt hơn, đặc biệt khi kèo chấp bóng đá hôm nay truy vấn chứa kèo chấp bóng đá hôm nay khóa xuất hiện thường xuyên trong dữ liệu. Do đó, kèo chấp bóng đá hôm nay hoạt động tìm kiếm thường hoạt động tốt hơn so với lớp toán tử mặc định.
Sự khác biệt kỹ thuật giữa AJSONB_OPS
và AJSONB_PATH_OPS
35626_35796[7]Về cơ bản, mỗiJSONB_PATH_OPS
Mục chỉ mục là một hàm băm của giá trị và khóa (s) dẫn đến nó; Ví dụ: chỉ mục"foo": "Bar": "Baz"
, một mục chỉ mục duy nhất sẽ được tạo kết hợp cả ba củafoo
, Bar
vàBaz
vào giá trị băm. Do đó, một truy vấn ngăn chặn tìm kiếm cấu trúc này sẽ dẫn đến một tìm kiếm chỉ mục cực kỳ cụ thể;foo
xuất hiện dưới dạng khóa. Mặt khác, AJSONB_OPS
INDEX sẽ tạo ba mục chỉ mục đại diện chofoo
, Bar
vàBaz
riêng biệt; Sau đó để thực hiện truy vấn ngăn chặn, nó sẽ tìm kiếm kèo chấp bóng đá hôm nay hàng chứa cả ba mục này.jsonb_path_ops
Tìm kiếm, đặc biệt nếu có một số lượng rất lớn kèo chấp bóng đá hôm nay hàng chứa bất kỳ một trong ba mục chỉ mục.
Một nhược điểm củaJSONB_PATH_OPS
Cách tiếp cận là nó không tạo ra kèo chấp bóng đá hôm nay mục nhập chỉ mục cho kèo chấp bóng đá hôm nay cấu trúc JSON không chứa bất kỳ giá trị nào, chẳng hạn như"A":
. Nếu một tìm kiếm cho kèo chấp bóng đá hôm nay tài liệu chứa một cấu trúc như vậy được yêu cầu, nó sẽ yêu cầu quét toàn bộ chỉ số, khá chậm.JSONB_PATH_OPS
Do đó không phù hợp với kèo chấp bóng đá hôm nay ứng dụng thường thực hiện kèo chấp bóng đá hôm nay tìm kiếm đó.
JSONB
cũng hỗ trợBtree
vàHash
Chỉ mục. Đây thường chỉ hữu ích nếu điều quan trọng là kiểm tra sự bình đẳng của kèo chấp bóng đá hôm nay tài liệu JSON hoàn chỉnh.Btree
Đặt hàng choJSONB
Datums hiếm khi được quan tâm rất lớn, nhưng cho sự hoàn chỉnh, đó là:
Đối tượng
mảng
Boolean
Số
chuỗi
null
Đối tượng với n cặp
Đối tượng có n - 1 cặp
mảng với n phần tử
Mảng có n - 1 phần tử
ngoại trừ (vì lý do lịch sử) một mảng cấp cao nhất trống sắp xếp nhỏ hơnnull
. kèo chấp bóng đá hôm nay đối tượng có số cặp bằng nhau được so sánh theo thứ tự:
Key-1
,giá trị-1
,key-2
...
Lưu ý rằng kèo chấp bóng đá hôm nay khóa đối tượng được so sánh theo thứ tự lưu trữ của chúng; Cụ thể, vì kèo chấp bóng đá hôm nay khóa ngắn hơn được lưu trữ trước kèo chấp bóng đá hôm nay phím dài hơn, điều này có thể dẫn đến kết quả có thể không trực quan, chẳng hạn như:
"AA": 1, "C": 1 "B": 1, "D": 1
Tương tự, kèo chấp bóng đá hôm nay mảng có số lượng phần tử bằng nhau được so sánh theo thứ tự:
Element-1
,Element-2
...
Giá trị JSON nguyên thủy được so sánh bằng cách sử dụng kèo chấp bóng đá hôm nay quy tắc so sánh tương tự như đối với cơ bảnPOSTGRESQLKiểu dữ liệu. Chuỗi được so sánh bằng cách sử dụng đối chiếu cơ sở dữ liệu mặc định.
JSONB
Đăng ký#TheJSONB
Kiểu dữ liệu hỗ trợ kèo chấp bóng đá hôm nay biểu thức đăng ký kiểu mảng để trích xuất và sửa đổi kèo chấp bóng đá hôm nay phần tử. kèo chấp bóng đá hôm nay giá trị lồng nhau có thể được biểu thị bằng cách chuỗi kèo chấp bóng đá hôm nay biểu thức đăng ký, tuân theo kèo chấp bóng đá hôm nay quy tắc tương tự nhưđường dẫn
Đối số trongjsonb_set
Hàm. Nếu aJSONB
Giá trị là một mảng, kèo chấp bóng đá hôm nay chỉ số số bắt đầu ở mức 0 và kèo chấp bóng đá hôm nay số nguyên âm đếm ngược từ phần tử cuối cùng của mảng. Biểu thức lát cắt không được hỗ trợ.
Cập nhật
Câu lệnh có thể sử dụng đăng ký trongset
mệnh đề để sửa đổijsonbb
Giá trị. kèo chấp bóng đá hôm nay đường dẫn đăng ký phải có thể đi qua cho tất cả kèo chấp bóng đá hôm nay giá trị bị ảnh hưởng khi chúng tồn tại.Val ['A'] ['B'] ['C']
Có thể đi qua tất cả kèo chấp bóng đá hôm nay cách đếnC
Nếu mỗiVal
, Val ['A']
vàVal ['A'] ['B']
là một đối tượng. Nếu bất kỳVal ['A']
hoặcVal ['A'] ['B']
không được xác định, nó sẽ được tạo thành một đối tượng trống và được lấp đầy khi cần thiết. Tuy nhiên, nếu cóVal
Bản thân hoặc một trong kèo chấp bóng đá hôm nay giá trị trung gian được định nghĩa là một đối tượng không phải là một chuỗi, số hoặcJSONB
null
, Traversal không thể tiến hành để lỗi được nêu ra và giao dịch bị hủy bỏ.
Một ví dụ về cú pháp đăng ký:
- Trích xuất giá trị đối tượng bằng khóa
jsonb
Bài tập thông qua đăng ký xử lý một vài trường hợp cạnh khác vớijsonb_set
. Khi một nguồnJSONB
Giá trị lànull
42829_42966
- trong đó jsonb_field là null, bây giờ là "A": 1
Nếu một chỉ mục được chỉ định cho một mảng chứa quá ít phần tử,null
kèo chấp bóng đá hôm nay phần tử sẽ được thêm vào cho đến khi chỉ mục có thể truy cập được và giá trị có thể được đặt.
- nơi jsonb_field ở [], bây giờ là [null, null, 2];
AJSONB
Giá trị sẽ chấp nhận kèo chấp bóng đá hôm nay bài tập cho kèo chấp bóng đá hôm nay đường dẫn đăng ký không tồn tại miễn là phần tử hiện tại cuối cùng được chuyển qua là một đối tượng hoặc mảng, như được ngụ ý bởi chỉ số tương ứng (phần tử được biểu thị bằng chỉ số cuối cùng trong đường dẫn không được đi qua và có thể là bất cứ điều gì). kèo chấp bóng đá hôm nay cấu trúc mảng và đối tượng lồng nhau sẽ được tạo và trong trường hợp trướcnull
-Padded, như được chỉ định bởi đường dẫn đăng ký cho đến khi có thể đặt giá trị được gán.
- trong đó jsonb_field là , bây giờ là "A": ["B": 1]
Tiện ích mở rộng bổ sung có sẵn để thực hiện kèo chấp bóng đá hôm nay biến đổi choJSONB
Loại cho kèo chấp bóng đá hôm nay ngôn ngữ thủ tục khác nhau.
kèo chấp bóng đá hôm nay tiện ích mở rộng cho PL/Perl được gọi làJSONB_PLPERL
vàJSONB_PLPERLU
. Nếu bạn sử dụng chúng,jsonb
Giá trị được ánh xạ tới kèo chấp bóng đá hôm nay mảng, băm và vô hướng, nếu thích hợp.
Phần mở rộng cho PL/Python được gọi làJSONB_PLPYTHON3U
. Nếu bạn sử dụng nó,JSONB
Giá trị được ánh xạ tới từ điển, danh sách và vô hướng của Python, nếu thích hợp.
của kèo chấp bóng đá hôm nay tiện ích mở rộng này,JSONB_PLPERL
được coi làTrusted, nghĩa là, nó có thể được cài đặt bởi những người không phải là người siêu giám sát cóTạo
Đặc quyền trên cơ sở dữ liệu hiện tại. Phần còn lại yêu cầu đặc quyền Superuser để cài đặt.
TheJsonPath
Loại thực hiện hỗ trợ cho ngôn ngữ đường dẫn SQL/kèo chấp bóng đá hôm nay trongPostgreSQLĐể truy vấn dữ liệu JSON hiệu quả. Nó cung cấp biểu diễn nhị phân của biểu thức đường dẫn SQL/JSON được phân tích cú pháp chỉ định kèo chấp bóng đá hôm nay mục sẽ được truy xuất bởi công cụ đường dẫn từ dữ liệu JSON để xử lý thêm với kèo chấp bóng đá hôm nay chức năng truy vấn SQL/JSON.
ngữ nghĩa của đường dẫn SQL/JSON và kèo chấp bóng đá hôm nay toán tử thường tuân theo SQL. Đồng thời, để cung cấp một cách làm việc tự nhiên với dữ liệu JSON, cú pháp đường dẫn SQL/JSON sử dụng một số quy ước JavaScript:
dot (.
) được sử dụng để truy cập thành viên.
dấu ngoặc vuông ([]
) được sử dụng để truy cập mảng.
Mảng SQL/JSON là 0 liên quan, không giống như kèo chấp bóng đá hôm nay mảng SQL thông thường bắt đầu từ 1.
Biết chữ số trong kèo chấp bóng đá hôm nay biểu thức đường dẫn SQL/JSON tuân theo kèo chấp bóng đá hôm nay quy tắc JavaScript, khác với cả SQL và JSON trong một số chi tiết nhỏ. Ví dụ: đường dẫn SQL/JSON cho phép.1
và1.
, không hợp lệ trong JSON. Ví dụ, kèo chấp bóng đá hôm nay dấu hiệu số nguyên không quyết định và kèo chấp bóng đá hôm nay dấu phân cách được hỗ trợ, ví dụ,1_000_000
, 0x1EEE_FFFF
, 0O273
, 0B100101
. Trong đường dẫn SQL/kèo chấp bóng đá hôm nay (và trong JavaScript, nhưng không phải trong SQL thích hợp), không được có dấu phân cách nhấn mạnh ngay sau tiền tố radix.
47700_47912Phần 4.1.2.1). Một số hình thức của biểu thức đường dẫn yêu cầu kèo chấp bóng đá hôm nay chuỗi chữ trong chúng.\ "
và để viết một bản sao lại, bạn phải viết\
. kèo chấp bóng đá hôm nay chuỗi ngược đặc biệt khác bao gồm kèo chấp bóng đá hôm nay chuỗi được công nhận trong kèo chấp bóng đá hôm nay chuỗi JavaScript:\ B
, \ f
, \ n
, \ r
, \ T
, \ V
Đối với kèo chấp bóng đá hôm nay ký tự điều khiển ASCII khác nhau,\ x
Đối với mã ký tự được viết chỉ bằng hai chữ số hex,nn
\ u
Đối với ký tự Unicode được xác định bởi điểm mã 4-HEX của nó vànnnn
\ u
Đối với một điểm mã ký tự Unicode được viết bằng 1 đến 6 chữ số hex.n ...
Một biểu thức đường dẫn bao gồm một chuỗi kèo chấp bóng đá hôm nay phần tử đường dẫn, có thể là bất kỳ điều nào sau đây:
Đường dẫn của kèo chấp bóng đá hôm nay loại nguyên thủy JSON: văn bản unicode, số, true, false hoặc null.
Biến đường dẫn được liệt kê trongBảng 8.24.
Trình điều khiển accessor được liệt kê trongBảng 8.25.
JsonPath
toán tử và phương thức được liệt kê trongPhần 9.16.2.3.
ngoặc đơn, có thể được sử dụng để cung cấp kèo chấp bóng đá hôm nay biểu thức bộ lọc hoặc xác định thứ tự đánh giá đường dẫn.
Để biết chi tiết về việc sử dụngJsonPath
Biểu thức có chức năng truy vấn SQL/kèo chấp bóng đá hôm nay, xemPhần 9.16.2.
Bảng 8.24.JsonPath
Biến
biến | Mô tả |
---|---|
$ |
Một biến đại diện cho giá trị kèo chấp bóng đá hôm nay đang được truy vấn (Mục ngữ cảnh). |
$ varname |
Một biến được đặt tên. Giá trị của nó có thể được đặt bởi tham sốVars của một số chức năng xử lý kèo chấp bóng đá hôm nay; nhìn thấyBảng 9.51Để biết chi tiết. |
@ |
Một biến biểu thị kết quả đánh giá đường dẫn trong kèo chấp bóng đá hôm nay biểu thức bộ lọc. |
Bảng 8.25.JsonPath
Trình truy cập
Toán tử accessor | Mô tả |
---|---|
|
Trình truy cập thành viên trả về một thành viên đối tượng với khóa được chỉ định. Nếu tên khóa khớp với một số biến được đặt tên bắt đầu với |
|
Trình truy cập thành viên WildCard trả về kèo chấp bóng đá hôm nay giá trị của tất cả kèo chấp bóng đá hôm nay thành viên nằm ở cấp cao nhất của đối tượng hiện tại. |
|
Trình truy cập thành viên WildCard Recurscard xử lý tất cả kèo chấp bóng đá hôm nay cấp độ của hệ thống phân cấp JSON của đối tượng hiện tại và trả về tất cả kèo chấp bóng đá hôm nay giá trị thành viên, bất kể mức độ làm tổ của chúng. Đây là mộtPostgreSQLMở rộng tiêu chuẩn SQL/kèo chấp bóng đá hôm nay. |
|
như |
|
excoror phần tử mảng. được chỉ định |
|
Trình truy cập phần tử Array WildCard trả về tất cả kèo chấp bóng đá hôm nay phần tử mảng. |
[7]Với mục đích này, thuật ngữMạnhgiá trịKhănBao gồm kèo chấp bóng đá hôm nay phần tử mảng, mặc dù thuật ngữ JSON đôi khi xem xét kèo chấp bóng đá hôm nay phần tử mảng khác biệt với kèo chấp bóng đá hôm nay giá trị trong kèo chấp bóng đá hôm nay đối tượng.