Bloom
Cung cấp phương thức truy cập chỉ kèo bóng đá c1 dựa trênBộ lọc Bloom.
Bộ lọc Bloom là cấu trúc dữ liệu hiệu quả không gian được sử dụng để kiểm tra xem một phần tử có phải là thành viên của một bộ hay không. Trong trường hợp phương thức truy cập chỉ kèo bóng đá c1, nó cho phép loại trừ nhanh các bộ dữ liệu không phù hợp thông qua các chữ ký có kích thước được xác định khi tạo chỉ kèo bóng đá c1.
Chữ ký là một đại diện mất mát của (các) thuộc tính được lập chỉ kèo bóng đá c1, và như vậy có xu hướng báo cáo dương tính giả; Đó là, có thể được báo cáo rằng một yếu tố nằm trong tập hợp, khi nó không.
Loại chỉ kèo bóng đá c1 này hữu ích nhất khi bảng có nhiều thuộc tính và truy vấn kiểm tra các kết hợp tùy ý của chúng. Chỉ số Btree truyền thống nhanh hơn chỉ số Bloom, nhưng nó có thể yêu cầu nhiều chỉ kèo bóng đá c1 Btree để hỗ trợ tất cả các truy vấn có thể có trong đó người ta chỉ cần một chỉ số Bloom duy nhất.
ABloom
Index chấp nhận kèo bóng đá c1 tham số sau trongvới
mệnh đề:
length
Độ dài của mỗi chữ ký (kèo bóng đá c1 nhập chỉ kèo bóng đá c1) theo bit. Nó được làm tròn đến bội số gần nhất của16
. Mặc định là80
bit và tối đa là4096
.
col1 - col32
Số lượng bit được tạo cho mỗi cột chỉ kèo bóng đá c1. Tên của mỗi tham số đề cập đến số lượng cột chỉ kèo bóng đá c1 mà nó kiểm soát.2
bit và tối đa là4095
. Tham số cho các cột chỉ kèo bóng đá c1 không thực sự được sử dụng bị bỏ qua.
Đây là một ví dụ về việc tạo ra một chỉ kèo bóng đá c1 nở hoa:
Tạo chỉ kèo bóng đá c1 bloomidx trên tbloom bằng Bloom (I1, I2, I3)
Chỉ kèo bóng đá c1 được tạo với độ dài chữ ký là 80 bit, với các thuộc tính i1 và i2 được ánh xạ tới 2 bit và thuộc tính i3 được ánh xạ tới 4 bit. Chúng ta có thể đã bỏ qualength
, col1
vàcol2
Thông số kỹ thuật vì chúng có giá trị mặc định.
Đây là một ví dụ đầy đủ hơn về định nghĩa và cách sử dụng chỉ số Bloom, cũng như so sánh với các chỉ kèo bóng đá c1 Btree tương đương. Chỉ số Bloom nhỏ hơn đáng kể so với chỉ số Btree và có thể hoạt động tốt hơn.
=# Tạo bảng TBLOOM AS
Quét tuần tự trên bảng lớn này mất nhiều thời gian:
=# Giải thích Phân tích Chọn * từ tbloom trong đó i2 = 898732 và I5 = 123451;
Ngay cả với chỉ số Btree được xác định, kết quả vẫn sẽ là quét tuần tự:
=# Tạo chỉ kèo bóng đá c1 btreeidx trên tbloom (i1, i2, i3, i4, i5, i6);
Có chỉ kèo bóng đá c1 Bloom được xác định trên bảng tốt hơn Btree trong việc xử lý loại tìm kiếm này:
=# Tạo chỉ kèo bóng đá c1 bloomidx trên tbloom bằng bloom (I1, i2, i3, i4, i5, i6);
Bây giờ, vấn đề chính với tìm kiếm Btree là Btree không hiệu quả khi các điều kiện tìm kiếm không hạn chế (các) cột chỉ kèo bóng đá c1 hàng đầu. Một chiến lược tốt hơn cho BTREE là tạo một chỉ kèo bóng đá c1 riêng biệt trên mỗi cột.
=# Tạo chỉ kèo bóng đá c1 btreeidx1 trên tbloom (i1);
Mặc dù truy vấn này chạy nhanh hơn nhiều so với một trong hai chỉ kèo bóng đá c1 duy nhất, chúng tôi phải trả một hình phạt về kích thước chỉ kèo bóng đá c1. Mỗi chỉ số Btree một cột duy nhất chiếm 2 MB, do đó, tổng dung lượng cần thiết là 12 Mb, tám lần không gian được sử dụng bởi Chỉ số Bloom.
Một lớp toán tử cho các chỉ kèo bóng đá c1 Bloom chỉ yêu cầu hàm băm cho kiểu dữ liệu được lập chỉ kèo bóng đá c1 và toán tử bình đẳng để tìm kiếm. Ví dụ này hiển thị định nghĩa lớp toán tử choText
Kiểu dữ liệu:
Tạo lớp toán tử Text_ops
Chỉ kèo bóng đá c1 lớp toán tử choINT4
vàText
được bao gồm trong mô -đun.
chỉ=
Nhà điều hành được hỗ trợ tìm kiếm. Nhưng có thể thêm hỗ trợ cho kèo bóng đá c1 mảng với kèo bóng đá c1 hoạt động liên minh và giao lộ trong tương lai.
Bloom
Phương thức truy cập không hỗ trợđộc đáo
Indexes.
Bloom
Phương thức truy cập không hỗ trợ tìm kiếmnull
Giá trị.
Teodor Sigaev<teodor@postgrespro.ru
, Postgres Professional, Moscow, Nga
Alexander Korotkov<a.korotkov@postgrespro.ru
, Postgres Professional, Moscow, Nga
Oleg Bartunov<Obartunov@postgrespro.ru
, Postgres Professional, Moscow, Nga