Biscuit Documentation
Welcome to the official documentation for Biscuit.
Contents:
- Installation Guide
- Quick Start Tutorial
- Step 1: Create Sample Data
- Step 2: Measure Baseline Performance
- Step 3: Create Biscuit Index
- Step 4: Run Optimized Queries
- Step 5: Try Different Pattern Types
- Step 6: Multi-Column Indexes
- Step 7: Aggregate Queries (Special Optimization)
- Step 8: Monitor Index Statistics
- Step 9: Test CRUD Operations
- Best Practices
- Next Steps
- Common Questions
- API Reference
- Biscuit Index Architecture
- Pattern Syntax Guide
- Multi-Column Indexes
- Biscuit Performance Benchmark — Fallback Bitmaps
- Executive Summary
- Introduction
- Methodology
- Test Environment
- Query Coverage Analysis
- Performance Results
- Statistical Analysis
- Statistical Analysis
- Pattern-Specific Performance
- Correctness Verification
- Index Usage Analysis
- Real-World Scenarios
- Trade-off Analysis
- Limitations and Future Work
- Conclusions
- Statistical Methods
- Biscuit Performance Benchmark — Roaring Bitmaps
- Executive Summary
- Introduction
- Methodology
- Test Environment
- Query Coverage Analysis
- Performance Results
- Statistical Analysis
- Pattern-Specific Performance
- Correctness Verification
- Index Usage Analysis
- Roaring Bitmap Optimization Impact
- Real-World Scenarios
- Trade-off Analysis
- Limitations and Future Work
- Conclusions
- Statistical Methods
- Appendix: Verification Checklist
- Benchmark Environment
- Performance Tuning Guide
- Quick Performance Checklist
- Understanding Biscuit Performance
- PostgreSQL Configuration
- Index Design Optimization
- Query Optimization
- Maintenance and Monitoring
- Hardware Considerations
- Benchmarking Your Setup
- Troubleshooting Performance Issues
- Advanced Tuning
- Performance Monitoring Dashboard
- Next Steps
- Tribute to Trigrams and Trees
- Frequently Asked Questions
Biscuit Index for PostgreSQL
High-Performance Pattern Matching Index for LIKE Queries
What is Biscuit?
Biscuit is a specialized PostgreSQL index access method designed to dramatically accelerate LIKE pattern matching queries. Unlike traditional B-tree or GIN indexes, Biscuit uses bitmap-based character indexing to provide near-instantaneous pattern matching across single or multiple columns.
Key Features
Blazing Fast: Optimized for complex
LIKEpatterns including%,_, prefixes, suffixes, and substringsMulti-Column Support: Query across multiple columns simultaneously with intelligent predicate reordering
Aggregate Optimization: Special optimizations for
COUNT(*)andEXISTSqueriesFull CRUD Support: INSERT, UPDATE, DELETE operations with automatic index maintenance
Smart Query Planning: Automatic reordering of predicates based on selectivity analysis
Memory Efficient: Uses Roaring Bitmaps for compact in-memory representation
Version 2.2.2
⚡ Performance Improvements
Refined TID sorting implementation
Replaced the previous hybrid dense/sparse block radix sorter with a uniform 4-pass radix sort covering the full 32-bit BlockNumber.
Sorting is now performed using four 8-bit passes, eliminating assumptions about block number density or range.
🛡️ Correctness & Stability
Aligned TID comparison with PostgreSQL core
Replaced custom TID comparison logic with PostgreSQL’s native comparison routine to ensure consistent ordering behavior.
Quick Start
-- Install the extension
CREATE EXTENSION biscuit;
-- Create a Biscuit index
CREATE INDEX idx_products_name ON products
USING biscuit (name);
-- Query using LIKE patterns
SELECT * FROM products
WHERE name LIKE '%laptop%';
Documentation Structure
Installation Guide - Get started with Biscuit
Quick Start Tutorial - Your first Biscuit index in 5 minutes
Pattern Syntax - Understanding LIKE pattern matching
Multi-Column Indexes - Advanced multi-column queries
Performance Tuning - Optimize your queries
API Reference - Complete function reference
Benchmarks - Benchmarks and other statistics
FAQ - Common questions and troubleshooting
When to Use Biscuit
Perfect For:
Text search with wildcards (
%product%,item_%)Email/domain filtering (
%@company.com)Prefix/suffix matching (
admin%,%_test)Multi-column pattern queries
High-cardinality string columns
Frequent
LIKE/ILIKEqueries in analytics
Not Ideal For:
Full-text search (use
tsvectorinstead)Exact equality matches (B-tree is sufficient)
Low-selectivity patterns (single
%)
System Requirements
PostgreSQL 16 or higher
Linux, macOS, or Windows
Recommended: CRoaring library for enhanced performance
License
Biscuit is open-source software released under the PostgreSQL License.
Support
Issues: GitHub Issues
Discussions: GitHub Discussions
Email: sivaprasad.off@gmail.com
Ready to accelerate your pattern matching queries?