Databases
At the heart of Taubyte’s database philosophy are the principles of serverless architecture, decentralization, and edge-native scalability. By conforming to these principles, we ensure that databases in Taubyte are robust, scalable, and capable of surviving horizontal scaling and partitioning, essential attributes in the modern data-intensive world.
The serverless nature of our databases means that they require no server management, abstracting away infrastructure complexities and allowing developers to focus purely on their application’s logic. Decentralization ensures that the database is not restricted to a single central server but is accessible across a network of nodes, thereby enhancing reliability and accessibility. Edge-native databases in Taubyte can seamlessly scale across numerous nodes and regions, crucial for building globally distributed applications.
Key-Value Databases
Currently, Taubyte supports Key-Value databases. A Key-Value database stores data as a collection of key-value pairs in which a key serves as a unique identifier. Both keys and values can be anything, ranging from simple objects to complex compound objects. This type of database is perfect for use cases where many small, independent items need to be stored and accessed quickly, like user profiles, session information, and user settings.
Consensus Mechanism: CRDT and Beyond
The current consensus mechanism used in Taubyte’s database system is Conflict-free Replicated Data Types (CRDTs). CRDTs are data types that can be replicated across multiple computers in a network, where the replicas can be updated independently and concurrently without coordination. This allows Taubyte databases to handle concurrent updates gracefully, ensuring data consistency across nodes.
Although CRDT is currently the consensus mechanism of choice, Taubyte plans to integrate other mechanisms like the Practical Byzantine Fault Tolerance (PBFT) in the future, offering more robustness in handling failures and malicious attempts.
Regex Matching for Use Case Specific Databases
An interesting feature of Taubyte’s database system is the ability to turn a database resource into a template by enabling regex matching. This feature allows databases to be provisioned specifically for a use case. For instance, you could provision a unique database for each web3 wallet or IoT device, thereby providing a level of customization and scalability that can significantly enhance the performance and effectiveness of your applications.
In conclusion, Taubyte’s approach to databases offers developers a robust, scalable, and highly customizable environment to manage their application’s data needs. As we continue to expand our database offerings and improve our consensus mechanisms, we aim to provide an even more reliable and efficient data management solution.
Here’s a sample of what a database’s configuration file might look like:
id: QmNWStZQzpCMxHuyc2jzQbXyvMY5BEDZKV8j4k3bSJ3w5V
tags: []
path: /ids/
match: urls
useRegex: false
access:
network: all
replicas:
min: 2
max: 5
storage:
size: 1TB
Here’s some explanation of the yaml
id
: The unique identifier for the database.match
: This defines what triggers match the database resource.useRegex
: This flag indicates whether regex (regular expression) matching is used for the database path. If true, the database resource behaves like a template, allowing for provisioning databases specifically for certain use cases.replicas
: This section defines the replication policy for the database.min
: The minimum number of replicas of the database that should exist.max
: The maximum number of replicas of the database that can exist.
storage
: This section defines the storage specification of the database.size
: The maximum size of the database.
This configuration file offers flexibility to tailor the database characteristics according to the specific needs of your applications.