PostgreSQL 9.2.24 Tài liệu | ||||
---|---|---|---|---|
스포츠 토토 결과 : 문서 : 9.2 : Citext | UP | Phụ lục F. Các mô -đun được cung cấp bổ sung | 토토 결과 : 문서 : 9.2 : DBLINK |
Mô -đun này thực hiện kiểu dữ liệu배트맨 토토để đại diện cho các 배트맨 토토 đa chiều.
Bảng F-3Hiển thị Các biểu diễn bên ngoài hợp lệ cho배트맨 토토loại.x, y, v.v. biểu thị điểm nổi số.
Bảng F-3. Biểu diễn bên ngoài 배트맨 토토
x | Một điểm một chiều (hoặc, độ dài không có chiều dài khoảng thời gian một chiều) |
(x) | giống như trên |
x1,x2,...,xn | Một điểm trong không gian N chiều, được biểu thị trong nội bộ như một 배트맨 토토 배트맨 토토 lượng không |
(x1,x2,...,xn) | giống như trên |
(x), (y) | Khoảng thời gian một chiều bắt đầu tạixvà kết thúc tạiYhoặc ngược lại; thứ tự làm không quan trọng |
[(x), (y)] | giống như trên |
(x1,...,xn), (Y1,...,yn) | Một 배트맨 토토 lập phương n-chiều được biểu thị bằng một cặp của nó Các góc đối diện theo đường chéo |
[(x1,...,xn11852_11857Y1,...,yn)] | giống như trên |
Không quan trọng là thứ tự đặt hàng các góc đối diện của a 배트맨 토토 được nhập vào.배트맨 토토chức năng tự động hoán đổi giá trị nếu cần để tạo một đồng nhất"dưới bên trái - trên bên phải"Nội bộ đại diện.
Không gian trắng bị bỏ qua, vì vậy[(x), (y)]giống như[(x), (y)].
Giá trị được lưu trữ bên trong dưới dạng điểm nổi 64 bit số. Điều này có nghĩa là những con số có nhiều hơn khoảng 16 Các chữ số đáng kể sẽ bị cắt.
The배트맨 토토Mô -đun bao gồm một ý chính Lớp toán tử chỉ mục cho배트맨 토토Giá trị. Các Các toán tử được hỗ trợ bởi lớp toán tử GIST được hiển thị trongBảng F-4.
Bảng F-4. Nhà khai thác Cube Gist
Nhà điều hành | Mô tả |
---|---|
A = B | Các 배트맨 토토 A và B giống hệt nhau. |
A && B | Các 배트맨 토토 A và B chồng chéo. |
A @ B | 배트맨 토토 A chứa 배트맨 토토 lập phương b. |
A <@ B | 배트맨 토토 A được chứa trong 배트맨 토토 b. |
(trước PostgreSql 8.2, toán tử ngăn chặn@và<@was tương ứng được gọi là@và~. Những cái tên này vẫn có sẵn, nhưng là Khấu hao và cuối cùng sẽ được nghỉ hưu. Lưu ý rằng cái cũ Tên được đảo ngược từ hội nghị trước đây là Kiểu dữ liệu hình học lõi!)
Các toán tử B-cây tiêu chuẩn cũng được cung cấp, cho ví dụ
Những người vận hành này không có nhiều ý nghĩa đối với bất kỳ mục đích thực tế nhưng sắp xếp. Các nhà khai thác này so sánh đầu tiên (a) đến (c) và nếu chúng bằng nhau, so sánh (b) với (d). Cái đó kết quả trong việc sắp xếp hợp lý tốt trong hầu hết các trường hợp, đó là hữu ích nếu bạn muốn sử dụng đơn hàng theo loại này.Bảng F-5Hiển thị các chức năng có sẵn.
Bảng F-5. Chức năng 배트맨 토토
배트맨 토토 (float8) trả về 배트맨 토토 | tạo ra một 배트맨 토토 một chiều với cả hai tọa độ giống nhau.배트맨 토토 (1) == '(1)' |
배트맨 토토 (float8, float8) trả về 배트맨 토토 | Làm cho một 배트맨 토토 một chiều.배트맨 토토 (1,2) == '(1), (2)' |
배트맨 토토 (float8 []) trả về 배트맨 토토 | Tạo 배트맨 토토 배트맨 토토 lượng không bằng cách sử dụng tọa độ được xác định bởi mảng.배트맨 토토 (mảng [1,2]) == '(1,2)' |
배트맨 토토 (float8 [], float8 []) trả về 배트맨 토토 | Làm cho một 배트맨 토토 lập phương có trên bên phải và dưới bên trái tọa độ theo định nghĩa của hai mảng, phải là có cùng độ dài.배트맨 토토 ('1,2' :: float [], '3,4' :: float []) == '(1,2), (3,4)' |
배트맨 토토 (배트맨 토토, float8) trả về 배트맨 토토 | tạo ra một 배트맨 토토 mới bằng cách thêm một chiều vào 배트맨 토토 lập phương hiện có với cùng một giá trị cho cả hai phần của tọa độ mới. Điều này rất hữu ích cho việc xây dựng các 배트맨 토토 từng mảnh từ các giá trị được tính toán.배트맨 토토 ('(1)', 2) == '(1,2), (1,2)' |
배트맨 토토 (배트맨 토토, float8, float8) trả về 배트맨 토토 | Tạo một 배트맨 토토 mới bằng cách thêm một chiều vào 배트맨 토토 lập phương. Điều này rất hữu ích cho việc xây dựng các 배트맨 토토 theo mảnh từ các giá trị được tính toán.배트맨 토토 ('(1,2)', 3,4) == '(1,3), (2,4)' |
cube_dim (배트맨 토토) trả về int | Trả về số lượng kích thước của 배트맨 토토 |
cube_ll_coord (cube, int) trả về gấp đôi | Trả về giá trị tọa độ n'th cho thấp hơn góc trái của một 배트맨 토토 |
cube_ur_coord (cube, int) trả về gấp đôi | Trả về giá trị tọa độ n'th cho phần trên góc bên phải của một 배트맨 토토 |
cube_is_point (배트맨 토토) trả về bool | Trả về đúng nếu một 배트맨 토토 lập phương là một điểm, nghĩa là hai Xác định các góc là như nhau. |
cube_distance (배트맨 토토, 배트맨 토토) trả về gấp đôi | Trả về khoảng cách giữa hai 배트맨 토토. Nếu cả hai hình 배트맨 토토 là điểm, đây là khoảng cách bình thường chức năng. |
cube_subset (cube, int []) trả về 배트맨 토토 | tạo ra một 배트맨 토토 lập phương mới từ một 배트맨 토토 lập phương hiện có, sử dụng A Danh sách các chỉ mục kích thước từ một mảng. Có thể được sử dụng để Tìm cả tọa độ LL và bạn của một Kích thước, ví dụ:cube_subset (배트맨 토토 ('(1,3,5), (6,7,8)'), Mảng [2]) = '(3), (7)'. Hoặc có thể được sử dụng để giảm Kích thước hoặc sắp xếp lại chúng như mong muốn, ví dụ:cube_subset (배트맨 토토 ('(1,3,5), (6,7,8)'), Mảng [3,2,1,1]) = '(5, 3, 1, 1), (8, 7, 6, 6) '. |
cube_union (배트맨 토토, 배트맨 토토) trả về 배트맨 토토 | Sản xuất sự kết hợp của hai 배트맨 토토 |
cube_inter (배트맨 토토, 배트맨 토토) trả về 배트맨 토토 | Sản xuất giao điểm của hai 배트맨 토토 |
cube_enlarge (배트맨 토토 C, Double R, int n) trả về 배트맨 토토 | Tăng kích thước của một 배트맨 토토 bằng bán kính được chỉ định trong ít nhất n kích thước. Nếu bán kính là âm thì Cube bị thu hẹp thay thế. Điều này rất hữu ích cho việc tạo ra Hộp giới hạn xung quanh một điểm để tìm kiếm gần đó điểm. Tất cả các kích thước được xác định được thay đổi bởi Bán kính r. Tọa độ sẽ giảm bởi r và ur tọa độ được tăng lên bởi r. Nếu tọa độ LL là tăng lên lớn hơn UR tương ứng tọa độ (điều này chỉ có thể xảy ra khi r <0) hơn Cả hai tọa độ được đặt thành trung bình của họ. Nếu n là lớn hơn số lượng kích thước được xác định và 배트맨 토토 lập phương đang được tăng (r = 0) thì 0 được sử dụng dưới dạng cơ sở cho tọa độ phụ. |
Tôi tin rằng sự kết hợp này:
Chọn Cube_union ('(0,5,2), (2,3,1)', '0'); Cube_Union ------------------- (0, 0, 0), (2, 5, 2) (1 hàng)
Không mâu thuẫn với lẽ thường, cũng không Giao lộ
chọn cube_inter ('(0, -1), (1,1)', '(-2), (2)'); cube_inter ------------- (0, 0), (1, 0) (1 hàng)
Trong tất cả các hoạt động nhị phân trên các 배트맨 토토 khác nhau, tôi Giả sử một chiều thấp hơn là một hình chiếu của Cartesian, Tôi. e., có số 0 thay cho tọa độ bị bỏ qua trong Đại diện chuỗi. Các ví dụ trên là tương đương ĐẾN:
cube_union ('(0,5,2), (2,3,1)', '(0,0,0), (0,0,0)'); cube_inter ('(0, -1), (1,1)', '(-2,0), (2,0)');
Vị trí ngăn chặn sau đây sử dụng cú pháp điểm, trong khi trên thực tế, đối số thứ hai được thể hiện nội bộ bởi Một hộp. Cú pháp này làm cho nó không cần thiết phải xác định riêng Loại điểm và các chức năng cho (hộp, điểm) định vị.
Chọn 배트맨 토토 cube_contains ('(0,0), (1,1)', '0,5,0,5'); Cube_contains -------------- t (1 hàng)
Để biết ví dụ về việc sử dụng, hãy xem bài kiểm tra hồi quySQL/cube.sql.
Để làm cho mọi người khó khăn hơn để phá vỡ mọi thứ, có một Giới hạn 100 trên số lượng kích thước của hình 배트맨 토토. Điều này được đặt TRONGcubedata.hNếu bạn cần một cái gì đó lớn hơn.
Tác giả gốc: Gene Selkov, Jr.<selkovjr@mcs.anl.gov
,,
Khoa Toán học và Khoa học Máy tính, Argonne National
Phòng thí nghiệm.
Lời cảm ơn của tôi chủ yếu dành cho Giáo sư Joe Hellerstein (http: //db.cs.berkeley.edu/jmh/) để làm sáng tỏ ý chính của ý chính (http: //gist.cs.berkeley.edu/), và với anh ấy Cựu học sinh, Andy Dong (http: //best.me.berkeley.edu/~adong/), cho anh ấy Ví dụ được viết cho Minh họa,http: //best.berkeley.edu/~adong/rtree/index.html. TÔI cũng biết ơn tất cả các nhà phát triển Postgres, hiện tại và quá khứ, vì cho phép bản thân tạo ra thế giới của riêng tôi và sống không bị xáo trộn trong đó. Và tôi muốn thừa nhận lòng biết ơn của mình với argonne Phòng thí nghiệm và Bộ Năng lượng Hoa Kỳ trong những năm Hỗ trợ trung thành của nghiên cứu cơ sở dữ liệu của tôi.
Cập nhật nhỏ cho gói này được thực hiện bởi Bruno Wolff III<bruno@wolff.to
in
Tháng 8/tháng 9 năm 2002. Chúng bao gồm thay đổi độ chính xác
từ độ chính xác đơn lẻ đến độ chính xác gấp đôi và thêm một số mới
chức năng.
Cập nhật bổ sung được thực hiện bởi Joshua Reich<josh@root.net
vào tháng 7
2006. Chúng bao gồm배트맨 토토 (float8 [],
float8 [])Và làm sạch mã để sử dụng cuộc gọi V1
giao thức thay vì giao thức V0 không dùng nữa.