This is an automated email from the ASF dual-hosted git repository. kassiez pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/doris-website.git
The following commit(s) were added to refs/heads/master by this push: new 0734b8660e6 [blog] Update doris compute-storage-decoupled blog (#2221) 0734b8660e6 is described below commit 0734b8660e697333917d211a5c989f907133cd93 Author: KassieZ <139741991+kass...@users.noreply.github.com> AuthorDate: Sat Mar 22 11:48:19 2025 +0800 [blog] Update doris compute-storage-decoupled blog (#2221) ## Versions - [ ] dev - [ ] 3.0 - [ ] 2.1 - [ ] 2.0 ## Languages - [ ] Chinese - [ ] English ## Docs Checklist - [ ] Checked by AI - [ ] Test Cases Built --- blog/doris-compute-storage-decoupled.md | 195 +++++++++++++++++++++ ...-scaling-bitcoin-data-to-billions-of-records.md | 2 - blog/release-note-3.0.4.md | 2 +- docusaurus.config.js | 2 +- sidebars.json | 1 + src/constant/newsletter.data.ts | 14 +- src/pages/index.tsx | 2 +- static/images/batch-data-ingestion.jpg | Bin 0 -> 356837 bytes static/images/compute-storage-decoupled-banner.jpg | Bin 0 -> 105054 bytes static/images/compute-storage-decoupled-mode.jpg | Bin 0 -> 348378 bytes static/images/compute-storage-decoupled.jpg | Bin 0 -> 630044 bytes static/images/events/event-2.jpeg | Bin 128508 -> 135764 bytes static/images/high-concurrency-ingestion.jpg | Bin 0 -> 401560 bytes static/images/historical-data-cost.jpg | Bin 0 -> 411160 bytes .../operational-cost-for-online-workloads.jpg | Bin 0 -> 300392 bytes static/images/query-performance.jpg | Bin 0 -> 406930 bytes versioned_sidebars/version-2.1-sidebars.json | 1 + versioned_sidebars/version-3.0-sidebars.json | 1 + 18 files changed, 208 insertions(+), 12 deletions(-) diff --git a/blog/doris-compute-storage-decoupled.md b/blog/doris-compute-storage-decoupled.md new file mode 100644 index 00000000000..acdf2157d54 --- /dev/null +++ b/blog/doris-compute-storage-decoupled.md @@ -0,0 +1,195 @@ +--- +{ + 'title': 'Slash your cost by 90% with Apache Doris Compute-Storage Decoupled Mode', + 'summary': 'Apache Doris compute-storage decoupled mode achieves 90% cost reduction and provides elasticity and workload isolation, while maintaining high performance in data ingestion and queries.', + 'description': 'Apache Doris compute-storage decoupled mode achieves 90% cost reduction and provides elasticity and workload isolation, while maintaining high performance in data ingestion and queries.', + 'date': '2025-03-21', + 'author': 'Apache Doris', + 'tags': ['Tech Sharing'], + 'picked': "true", + 'order': "1", + "image": '/images/compute-storage-decoupled-banner.jpg' +} +--- + +<!-- +Licensed to the Apache Software Foundation (ASF) under one +or more contributor license agreements. See the NOTICE file +distributed with this work for additional information +regarding copyright ownership. The ASF licenses this file +to you under the Apache License, Version 2.0 (the +"License"); you may not use this file except in compliance +with the License. You may obtain a copy of the License at + http://www.apache.org/licenses/LICENSE-2.0 +Unless required by applicable law or agreed to in writing, +software distributed under the License is distributed on an +"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +KIND, either express or implied. See the License for the +specific language governing permissions and limitations +under the License. +--> + +In the age of data-driven decision-making, the exponential growth of data volume and the ever-evolving demands for analytics pose great challenges. Data streams in from diverse sources (such as application logs, network interactions, and mobile devices), spanning structured, semi-structured, and unstructured formats. This diversity places pressure on storage and analytical systems. Meanwhile, the surge in demand for real-time analytics and exploratory queries requires systems to deliver [...] + +Apache Doris emerged in the era of integrated storage and computation, built on a classic **Shared Nothing** architecture. In this design, storage and computation are co-located on **Backend (BE) nodes**, leveraging an **MPP (Massively Parallel Processing)** distributed computing model. This architecture delivers key advantages, including high availability, simplified deployment, seamless horizontal scalability, and exceptional real-time analytical performance. + +For real-time analytics and small-scale data processing, Apache Doris stands out with **predictable, stable low-latency performance**, making it an indispensable solution. However, when scaling to large-scale data processing, it encounters certain challenges, primarily in: + +- **Relatively high costs & low elasticity:** Balancing storage and compute resources remains a big challenge. Storage capacity must be sufficient to accommodate all data, while compute resources need to handle query workloads efficiently. However, dynamically scaling clusters is often time-consuming, prompting enterprises to over-provision resources to ensure stability. This approach simplifies operations but leads to resource waste and increased costs. +- **Limited workload isolation:** Since Apache Doris 2.0, Workload Groups provide soft isolation, while Resource Groups offer a degree of hard isolation. However, neither mechanism ensures complete physical isolation, which can impact performance in multi-tenant or resource-intensive environments. +- **Operational complexity:** Managing an OLAP system with built-in distributed storage requires not only overseeing compute nodes but also ensuring efficient storage administration. Storage management is inherently complex, and misconfigurations or improper operations can lead to data loss, making maintenance highly demanding. + +> Even so, in the absence of stable and large-scale storage support, a integrated storage-compute architecture remains the optimal choice. + +As cloud infrastructure matures, enterprises increasingly seek **deeper Apache Doris integration with public clouds, private clouds, and Kubernetes (K8s) container platforms** to unlock greater elasticity and flexibility. Public clouds offer mature object storage with on-demand compute resources, eliminating the need for pre-allocated space, while private clouds leverage technologies like K8s and MinIO to build scalable resource platforms. **This evolution in cloud infrastructure has als [...] + +## Apache Doris Compute-Storage Decoupled Mode + + + +Since [version 3.0](https://doris.apache.org/blog/release-note-3.0.0), Apache Doris has supported both the compute-storage decoupled mode and the compute-storage coupled mode. + + + +### 01 Compute-Storage Decoupled + +In the compute-storage decoupled mode, Apache Doris adopts a three-tier architecture consisting of three layers: shared storage, compute groups, and meta data service: + + + +**Shared Storage Layer** + +Data is persisted in the shared storage layer, allowing compute nodes to access and share data seamlessly. This design enhances compute node flexibility and reduces operational overhead. Leveraging mature and reliable shared storage results in ultra-low storage costs and high data reliability. Whether using public cloud object storage or enterprise-managed shared storage, this approach greatly reduces the maintenance complexity of Apache Doris. + +**Compute Groups** + +The compute layer consists of multiple compute groups responsible for executing query plans. Each query is executed within a single compute group, ensuring isolation and scalability. Compute nodes are stateless, utilizing local disks as high-speed caches to accelerate queries while sharing the same data and metadata services. Each compute group operates independently, supporting on-demand scaling, and local caches remain isolated to ensure workload separation and performance consistency. + +**Meta Data Service** + +The meta data layer manages system meta data, including databases, tables, schemas, rowset meta data, and transaction information, with support for horizontal scaling. Future iterations of Apache Doris’ compute-storage decoupled mode will introduce stateless Frontend (FE) nodes, where memory consumption is decoupled from cluster size. This evolution will eliminate memory bottlenecks, allowing FE nodes to operate with minimal memory requirements. + +### 02 Architecture Design + +Traditional compute-storage decoupling approaches typically store both data and meta data in shared storage while centralizing transaction management on a single FE node. However, this design introduces several challenges: + +- **Write performance bottlenecks**: The two-phase commit protocol, driven by FE Master, incurs high latency and low throughput. +- **Small file proliferation**: Frequent meta data writes generate excessive small files, leading to system instability and inflated storage costs. +- **Scalability constraints**: Since FE nodes manage meta data in memory, an increasing number of Tablets amplifies memory pressure, eventually causing write bottlenecks. +- **Data deletion risks**: Relying on delta computation with timeout-based mechanisms for deletion introduces challenges in synchronizing writes and deletions. As a result, there is a risk of unintended data loss due to misalignment between ongoing writes and scheduled deletions. + +Compared to traditional approaches, **Apache Doris** effectively addresses these challenges through **a shared meta data service**: + +- **Real-time ingestion**: The meta data service provides a globally consistent view, enabling low-latency, high-throughput writes. Benchmarks show that the Apache Doris compute-storage decoupled mode achieves **100X higher** performance than other solutions at 50 concurrent writes and **11X higher** performance at 500 concurrent writes. +- **Optimized small file management**: Data is written to shared storage, while meta data is handled by the meta data service. This effectively reduces small file overheads. Tests indicate that the Apache Doris compute-storage decoupled mode generates only **1/2 the number of write files** compared to other industry solutions. +- **Enhanced scalability**: In future versions of Apache Doris, FE metadata will be moved to the meta data service to eliminate cluster scaling limitations and ensure seamless expansion. +- **Reliable data deletion**: Doris employs a forward deletion mechanism based on a globally consistent view. This ensures mutual exclusion between writes and deletions, thus eliminating the risk of accidental data loss. + +### 03 What makes it stand out + +The Apache Doris compute-storage decoupled architecture provide values for users in three aspects: cost efficiency, elasticity, and workload isolation. + +**Firstly, it brings a 90% cost reduction compared to the compute-storage coupled mode.** + +- **Pay-as-you-go**: Unlike traditional coupled architectures, there’s no need to pre-provision compute and storage resources. Storage costs scale with actual usage, while compute resources can be dynamically adjusted based on demand. +- **Single-replica storage**: Instead of maintaining three replicas in costly block storage, data is stored as a single replica in low-cost object storage, with hot data cached in block storage for performance. This dramatically reduces storage footprint and hardware costs. For example, S3 costs only 25% to 50% of AWS EBS. +- **Lower resource consumption**: In compute-storage decoupled mode, compaction operations only process a single data replica, thus largely reducing resource usage compared to multi-replica environments. + +**Secondly, with a stateless compute node design, Doris enables on-demand resource scaling to meet fluctuating workloads efficiently.** + +- **Elastic auto-scaling**: Compute resources can be dynamically scaled to accommodate traffic spikes or workload variations. When demand increases, Doris can rapidly scale out compute nodes; when demand drops, resources scale down automatically, avoiding unnecessary costs. +- **Fine-grained compute resource allocation**: Doris allows compute nodes to be strategically assigned to specific compute groups based on workload requirements. For example, high-performance nodes handle complex queries and high-concurrency workloads, while standard nodes manage lightweight queries and infrequent requests. + +**Thirdly, Doris provides efficient resource scheduling and workload isolation mechanisms.** + +- **Cross-business isolation**: Different business units can be assigned dedicated compute groups with physical isolation, so workloads operate on dedicated resources without interference. +- **Offline workload isolation**: Large-scale batch processing tasks can be segregated into dedicated compute groups, so users can leverage low-cost resources for offline data processing without impacting real-time business performance. +- **Read-write isolation**: Doris allows dedicated compute groups for read and write operations to ensure consistent query response times even under high write loads. + +## Benchmarking and comparison + +To provide a clear evaluation of the compute-storage decoupled architecture of Apache Doris, we conducted a series of benchmark tests across multiple dimensions, including data ingestion, query performance, and resource cost efficiency. + +### 01 Ingestion performance + +**High-concurrency ingestion** + +We compared Apache Doris' coupled and decoupled modes with other mainstream solutions under the same compute resources. The tests measured real-time ingestion performance under two levels of concurrency: + +- **50 concurrent writes**: Ingesting **250 files**, each containing **20,000 rows**. +- **500 concurrent writes**: Ingesting **10,000 files**, each containing **500 rows**. + +**Test results:** + +- At 50 concurrent writes, Doris' compute-storage decoupled mode performed on par with the coupled mode while achieving **100X the write performance** of other industry compute-storage decoupled solutions. +- At 500 concurrent writes, Doris' decoupled mode experienced a slight performance drop compared to the coupled mode, yet still maintained an **11X advantage** over other compute-storage decoupled architectures. + + + +**Batch data ingestion** + +To evaluate batch data ingestion efficiency, we conducted tests using **TPC-H 1TB** and **TPC-DS 1TB** datasets, comparing the compute-storage coupled and decoupled modes of Apache Doris. Data was loaded using S3 Load. Under default configurations, multiple tables were ingested sequentially, and the total ingestion time was measured for comparison. + +Hardware configuration: + +- Cluster size: 4 compute instances (1 FE, 3 BE) +- CPU: 48 cores per instance +- Memory: 192GB per instance +- Network Bandwidth: 21 Gbps +- Storage: Enhanced SSD + + + +As is shown, even when using a single replica in both architectures, the compute-storage decoupled mode outperforms the coupled mode in batch data ingestion by **20.05%** and **27.98%** in the two benchmarks, respectively. *(In real-world deployments, the coupled mode typically adopts a three-replica strategy. This further amplifies the write performance gains of the decoupled mode.)* + +### 02 Query Performance + +In the compute-storage decoupled mode, Apache Doris leverages a multi-tier caching mechanism to accelerate queries. It improves overall query efficiency by speeding up data access and minimizing reliance on shared storage. The cache hierarchy includes: + +- **Doris Page Cache**: In-memory caching of decompressed data. +- **Linux Page Cache**: In-memory caching of compressed data. +- **Local Disk Cache**: Persistent caching of compressed data. + +Hardware configuration: + +- Cluster size: 4 compute instances (1 FE, 3 BE) +- CPU: 48 cores per instance +- Memory: 192GB per instance +- Network Bandwidth: 21 Gbps +- Storage: Enhanced SSD + +We conducted performance benchmarking under different caching scenarios in both compute-storage coupled and decoupled modes. Using the TPC-DS 1TB dataset, the test results are as follows: + + + +- **Full cache hit**: We execute the query twice and measure the runtime of the second execution, ensuring that all data is preloaded into the cache. Query performance in compute-storage decoupled mode matches that of the coupled architecture with no performance degradation. +- **Partial cache hit** (This scenario best reflects real-world usage.): Before the test begins, all caches are cleared, and we measure the runtime of the first execution while data is gradually loaded into the cache. Compared to the coupled architecture, query performance remains nearly identical, with an overall performance overhead of about 10%. +- **No cache hit**: All caches are cleared before each SQL execution, ensuring that every query runs without cached data. Compared to the coupled architecture, query performance sees an approximate 35% degradation. + +### 03 Resource Cost + +**Operational cost for online workloads** + +Taking a real-world enterprise workload as an example, we compare the cost differences between compute-storage coupled and decoupled modes in Apache Doris. + +- **Compute-storage coupled mode**: The dataset in Doris has a size of 100TB per replica, resulting in a total of 300TB with three replicas. To prevent frequent scaling operations from impacting business stability, disk usage is maintained at about 50%. Thus, **the monthly resource cost amounts to $36,962.7** (as detailed below). + + + +- **Compute-storage decoupled mode**: With the same data scale, adopting the compute-storage decoupled model only requires storing a single replica in object storage, while hot data is cached on local disks. As shown below, the monthly resource cost is reduced to **$22,212.65**, achieving a 40% cost savings. + + + +**Historical data cost** + +For example, with 200TB of historical data, the resource utilization under both the compute-storage coupled and decoupled modes is shown below. The coupled model incurs a monthly cost of $48,851.10, whereas the decoupled model reduces the cost to just $4,502.40—**cutting expenses by over 90%**. + + + +## What's next + +Powered by compute-storage decoupling, Apache Doris excels in real-time analytics, lakehouse analytics, observability and log storage & analysis. Looking ahead, Apache Doris will continue to enhance its capabilities in this mode. We will introduce new features such as snapshots, time travel, and Cross-Cluster Replication (CCR) support, and achieve stateless FE to further improve system stability and usability. + +If you're interested in Apache Doris' compute-storage decoupled mode and its future development, we invite you to join the [#compute-storage-decoupled](https://apachedoriscommunity.slack.com/archives/C08HZUZ37KJ) channel in the Apache Doris Slack community, where you can connect with core developers and users. We look forward to your thoughts and contributions! + +[Join us live on March 27](https://www.linkedin.com/events/exploringapachedoriscompute-sto7308127084457902080/comments/) for more insights into the Apache Doris compute-storage decoupled mode! \ No newline at end of file diff --git a/blog/ortege-studio-1-scaling-bitcoin-data-to-billions-of-records.md b/blog/ortege-studio-1-scaling-bitcoin-data-to-billions-of-records.md index edca940379b..cdc88ac0882 100644 --- a/blog/ortege-studio-1-scaling-bitcoin-data-to-billions-of-records.md +++ b/blog/ortege-studio-1-scaling-bitcoin-data-to-billions-of-records.md @@ -6,8 +6,6 @@ 'date': '2024-11-20', 'author': 'Justin Trollip', 'tags': ['Best Practice'], - 'picked': "true", - 'order': "2", "image": '/images/ortege-1.jpg' } diff --git a/blog/release-note-3.0.4.md b/blog/release-note-3.0.4.md index 2530790d0dd..89b9dc58954 100644 --- a/blog/release-note-3.0.4.md +++ b/blog/release-note-3.0.4.md @@ -7,7 +7,7 @@ 'author': 'Apache Doris', 'tags': ['Release Notes'], 'picked': "true", - 'order': "1", + 'order': "2", "image": '/images/3.0.4.jpg' } --- diff --git a/docusaurus.config.js b/docusaurus.config.js index 0a825609dff..01feb3a1b0e 100644 --- a/docusaurus.config.js +++ b/docusaurus.config.js @@ -207,7 +207,7 @@ const config = { content: `<a href="https://www.velodb.io/events/apache-doris-compute-storage-decoupled-mode-and-velo-db-cloud-demo" target="_blank" style="display:flex; width: 100%; align-items: center; justify-content: center; margin-left: 4px; text-decoration: none;"> <img style="width: 19px; height: 19px; margin-right: 3px;" src="/images/nav-star.svg"> <span style="color:#52CAA3;font-size:0.875rem;font-weight:700;line-height:1rem; margin-right:0.675rem; text-decoration: none;">NEW</span> - <span>Join us for a live webinar to explore Apache Doris' compute-storage decoupled mode and get a hands-on demo</span> + <span>Join us for a live webinar to explore Apache Doris' compute-storage decoupled mode</span> <p style="margin-left:0.675rem;color:#52CAA3;font-size:0.875rem;line-height:1rem;font-weight:700;letter-spacing:0.28px;">Register Now -></p> </a>`, textColor: '#4C576C', diff --git a/sidebars.json b/sidebars.json index df21771868b..d51e3a8a06c 100644 --- a/sidebars.json +++ b/sidebars.json @@ -995,6 +995,7 @@ "sql-manual/sql-functions/scalar-functions/string-functions/split-part", "sql-manual/sql-functions/scalar-functions/string-functions/split-by-string", "sql-manual/sql-functions/scalar-functions/string-functions/split-by-regexp", + "sql-manual/sql-functions/scalar-functions/string-functions/strcmp", "sql-manual/sql-functions/scalar-functions/string-functions/substring-index", "sql-manual/sql-functions/scalar-functions/string-functions/ngram-search", "sql-manual/sql-functions/scalar-functions/string-functions/parse-url", diff --git a/src/constant/newsletter.data.ts b/src/constant/newsletter.data.ts index 134e4278b71..5ad7e2dd7d4 100644 --- a/src/constant/newsletter.data.ts +++ b/src/constant/newsletter.data.ts @@ -1,4 +1,11 @@ export const NEWSLETTER_DATA = [ + { + tags: ['Tech Sharing'], + title: "Slash your cost by 90% with Apache Doris Compute-Storage Decoupled Mode", + content: `Apache Doris compute-storage decoupled mode achieves 90% cost reduction and provides elasticity and workload isolation, while maintaining high performance in data ingestion and queries.`, + to: '/blog/doris-compute-storage-decoupled', + image: 'compute-storage-decoupled-banner.jpg', + }, { tags: ['Release Note'], title: "Apache Doris 3.0.4 Released", @@ -19,13 +26,6 @@ export const NEWSLETTER_DATA = [ to: '/blog/ortege-studio-2-fine-tuning-apache-doris-for-maximum-performance-and-resilience', image: 'ortege-2.jpg', }, - { - tags: ['Best Practice'], - title: "Scaling Bitcoin data to billions of records with Apache Doris: our journey to auto-partitioning", - content: `To power lightning-fast queries and ensure the Deep Dive dashboards deliver real-time insights, Ortege relies on Apache Doris. A crucial feature they embrace is Auto Partition.`, - to: '/blog/ortege-studio-1-scaling-bitcoin-data-to-billions-of-records', - image: 'ortege-1.jpg', - }, ]; diff --git a/src/pages/index.tsx b/src/pages/index.tsx index 16ef0bd6656..6399c36ae0f 100644 --- a/src/pages/index.tsx +++ b/src/pages/index.tsx @@ -87,7 +87,7 @@ export default function Home(): JSX.Element { </span> </div> <p className="lg:ml-[0.75rem] group-hover:text-[#444FD9] text-[1rem]/[1rem] text-[#000]"> - Join our live webinar to discover Doris' compute-storage decoupled mode with a demo ! + Join our live webinar to discover Doris' compute-storage decoupled mode ! </p> </Link> ), diff --git a/static/images/batch-data-ingestion.jpg b/static/images/batch-data-ingestion.jpg new file mode 100644 index 00000000000..b5aae6005b1 Binary files /dev/null and b/static/images/batch-data-ingestion.jpg differ diff --git a/static/images/compute-storage-decoupled-banner.jpg b/static/images/compute-storage-decoupled-banner.jpg new file mode 100644 index 00000000000..e5511f6dd04 Binary files /dev/null and b/static/images/compute-storage-decoupled-banner.jpg differ diff --git a/static/images/compute-storage-decoupled-mode.jpg b/static/images/compute-storage-decoupled-mode.jpg new file mode 100644 index 00000000000..889e013b567 Binary files /dev/null and b/static/images/compute-storage-decoupled-mode.jpg differ diff --git a/static/images/compute-storage-decoupled.jpg b/static/images/compute-storage-decoupled.jpg new file mode 100644 index 00000000000..5faf6c42514 Binary files /dev/null and b/static/images/compute-storage-decoupled.jpg differ diff --git a/static/images/events/event-2.jpeg b/static/images/events/event-2.jpeg index 14af6eabb38..61ac94d8edf 100644 Binary files a/static/images/events/event-2.jpeg and b/static/images/events/event-2.jpeg differ diff --git a/static/images/high-concurrency-ingestion.jpg b/static/images/high-concurrency-ingestion.jpg new file mode 100644 index 00000000000..2532b2f3d3b Binary files /dev/null and b/static/images/high-concurrency-ingestion.jpg differ diff --git a/static/images/historical-data-cost.jpg b/static/images/historical-data-cost.jpg new file mode 100644 index 00000000000..0ea241d2a3b Binary files /dev/null and b/static/images/historical-data-cost.jpg differ diff --git a/static/images/operational-cost-for-online-workloads.jpg b/static/images/operational-cost-for-online-workloads.jpg new file mode 100644 index 00000000000..723758daa04 Binary files /dev/null and b/static/images/operational-cost-for-online-workloads.jpg differ diff --git a/static/images/query-performance.jpg b/static/images/query-performance.jpg new file mode 100644 index 00000000000..be5a2b7d7c0 Binary files /dev/null and b/static/images/query-performance.jpg differ diff --git a/versioned_sidebars/version-2.1-sidebars.json b/versioned_sidebars/version-2.1-sidebars.json index 37bba4d3e69..c105480dc65 100644 --- a/versioned_sidebars/version-2.1-sidebars.json +++ b/versioned_sidebars/version-2.1-sidebars.json @@ -1004,6 +1004,7 @@ "sql-manual/sql-functions/scalar-functions/string-functions/split-part", "sql-manual/sql-functions/scalar-functions/string-functions/split-by-string", "sql-manual/sql-functions/scalar-functions/string-functions/substring-index", + "sql-manual/sql-functions/scalar-functions/string-functions/strcmp", "sql-manual/sql-functions/scalar-functions/string-functions/ngram-search", "sql-manual/sql-functions/scalar-functions/string-functions/parse-url", "sql-manual/sql-functions/scalar-functions/string-functions/protocol", diff --git a/versioned_sidebars/version-3.0-sidebars.json b/versioned_sidebars/version-3.0-sidebars.json index f7df049d2d3..c60236a1c6b 100644 --- a/versioned_sidebars/version-3.0-sidebars.json +++ b/versioned_sidebars/version-3.0-sidebars.json @@ -1052,6 +1052,7 @@ "sql-manual/sql-functions/scalar-functions/string-functions/split-part", "sql-manual/sql-functions/scalar-functions/string-functions/split-by-string", "sql-manual/sql-functions/scalar-functions/string-functions/substring-index", + "sql-manual/sql-functions/scalar-functions/string-functions/strcmp", "sql-manual/sql-functions/scalar-functions/string-functions/ngram-search", "sql-manual/sql-functions/scalar-functions/string-functions/parse-url", "sql-manual/sql-functions/scalar-functions/string-functions/protocol", --------------------------------------------------------------------- To unsubscribe, e-mail: commits-unsubscr...@doris.apache.org For additional commands, e-mail: commits-h...@doris.apache.org