Official Python SDK for getMe.
Project description
📑 Index
- Overview
- About getMe Core Engine
- Server Dependency & Docker
- Other Available SDKs
- Links and Resources
- License
📖 Overview
The official Python client library for the getMe key-value store. This SDK abstracts the underlying API calls, providing Python developers with a simple, idiomatic interface to interact directly with the getMe runtime.
🧠 About getMe Core Engine
getMe is a persistent, embeddable key-value store written in Go. It is heavily inspired by the design of Bitcask and is optimized for high write throughput and low-latency reads.
The engine runs on a few core principles:
- Log-Structured Storage: All data is written to an append-only log file, maximizing write speed by avoiding slow, random disk I/O.
- In-Memory Hash Index: A hash table is maintained in memory mapping each key to its exact on-disk location, enabling single disk seek lookups.
- Compaction: A background process that periodically removes stale data to reclaim disk space.
- Batch Operations: A batch API amortizes the cost of writes, allowing for extremely high ingestion rates.
For a deep dive into the architecture, please refer to the Root README and the Server README.
🚀 Server Dependency & Docker
Important: This SDK acts merely as a client. The getMe core server engine must be running independently for this library to function. The SDK interacts with the Core Engine through a Unix Domain Socket (UDS).
Running the Core Engine via Docker
You can use the official Docker images mentioned in our DockerHub README.
For maximum performance, we recommend using the Core Server Only container (ContainerFile.server), which isolates the database engine:
docker build -t getme-core -f ../../ContainerFile.server ../../
docker run -d \
--name getme-engine \
-v getme_data:/var/lib/getMeStore \
-v /tmp/getMeStore/sockDir:/tmp/getMeStore/sockDir \
getme-core
Connecting the SDK to the Core Engine
The SDK communicates with the engine via the Unix Domain Socket (getMe.sock). Because the engine creates the socket in /tmp/getMeStore/sockDir, it is critical that this exact directory is bind-mounted when running the container so that your local Python application can reach it.
To connect your Python SDK to the core engine:
- Ensure the
getMeserver is running (either locally or via Docker with the/tmp/getMeStore/sockDirvolume mounted). - Point your SDK initialization to the socket file location (default:
/tmp/getMeStore/sockDir/getMe.sock).
Why manage the core engine separately?
Decoupling the database engine from the Python logic provides several critical advantages:
- Performance & Isolation: The core engine heavily utilizes memory for its hash index and performs continuous background disk I/O for compaction. Running it separately prevents the storage engine from starving your Python application of memory or compute resources (and vice-versa).
- Independent Scaling: You can scale your Python applications dynamically while connecting to a centralized, standalone
getMeinstance. - Polyglot Ecosystems: A decoupled server can serve multiple applications simultaneously, even if those applications are built across entirely different technology stacks.
📦 Other Available SDKs
While this is the Python client, getMe supports multiple languages. Detailed information on all available SDKs can be found in the Root README.
🔗 Links and Resources
Below is a comprehensive list of resources and documentation linked throughout the getMe ecosystem:
Engineering Blog Series
📄 License
This project is licensed under the GNU Affero General Public License v3.0 (AGPLv3) - see the LICENSE file for details.
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
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 getme_python_sdk-1.1.1.tar.gz.
File metadata
- Download URL: getme_python_sdk-1.1.1.tar.gz
- Upload date:
- Size: 4.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: uv/0.9.21 {"installer":{"name":"uv","version":"0.9.21","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
5c582b874d5b83afc88b5ddd3dc19be9b31afce4915b8032eb2f7a22247ef857
|
|
| MD5 |
cd16f2f1c4233aaf5744e065c25d0d38
|
|
| BLAKE2b-256 |
8ebc0a0c4745bbda5b4dc602c620caf2152c2f82bf31c0d45baafa4cd0a2f40c
|
File details
Details for the file getme_python_sdk-1.1.1-py3-none-any.whl.
File metadata
- Download URL: getme_python_sdk-1.1.1-py3-none-any.whl
- Upload date:
- Size: 6.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: uv/0.9.21 {"installer":{"name":"uv","version":"0.9.21","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
22ec3dbcd3d30b6c44705332c58c4924d258cea348a9d1bc12a8c20d67dcf7fb
|
|
| MD5 |
462389ff15e076de56a5c07a92e888f3
|
|
| BLAKE2b-256 |
130c69e890d8a173a2e408d77878a1e22f88314bb360e41a2ad9795889954fe8
|