MariaDB Binlog Indexer for Faster Querying
Project description
MariaDB Binlog Indexer
This tool helps to index mariadb binlogs and store them in compact format to query faster.
File Format
- DuckDB - Store all the metadata of binlogs.
- Parquet - Store the actual queries.
DB Schema
┌─────────────┬─────────────┬─────────┬─────────┬─────────┬─────────┐
│ column_name │ column_type │ null │ key │ default │ extra │
│ varchar │ varchar │ varchar │ varchar │ varchar │ varchar │
├─────────────┼─────────────┼─────────┼─────────┼─────────┼─────────┤
│ binlog │ VARCHAR │ YES │ NULL │ NULL │ NULL │
│ db_name │ VARCHAR │ YES │ NULL │ NULL │ NULL │
│ table_name │ VARCHAR │ YES │ NULL │ NULL │ NULL │
│ timestamp │ INTEGER │ YES │ NULL │ NULL │ NULL │
│ type │ VARCHAR │ YES │ NULL │ NULL │ NULL │
│ row_id │ INTEGER │ YES │ NULL │ NULL │ NULL │
│ event_size │ INTEGER │ YES │ NULL │ NULL │ NULL │
└─────────────┴─────────────┴─────────┴─────────┴─────────┴─────────┘
Usage
Before starting up please note down,
- All the timestamps are in seconds UTC
- Available query types are
SELECT,INSERT,UPDATE,DELETE,OTHER
Also, check the python docstrings for more details.
Initialize Indexer
from mariadb_binlog_indexer import Indexer
indexer = Indexer(
base_path="<path to store indexer related files>",
db_name="metadata.db", # The name of the database to store metadata
)
Index New Binlog
indexer.add(
binlog_path="<path to binlog>",
batch_size=10000, # The batch size to insert binlog in duckdb
)
Remove Indexes of Binlog
indexer.remove(
binlog_path="<path to binlog>",
)
Generate Timeline
This function will provide a summary of binlog event in a given time range. It will split the time range into 30 parts and provide event related information for each part.
indexer.get_timeline(
start_timestamp=1746534427, # The start timestamp in seconds UTC
end_timestamp=1756534427, # The end timestamp in seconds UTC,
type="INSERT", # Optional
database="test_db", # Optional
)
Get Row Ids
This function will help to get the row ids of each binlog based on our request. The purpose of this function is to help finding required row ids beforehand to implement pagination on the other end.
Only reason of doing this is to reduce the search in the parquet files.
indexer.get_row_ids(
start_timestamp=1746534427, # The start timestamp in seconds UTC
end_timestamp=1756534427, # The end timestamp in seconds UTC,
type="INSERT", # Optional
database="test_db", # Optional
table="test_table", # Optional
search_str="test", # Optional
)
Get Queries from Parquet Files
This function will help to get the queries from parquet files.
indexer.get_queries(
row_ids={
"binlog_1": [101, 102, 103],
"binlog_2": [104, 105, 106],
},
database="test_db", # Optional
)
You need to provide database name as filtering purpose only.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distributions
Built Distributions
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file mariadb_binlog_indexer-0.0.3-py3-none-manylinux2014_x86_64.whl.
File metadata
- Download URL: mariadb_binlog_indexer-0.0.3-py3-none-manylinux2014_x86_64.whl
- Upload date:
- Size: 25.9 MB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.10.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
118b238f76829c1d2a377978e13d04a4ddf2dd2c27d93aa190649bef14585434
|
|
| MD5 |
34555f82f124b56b79a7eda10f304dc7
|
|
| BLAKE2b-256 |
89532fe391268317df381422128ab5c628fc6eeacdad241d2daae73168382b6e
|
File details
Details for the file mariadb_binlog_indexer-0.0.3-py3-none-manylinux2014_aarch64.whl.
File metadata
- Download URL: mariadb_binlog_indexer-0.0.3-py3-none-manylinux2014_aarch64.whl
- Upload date:
- Size: 24.4 MB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.10.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
7b2eea3a0308c6723593d949fb87ddae41f98bf36764b187d2a017e9558b2e54
|
|
| MD5 |
66ce3ceeb1ae256f889d7a8764c7e364
|
|
| BLAKE2b-256 |
b3a8ae2dd13e940e4642327d9ab90134eb1d3a01011cf83275fbba95aac85b6b
|