โœ•

Join us at two must-attend conferences this summer and claim your exclusive SWAG! ๐ŸŽ

IOT TECH EXPO, June 5-6 in Santa Clara! Booth 270 | DATA + AI SUMMIT, June 11-13 in San Francisco! Booth e12

โœ•
Skip to content
On this page

Subscribe to our newsletter

Get the latest dates and news about GreptimeDB.
Engineering
โ€ข
February 04, 2024

Greptime Most Read Articles of 2023

In 2023, we published a total of 70 articles, the majority of which focused on technology sharing. As we begin 2024, we are excited to share with you the highlights of our most read and celebrated articles, offering a recap of Greptime's inaugural year.

As we reflect on the year gone by, we are immensely proud of the strides we've made at Greptime, thanks in large part to our vibrant community.

Our journey through 2023 has been marked by groundbreaking developments, insightful learnings, and the relentless pursuit of excellence. During the year, we have published a total of 70 articles with most of them regarding tech sharing. Here, we share with you the highlights of our most read and celebrated articles, each piece a testament to our commitment to advancing database technology and fostering a deeper understanding of data science and management technologies.

The articles below are ranked by their viewership numbers:

1. Bridging Async and Sync Rust Code - A lesson learned while working with Tokio โ€‹

Calling asynchronous Rust code in a synchronous context may lead to problems, particularly for beginners who are unfamiliar with asynchronous Rust runtime, such as Tokio. In this blog, we discuss a particular problem that we came across and the approach we took to identify and resolve it.

image1

Author: Lei Welcome your comments on: Reddit

"...After examining the underlying cause of the issue, it becomes evident why tokio::main does not hang whereas tokio::test does - they employ different runtimes. Specifically, tokio::main operates on a multi-threaded runtime, while tokio::test operates on a single-threaded runtime..."

2. The Hidden Control Flow โ€” Some Insights on an Async Cancellation Problem in Rust โ€‹

This article discusses a long-standing issue on async cancellation we encountered when building our open source database project, providing an interim solution to this issue together with our thoughts and insights.

image2

Author: Ruihang Xia Comment on: Reddit

"...In tokio, we can actually "detach" a task to the background by dropping the JoinHandle. As a detached task, there's no foreground handle to cancel the task, and disabling others to wrap a timeout or select over it, thus making it un-cancellable..."

3. Unlock Complex Time Series Analysis in SQL with Range Queries โ€‹

In this article, we introduced an enhanced SQL Range query syntax, which effectively marrying SQL's robust flexibility with specialized time-series querying capabilities. You can now experience the convenience of this method on our interactive document platform, GreptimePlay.

image3

Author: Jingdi Wu Welcome your comments on: Reddit

"...Range query is essentially a data aggregation algorithm, but it differs from traditional SQL data aggregation in a key aspect: in Range queries, a single data point may be aggregated into multiple groups. For example, if a user wants to calculate the average weekly temperature for each day, each temperature data point will be used in the calculation for several weekly averages..."

4. Unraveling Rust Memory Leaks: Easy-to-Follow Techniques for Identifying and Solving Memory Issues โ€‹

This article records the whole process of diagnosing and fixing a Rust memory leak issue encountered in GreptimeDB. Leveraging jemalloc's heap profiling and tokio-console, combined with diligent code review, we effectively identified and addressed the issue. Here we offer some key insights and recommendations for reference.

image4

Author: Fucong Luo Welcome your comments on: Reddit

"...Rust offers a convenient "Struct Update Syntax" for constructing a struct using another struct. If a struct implements Default, we can simply employ ..Default::default() in the field's construction. If Default::default() has some "side effects" (like spawning a background tokio task, which caused our memory leak), caution is required: once the struct is constructed, the temporary struct created by Default is discarded, hence appropriate resource recycling is crucial..."

5. PromQL for Beginners โ€‹

PromQL is widely recognized as the most commonly used query language in cloud-native Observability. This article is designed for newcomers to grasp the basics of this powerful query language for accessing Prometheus monitoring data. It provides a brief analysis of the history and features of PromQL, illustrating its advantages over SQL through simple examples.

image5

Author: Xtang

