Scalable Command Query Responsibility Segregation (CQRS) / Event-Sourcing (ES) datastore
100K+
getanthill DatastoreThe goal of this project is to provide a system to easily access the full power of Event-Source / CQRS systems.
The getanthill Datastore is engineered to empower developers with a robust, scalable, and highly observable data management system built on modern architectural patterns.
CQRS & Event Sourcing: At its core, the Datastore fully embraces Command Query Responsibility Segregation (CQRS) and Event Sourcing. Manage every data entity as an immutable event stream, enabling precise atomic updates, historical reconstruction of entities to any past state, and advanced "time-travel" debugging.
Contract-First Development with JSON Schema: All data models within the Datastore are rigorously contractualized using the JSON Schema standard. This ensures data integrity and provides a strict, machine-readable contract for every piece of information, forming the foundation for reliable API interactions and event processing.
OpenAPI 3.0 Compliant API & Automatic Documentation: Leveraging its JSON Schema contracts, the Datastore automatically generates an OpenAPI 3.0 (formerly Swagger) specification. This provides comprehensive, up-to-date, and interactive documentation for your RESTful API, simplifying integration and ensuring clarity for all consumers.
Real-time Data Streaming: Process data in real-time with an integrated stream API entrypoint. Deploy workers with automatic reconnection capabilities, robust pattern matching, and built-in logging, enabling immediate reactions to data changes.
Flexible Message Broker Integration: The Datastore offers seamless integration with popular message brokers such as MQTT and RabbitMQ (AMQP). This allows for flexible event distribution, enabling advanced asynchronous communication patterns and microservices architectures.
Fine-grained Access Control: Secure your data with a comprehensive role-based access control system. Four distinct access levels (READ, DECRYPT, WRITE, ADMIN) allow for granular permissions, protecting sensitive information and operations.
Data Encryption: Easily encrypt sensitive fields within your data, providing robust data security. The system supports multiple keys, key rotation, and on-demand document encryption, ensuring data privacy even at rest.
Advanced Data Aggregation & Projections: Chain complex data projections and aggregations across multiple Datastore instances. This powerful pipeline enables sophisticated business logic, data transformation, and event tracking, facilitating advanced analytics and reporting.
Configurable & Observable: Tailor the Datastore to your needs with flexible configuration options for security, OpenAPI behavior, and feature enablement. Integrated telemetry and logging provide deep insights into system operations, simplifying monitoring and debugging.
The Datastore provides a powerful Command Line Interface for managing various aspects of your data and system.
DATASTORE_CONFIGS environment variable.json-schema.run command for executing CLI commands in a persistent session, complete with command history and auto-completion.To get started with the getanthill Datastore, follow these steps:
Clone the repository:
git clone https://gitlab.com/getanthill/datastore.git
cd datastore
Install dependencies:
npm install
Environment Variables:
Create a .env file in the root directory and configure necessary environment variables.
Example:
DATASTORE_API_URL=http://localhost:3001
DATASTORE_ACCESS_TOKEN=your_secret_token
Run the Datastore:
npm start
npm start
The API will be available at http://localhost:3001 (or your configured DATASTORE_API_URL).
Interactive Shell:
npm run cli run
Stream Events:
npm run cli stream <model> <source> -- --datastore default --output entity --connector http
Check Heartbeat:
npm run cli heartbeat
We welcome contributions from the community! To contribute to the getanthill Datastore, please follow these guidelines:
git checkout -b feature/your-feature-name or bugfix/your-bugfix-name.Please ensure your code adheres to our coding standards and passes all tests.
Content type
Image
Digest
sha256:7b50fe0dc…
Size
110.8 MB
Last updated
about 2 months ago
docker pull getanthill/datastore