February 2019 Summaries
4 posts from Yugabyte
Filter
Month:
Year:
Post Summaries
Back to Blog
YugabyteDB is an open-source distributed SQL database designed for internet-scale, geo-distributed applications, combining the features of PostgreSQL and NoSQL systems. It provides a familiar programming and architectural model, eliminating complexities. The database is deployed over multiple machines, typically referred to as nodes, which are logical layers - Yugabyte Query Layer and DocDB. Each node has two main processes: YB-TServer ( Tablet Server) and YB-Master (Master Server), responsible for serving queries, automatic sharding, replication, transactions management, and storing system metadata. A cluster is a group of nodes that run together, providing high availability and load balancing. The universe is comprised of one primary cluster and multiple optional read replica clusters. Data in YugabyteDB is split into tablets, which are shards and spread over multiple nodes, automatically sharded with the help of hashing functions. Replication and storage use Raft protocol for strong consistency and DocDB's local storage engine is a customized version of RocksDB. Compared to PostgreSQL and MongoDB, YugabyteDB offers horizontal write scalability, global distribution, and fully relational SQL features like JOINs, referential integrity, and multi-table transactions, making it suitable for large-scale applications requiring high performance and availability.
Feb 28, 2019
1,732 words in the original blog post.
RocksDB is a popular embeddable persistent key-value store that has become the de facto standard for handling workloads with fast-growing data. YugabyteDB leverages RocksDB as its per-node storage engine, DocDB, to provide a distributed document store that efficiently handles documents of both primitive and non-primitive types. By using C++ as the programming language, YugabyteDB achieves an in-depth integration of RocksDB with the rest of the system, allowing for efficient data transfer between components. The use of RocksDB's Log Structured Merge tree (LSM) design enables fast access, persistence, and embedding in a single node, making it suitable for high-performance and low-latency storage. The distributed document store model allows YugabyteDB to have a pluggable API architecture where new APIs can be added on top of the common document data model.
Feb 20, 2019
1,828 words in the original blog post.
RocksDB's block cache has been made scan-resistant by dividing the LRU into two portions and requiring multiple touches before promoting a block to the hot portion of the cache. Additionally, RocksDB's SSTable files have been enhanced to be multi-level/block-oriented structures for bloom filters and indexes, enabling demand-paging into the block cache like data blocks. Each node in DocDB now dedicates one instance of RocksDB per tablet, rather than sharing a single instance across multiple tablets. This design enables efficient cluster rebalancing on node failure or addition, as well as simplifying deletion operations. Furthermore, DocsDB allows for per-table storage policy and compression options, including in-memory delta-encoding schemes. The block cache has also been optimized to avoid premature flushing of memstores with a global limit, while separate queues have been implemented for large and small compactions. Smart load balancing across multiple disks is achieved by distributing RocksDB instances uniformly across available SSDs on a per-table basis. Other optimizations include avoiding double journaling in the write-ahead log, removing unnecessary functionality from RocksDB, and implementing multi-version concurrency control using hybrid timestamps.
Feb 20, 2019
1,499 words in the original blog post.
To monitor YugabyteDB with Prometheus on Docker, start by installing YugabyteDB and running a sample key-value workload. Then, prepare a Prometheus configuration file to scrape metrics from YugabyteDB's /prometheus-metrics endpoint. Start the Prometheus server and open its UI to analyze key metrics such as read/write throughput and latency for the CassandraKeyValue sample app. The configuration file uses labels to group targets by node type, allowing for detailed monitoring of each layer of YugabyteDB.
Feb 12, 2019
601 words in the original blog post.