"...PromQL is a domain-specific language tailored for monitoring scenarios of time-series data. In monitoring, a large amount of system metrics are collected in the format of time-series, then aggregated, analyzed, and calculated to find patterns in the system and promptly detect anomalies and locate issues..."

6. Deep Dive into PromQL and How GreptimeDB Implements the Parser โ€‹

Following the above blog introducing the basic concept and illustrates the main differences between PromQL and SQL. In this blog, we are going to dig a bit deeper into the back-end, using a simple example to explain data processing and calculating logic in PromQL and introducing how we implements promql-parser to offer GreptimeDB better Prometheus compatibility.

image6

Author: Yuanbo Han

"...To explore data stored in GreptimeDB through PromQL, GreptimeDB needs to provide the ability to parse the query into AST (abstract syntax tree), and retrieve data from memory or disk via logical and physical plans. Since there is no ready-to-use PromQL Rust Parser, our team decides to develop it ourselves, and weโ€™re glad to announce that promql-parser v0.1.0 is now available. We choose cfgrammar for promql-parser because it's compatible with yacc rules. Thus developers can easily reuse Prometheus's yacc rule file during the implementation..."

7. Announcing GreptimeCloud Public Tech Preview - Managed and Extended Prometheus on Cloud โ€‹

In this blog, we announced the official Tech Preview of GreptimeCloud, which is a new product of serverless, Prometheus-compatible time-series database that seamlessly integrates with GitOps-enabled alerting and dashboarding. We discussed some of our designing principles and features of GreptimeCloud and warmly invite all interested users to explore our product and share their feedback. As we are currently in a phase of rapid iteration, your insights are invaluable in shaping the future of our offering.

image7

Author: Ning Sun

"...By configuring your GreptimeCloud instance as a remote write endpoint, you store all metrics in a scalable cloud database. It is possible to query the data in native PromQL. SQL is also available if you are from a data-analytic background. You can even use the Prometheus data source from Grafana to connect to GreptimeCloud without any modification..."

8. Dashboard for GreptimeDB is Now Open Sourced on GitHub โ€‹

Shortly after our time series database GreptimeDB being open-sourced, the Dashboard is on GitHub too! This article introduces why and how we design this Dashboard to fit time series scenarios and its future iteration plans.

image8

Authors: Daohan Wang & Zona He

"...Our first open-sourced version enables showing table structure and supports basic SQL statements for queries. The query results will be displayed in the form of tables and graphs. We support line graphs, histograms, scatter graphs and point maps for different data types. Meanwhile, the request log will also be displayed, including the request time..."

9. GitOps for Efficient DevOps โ€‹

This article introduces how we leverage GitOps to create an efficient DevOps workflow. We discuss the relationship between IaC and GitOps, elaborate on the key elements and advantages of GitOps, and share the crucial technical decisions made by Greptime during the implementation process.

image9

Author: Yinyong Zheng

"...As we utilize GitHub, it is natural to employ GitHub Actions. We can easily integrate a series of functions by configuring different actions for GitHub Actions. Once our code is merged into the main branch, GitHub Actions takes care of the deployment. The overall Greptime GitOps architecture can be illustrated as follows..."

10. A Comprehensive Dive into the New Time-Series Storage Engine - Mito โ€‹

In this article, we highlight the refactorizations and improvements to the new storage engine of our time series database, Mito. It explores its features, benefits, and the technological advancements it brings to the table.

image10

Author: Yingwen Yang

"The memtable in the previous storage engine was not optimized for time series use cases, but simply wrote data in BTree as rows. This approach requires large memory and the read/write performance isn't ideal. In v0.4 we re-implemented the memtable of the engine, with a focus on improving storage space utilization."


As we step into the new year of 2024, we extend our deepest gratitude to our community. If you're interested in technologies regarding databases or would like to find an interesting project to contribute, star us on GitHub now! Together, we look forward to continuing this journey of innovation, learning, and growth.

Share your Thought with us!

We're eager to hear from you about any tech concerns, insights, or experiences related to data analysis and management. Please feel free to connect with us via email or Slack. Additionally, we invite users of GreptimeDB/GreptimeCloud, regardless of experience level, to share their stories and use cases with us.

Thank you for making 2023 a remarkable year for Greptime.

Join our community

Get the latest updates and discuss with other users.

Subscribe to our newsletter

Get the latest dates and news about GreptimeDB.