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

New Feature: Support Light-weight Read-only Transaction Design #125

Open
cjcchen opened this issue Dec 4, 2023 · 0 comments
Open

New Feature: Support Light-weight Read-only Transaction Design #125

cjcchen opened this issue Dec 4, 2023 · 0 comments
Assignees
Labels
enhancement New feature or request good first issue Good for newcomers help wanted Extra attention is needed

Comments

@cjcchen
Copy link
Contributor

cjcchen commented Dec 4, 2023

In the current version of ResilientDB, "get" transactions (i.e., read-only transactions) retrieve the values of some keys. To guarantee data consistency, these transactions are forced through the consensus layer to obtain the correct results. Due to the nature of consensus design, each transaction will be written to the chain and written to the disk to support durability and recovery.

To improve read-only transactions, we can explore alternative designs without the need to participate in consensus yet retrieve consistent results.

Here are a set of important considerations:

  1. How to identify read-only transactions?
  2. Should a fee be paid to process read-only transactions, if so, then read-only transactions will require payment, which must pass through consensus.
  3. How to ensure data consistency without engaging in consensus. Without consensus, each replica will return different data. How to verify the data is consistent? Could we introduce read-only caching services (e.g., Coordination-Free Byzantine Replication with Minimal Communication Costs, ICDT'20)? Can we relax the need to provide the latest data, instead maybe we can support snapshot reads, where each query from the same client returns the same version of the data, i.e., repeatable.
@cjcchen cjcchen self-assigned this Dec 4, 2023
@resilientdb resilientdb added enhancement New feature or request help wanted Extra attention is needed good first issue Good for newcomers labels Dec 5, 2023
@resilientdb resilientdb changed the title OPT: Release "get" type of transactions OPT: Release read-only transactions Dec 5, 2023
@resilientdb resilientdb changed the title OPT: Release read-only transactions New Feature: Release read-only transactions Dec 5, 2023
@resilientdb resilientdb changed the title New Feature: Release read-only transactions New Feature: Support Light-weight Read-only Transaction Design Dec 5, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request good first issue Good for newcomers help wanted Extra attention is needed
Projects
None yet
Development

No branches or pull requests

2 participants