Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Document requirements for implementing a DataStore to serve ledger metadata #5577

Open
tamirms opened this issue Jan 22, 2025 · 2 comments
Open

Comments

@tamirms
Copy link
Contributor

tamirms commented Jan 22, 2025

galexie is a service which generates LedgerCloseMeta XDR objects and stores them in a repository to allow queries for ledgers which are faster and easier than running captive core.

DataStore is the Go interface which defines all storage operations required by galexie. Currently, there is only 1 concrete implementation of the DataStore interface which is backed by GCS. However, we anticipate that there will be other DataStore implementations backed by other storage engines. For example, a DataStore implementation could be backed by S3, a local file system, or even a relational database like postgres.

However, the requirements for a DataStore implementation are not documented in any specification. We should create a SEP which provides a full specification for the DataStore interface so that third party developers can create their own DataStore implementations that can be used interchangeably by galexie and galexie clients.

@urvisavla
Copy link
Contributor

There are a couple of open items that could influence the datastore specification:

Co-locating the schema on the datastore might not be strictly necessary for the formal specification but I think it could be useful. However, the proposed changes in #5547 to simplify the append logic will definitely require the datastore to support listing objects in a specific order.

Imo, tackling these issues will help create a more robust interface that enables seamless datastore interchangeability in Galexie.

@sreuland
Copy link
Contributor

The pluggable datastore design, #5526, would be a related effort that is pending, if that comes to reality, then it would redefine what constitutes the interface of a Datastore.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
Status: To Do
Development

No branches or pull requests

3 participants