Mô -đun này thực hiện토토 꽁 머니
Kiểu dữ liệu để lưu trữ các bộ khóa/giá trị trong mộtPostgreSQLGiá trị. Điều này có thể hữu ích trong các kịch bản khác nhau, chẳng hạn như các hàng có nhiều thuộc tính hiếm khi được kiểm tra hoặc dữ liệu bán cấu trúc. Các khóa và giá trị chỉ đơn giản là chuỗi văn bản.
Mô -đun này được coi làHồiTrustedHồi, 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.
토토 꽁 머니
Đại diện bên ngoài#Biểu diễn văn bản của토토 꽁 머니
, được sử dụng cho đầu vào và đầu ra, bao gồm không hoặc nhiều hơnKey
=
giá trị
cặp được phân tách bằng dấu phẩy. Một số ví dụ:
K = V. foo = thanh, baz = bất cứ điều gì "1-a" = "bất cứ điều gì ở tất cả"
Thứ tự của các cặp không đáng kể (và có thể không được sao chép trên đầu ra). Khoảng trắng giữa các cặp hoặc xung quanh=
Dấu hiệu bị bỏ qua. Các phím và giá trị trích dẫn kép bao gồm khoảng trắng, dấu phẩy,=
S hoặcs. Để bao gồm một báo giá kép hoặc dấu gạch chéo ngược trong một khóa hoặc giá trị, hãy thoát nó bằng một dấu gạch chéo ngược.
mỗi khóa trong một토토 꽁 머니
là duy nhất. Nếu bạn khai báo토토 꽁 머니
Với các khóa trùng lặp, chỉ có một cái sẽ được lưu trữ trong토토 꽁 머니
Và không có gì đảm bảo sẽ được giữ:
Chọn 'a = 1, a = 2' :: 토토 꽁 머니; hstore ---------- "A" = "1"
Một giá trị (nhưng không phải là khóa) có thể là SQLnull
. Ví dụ:
key = null
Thenull
Từ khóa không nhạy cảm với trường hợp. Hai phần trích dẫnnull
Để coi nó là chuỗi thông thườngnullxông.
Hãy nhớ rằng토토 꽁 머니
Định dạng văn bản, khi được sử dụng cho đầu vào, áp dụngtrướcBất kỳ trích dẫn hoặc thoát yêu cầu nào. Nếu bạn đang vượt qua토토 꽁 머니
theo nghĩa đen thông qua một tham số, sau đó không cần xử lý bổ sung. Nhưng nếu bạn đang chuyển nó dưới dạng hằng số theo nghĩa đen được trích dẫn, thì bất kỳ ký tự nào một cách nào và (tùy thuộc vào cài đặt củaStandard_Conforming_Strings
Tham số cấu hình) Các ký tự Backslash cần được thoát chính xác. Nhìn thấyPhần 4.1.2.1Để biết thêm về việc xử lý các hằng số chuỗi.
Trên đầu ra, báo giá đôi luôn bao quanh các khóa và giá trị, ngay cả khi nó không hoàn toàn cần thiết.
토토 꽁 머니
toán tử và chức năng#Các toán tử được cung cấp bởi토토 꽁 머니
Mô -đun được hiển thị trongBảng F.6, các chức năng trongBảng F.7.
Bảng F.6. 토토 꽁 머니
toán tử
Nhà điều hành Mô tả Ví dụ |
---|
Trả về giá trị được liên kết với phím đã cho hoặc
|
Trả về các giá trị được liên kết với các khóa đã cho hoặc
|
Concatenates Hai
|
không
|
không
|
không
|
Vận hành bên trái có chứa phải không?
|
là toán hạng bên trái có ở bên phải?
|
Xóa phím khỏi toán hạng bên trái.
|
Xóa các phím từ toán hạng bên trái.
|
Xóa các cặp từ toán hạng bên trái phù hợp với các cặp trong toán hạng bên phải.
|
Thay thế các trường trong toán hạng bên trái (phải là loại tổng hợp) với các giá trị phù hợp từ
|
Chuyển đổi
|
Chuyển đổi
|
Bảng F.7. 토토 꽁 머니
Chức năng
Ngoài các toán tử và chức năng này, các giá trị của토토 꽁 머니
Loại có thể được đăng ký, cho phép chúng hoạt động như các mảng kết hợp. Chỉ một chỉ số duy nhất của loạiText
có thể được chỉ định; Nó được hiểu là một khóa và giá trị tương ứng được tìm nạp hoặc lưu trữ. Ví dụ,
Tạo bảng mytable (h hstore); Chèn vào các giá trị mytable ('a = b, c = d'); Chọn H ['A'] từ MyTable; h --- b (1 hàng) Cập nhật MyTable Set H ['C'] = 'Mới'; Chọn H từ mytable; h -------------------------- "A" = "B", "C" = "Mới" (1 hàng)
Một lần tìm kiếm được đăng kýnull
Nếu chỉ số lànull
hoặc khóa đó không tồn tại trong토토 꽁 머니
. .-
Nhà điều hành.) Một bản cập nhật được đăng ký không thành công nếu chỉ số lànull
; Nếu không, nó thay thế giá trị cho khóa đó, thêm một mục vào토토 꽁 머니
Nếu khóa chưa tồn tại.
토토 꽁 머니
Hỗ trợ Chỉ số Gist và Gin cho@
, ?
, ? &
và? |
Người vận hành. Ví dụ:
Tạo chỉ mục HIDX trên Testhstore bằng Gist (h); Tạo chỉ mục HIDX trên Testhstore bằng Gin (H);
gist_토토 꽁 머니_ops
GIST OPCLASS xấp xỉ một tập hợp các cặp khóa/giá trị dưới dạng chữ ký bitmap. Tham số số nguyên tùy chọn của nóSiglen
Xác định độ dài chữ ký trong byte. Độ dài mặc định là 16 byte. Các giá trị hợp lệ của độ dài chữ ký nằm trong khoảng từ 1 đến 2024 byte. Chữ ký dài hơn dẫn đến một tìm kiếm chính xác hơn (quét một phần nhỏ hơn của chỉ mục và ít trang đống hơn), với chi phí của một chỉ số lớn hơn.
Ví dụ về việc tạo một chỉ mục như vậy với độ dài chữ ký là 32 byte:
40296_40374
토토 꽁 머니
cũng hỗ trợBtree
hoặcHash
Chỉ mục cho=
toán tử. Điều này cho phép토토 꽁 머니
cột được khai báođộc đáo
hoặc được sử dụng trongNhóm bởi
, Đặt hàng bởi
hoặckhác biệt
Biểu thức. Thứ tự sắp xếp cho토토 꽁 머니
Giá trị không đặc biệt hữu ích, nhưng các chỉ mục này có thể hữu ích cho các tra cứu tương đương. Tạo chỉ mục cho=
so sánh như sau:
Tạo chỉ mục HIDX trên Testhstore bằng Btree (h); Tạo chỉ mục HIDX trên Testhstore bằng băm (h);
Thêm khóa hoặc cập nhật khóa hiện có có giá trị mới:
Tab Cập nhật đặt H ['C'] = '3';
Một cách khác để làm điều tương tự là:
Tab Cập nhật đặt H = H || hstore ('c', '3');
Nếu nhiều khóa được thêm hoặc thay đổi trong một thao tác, phương pháp nối tiếp tục hơn so với đăng ký:
Tab Cập nhật đặt H = H || hstore (mảng ['q', 'w'], mảng ['11 ',' 12 ']);
Xóa khóa:
Tab Update Set H = Delete (h, 'K1');
Chuyển đổi ARecord
đến một토토 꽁 머니
:
Tạo thử nghiệm bảng (số nguyên col1, văn bản col2, văn bản col3); Chèn vào các giá trị kiểm tra (123, 'foo', 'thanh'); Chọn HStore (T) từ thử nghiệm là T; hstore ------------------------------------------------- "col1" = "123", "col2" = "foo", "col3" = "bar" (1 hàng)
Chuyển đổi một토토 꽁 머니
đến được xác định trướcRecord
loại:
Tạo thử nghiệm bảng (số nguyên col1, văn bản col2, văn bản col3); Chọn * Từ population_record (null :: test, '"col1" = "456", "col2" = "zzz"'); col1 | col2 | col3 ------+------+------ 456 | zzz | (1 hàng)
Sửa đổi bản ghi hiện có bằng cách sử dụng các giá trị từ토토 꽁 머니
:
Tạo thử nghiệm bảng (số nguyên col1, văn bản col2, văn bản col3); Chèn vào các giá trị kiểm tra (123, 'foo', 'thanh'); Chọn (r).* Từ (chọn t #= '"col3" = "Baz"' làm r từ thử nghiệm t) s; col1 | col2 | col3 ------+------+------ 123 | foo | Baz (1 hàng)
The토토 꽁 머니
Loại, vì tính tự do nội tại của nó, có thể chứa rất nhiều khóa khác nhau. Kiểm tra các khóa hợp lệ là nhiệm vụ của ứng dụng. Các ví dụ sau đây chứng minh một số kỹ thuật để kiểm tra các khóa và có được số liệu thống kê.
Ví dụ đơn giản:
Chọn * từ mỗi ('aaa = bq, b = null, "" = 1');
Sử dụng bảng:
Tạo chỉ số bảng là chọn (mỗi (h)).
Thống kê trực tuyến:
Chọn khóa, đếm (*) từ (Chọn (mỗi (h)). Khóa từ Testhstore) làm chỉ số Nhóm theo khóa Đặt hàng theo đếm desc, khóa; chìa khóa | đếm -----------+------- dòng | 883 Truy vấn | 207 pos | 203 nút | 202 Không gian | 197 trạng thái | 195 công khai | 194 Tiêu đề | 190 org | 189 ...................
Kể từ Postgresql 9.0,토토 꽁 머니
Sử dụng biểu diễn nội bộ khác với các phiên bản trước. Điều này không có trở ngại cho việc nâng cấp/khôi phục từ bỏ vì biểu diễn văn bản (được sử dụng trong bãi rác) không thay đổi.
Trong trường hợp nâng cấp nhị phân, khả năng tương thích tăng được duy trì bằng cách có mã mới nhận ra dữ liệu định dạng cũ. Điều này sẽ đòi hỏi một hình phạt hiệu suất nhỏ khi xử lý dữ liệu chưa được sửa đổi bởi mã mới. Có thể buộc nâng cấp tất cả các giá trị trong cột bảng bằng cách thực hiệnCập nhật
Câu như sau:
45340_45393
Một cách khác để làm điều đó là:
45466_45542
TheBảng thay đổi
Phương pháp yêu cầuAccess Exclusive
Khóa trên bảng, nhưng không dẫn đến việc làm cho bảng với các phiên bản hàng cũ.
tiện ích mở rộng bổ sung có sẵn để thực hiện các biến đổi cho토토 꽁 머니
Loại cho các ngôn ngữ PL/Perl và PL/Python. Các tiện ích mở rộng cho PL/perl được gọi là토토 꽁 머니_plperl
và토토 꽁 머니_plperlu
, cho PL/Perl đáng tin cậy và không tin cậy. Nếu bạn cài đặt các biến đổi này và chỉ định chúng khi tạo hàm,토토 꽁 머니
Giá trị được ánh xạ tới băm Perl. Phần mở rộng cho PL/Python được gọi là토토 꽁 머니_plpython3u
. Nếu bạn sử dụng nó,토토 꽁 머니
Giá trị được ánh xạ tới từ điển Python.
Được khuyến nghị mạnh mẽ rằng các tiện ích mở rộng biến đổi được cài đặt trong cùng lược đồ như토토 꽁 머니
. Nếu không
Oleg Bartunov<leg@sai.msu.su
, Moscow, Đại học Moscow, Nga
Teodor Sigaev<teodor@sigaev.ru
, Moscow, Delta-Soft Ltd., Nga
Cải tiến bổ sung của Andrew Gierth<andrew@tao11.riddles.org.uk
, Vương quốc Anh
Nếu bạn thấy bất cứ điều gì trong tài liệu không chính xác, không phù hợp Kinh nghiệm của bạn với tính năng cụ thể hoặc yêu cầu làm rõ thêm, Vui lòng sử dụngMẫu nàyĐể báo cáo vấn đề tài liệu.