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

TDBv0.3: transactions, indexes, durability #516

Open
2 of 13 tasks
krizhanovsky opened this issue May 25, 2016 · 0 comments
Open
2 of 13 tasks

TDBv0.3: transactions, indexes, durability #516

krizhanovsky opened this issue May 25, 2016 · 0 comments
Assignees
Labels
enhancement question Questions and support tasks TDB Tempesta DB module and related issues
Milestone

Comments

@krizhanovsky
Copy link
Contributor

krizhanovsky commented May 25, 2016

Tempesta DB must be reworked:

  • index must be separated from data management and both of them must be accessible from user-space, such that tdbq can directly delete and insert data to support tdbq: full select, insertion and deletion of binary data #279; Issue Web-content management tool #528 (domain and wildcards purging) require index like patricia trees forest.
  • TDB must support plugable indexes, e.g. logs and web-cache requires different indexing;
  • table format must be reworked such that additional indexes can be created on top of current data. Correspondingly queries (lookups) must be able to choose which index to use;
  • data manager must support large contiguous allocations (up to extent size);
  • data and table managers must be rewored to support dynamically growing/shrinking and created/deleted tables, so freed space must be properly reused. However, there could OLTP tables with round-robin and/or eviction strategies which still must be fixed-size. This should be configurable for particular table format This is the tradeoff between non-pageable memory for the new real time persistent database and flexibility (see comments in alloc.c
  • durability: TDB must writeback updates in background threads in transactional manner, presumably using BtrFS mechanisms;
  • disk-aware load distribution for machines with many different storage hardware. IO must be distributed by disck IOPS, space utilization, vhost, It makes sense to provide an interface for plugable IO schedulers
  • records must be introduced for structured data storage;
  • last hit timestamps and hit counter are probably should be stored in HTrie nodes to support TDBv0.2: Cache background revalidation and eviction #515;
  • NUMA code should be moved from Web-cache to TDB, so IP filter code must be made NUMA-aware;
  • trigger callbacks for DML must be implemented (DELETE in sense of Reducing origin server requests #500 for automatic cache entries refreshing). The callbacks can be treated as update events (like MongoDB or MySQL binary log events).
  • TDB must support rollback of failed transaction - if a particular update inside a transaction fails, then all previous updates must be rolled back. Required for consistent configuration updates (Full/per-vhost dynamic (re)configuration: gRPC API #67). It seems the online reconfiguration is the only user for transactions and it's doubtful that we really need real transactions just for online reconfiguration, so TBD.
  • optional cache warmup (also see Huge pages allocation issue and the crash on cache sizes >=2GB #1515)

Also with persistent memory probably there is no need to copy skb data to web cache in tfw_cache_copy_resp(), see Extending Linux network stack for persistent memory.

Linked with #66 (tdbfs). Virtual containers can be supported either on TDB level or tdbfs - TBD.

The task is crucial for Web-server mode, so keep in mind and update issue #471 during the work on the task.

@krizhanovsky krizhanovsky added this to the 0.5.0 Web Server milestone May 25, 2016
@krizhanovsky krizhanovsky self-assigned this May 25, 2016
@krizhanovsky krizhanovsky modified the milestones: 1.0 Web Server, 0.8 TDB v0.2 Jan 9, 2018
@krizhanovsky krizhanovsky changed the title [TDB] v0.2 [TDB] v0.3 Nov 29, 2018
@krizhanovsky krizhanovsky changed the title [TDB] v0.3 TDBv0.3: indexes & durability Nov 29, 2018
@krizhanovsky krizhanovsky changed the title TDBv0.3: indexes & durability TDBv0.3: transactions, indexes, durability Oct 11, 2019
@krizhanovsky krizhanovsky added the TDB Tempesta DB module and related issues label Apr 27, 2020
@krizhanovsky krizhanovsky added the question Questions and support tasks label Aug 24, 2022
@krizhanovsky krizhanovsky modified the milestones: 1.1 - TLS 1.3, backlog Aug 24, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement question Questions and support tasks TDB Tempesta DB module and related issues
Projects
None yet
Development

No branches or pull requests

1 participant