亿级数据,一条 SQL 的事
星核 Youngs DB 是云策数据自主研发的企业级数据库引擎,同时承载 OLTP 交易与 OLAP 分析两类负载:交易侧亿级单表毫秒响应、断电不丢一笔账; 分析侧完整分析型 SQL 直接跑在业务数据上——少买一套数仓、少养一条同步链路、少等一晚 T+1。 存量 SQL 近零改写迁入,单 jar 部署免专职 DBA,自主内核适配信创环境。
数据库选型的账,从来不只是一份性能报告——还有要买几套系统、养几组人、担几种风险
每一项都对应选型清单上的一个问题:性能够不够、数据丢不丢、迁移贵不贵、要不要专人养
MySQL、PostgreSQL、Oracle、SQL Server 的函数与语法糖在引擎内核层统一,只有真正语义冲突处才按方言分流——迁移从"改写工程"降级为"回归验证"。
点查和范围扫由两套结构分工:哈希索引负责主键/唯一点查,均摊 O(1);自研 LSM 有序索引负责范围与排序,按序流式扫描、LIMIT 早停,不必物化全部候选。
同一个引擎里,交易表走行存、分析表可选列存布局,一条建表语句的事。对选型者意味着三笔省掉的账:不用为分析再买一套数仓、不用搭 ETL 同步链路并派人值守、分析结果基于实时数据而非 T+1 副本。
一份服务同时开放多种接入方式:追求性能用原生 SDK,接 BI 工具用标准 JDBC,复用现有 MySQL 生态用兼容协议免驱动直连。
不只是替换,更是把多个组件才能拼出的能力收进一个引擎
| 能力项 | 星核 Youngs DB | MySQL | PostgreSQL | TiDB | MongoDB |
|---|---|---|---|---|---|
| 四大 SQL 方言零改写 | ✓ | ◐ | ◐ | ◐ | ✗ |
| 原生 + MySQL 协议双通道接入 | ✓ | ◐ | ◐ | ◐ | ✗ |
| 行列混合存储 | ✓ | ✗ | ✗ | ◐ | ✗ |
| 内置历史表 · 变更自动留痕 | ✓ | ✗ | ✗ | ✗ | ✗ |
| 任意时间点恢复(PITR) | ✓ | ◐ | ✓ | ✓ | ◐ |
| UDF 插件热加载 | ✓ | ◐ | ◐ | ◐ | ✗ |
| 自带监控面板与告警 | ✓ | ✗ | ✗ | ✓ | ◐ |
| 单 jar 轻量部署 · 零外部组件 | ✓ | ◐ | ◐ | ✗ | ◐ |
| 嵌入式运行模式 | ✓ | ✗ | ✗ | ✗ | ✗ |
交易写入、分析扫描、条件查询三类负载,与 MongoDB 8.0 同机同数据实测;测试口径与已知偏差全部公开——选型要的是可复核的数字,不是宣传页的数字
155 列宽表 · 100 万行/档 · 1000 行/批 · 原生写法 · rows/s 越高越好
单线程即达对手 8 线程的吞吐(8.4 万 vs 8.6 万);三档共 300 轮写入无一次 1 秒以上停顿
100 万行 × 161 列 · rowrec 懒解码 · 耗时越短越好
Youngs DB 从 5 列到全字段耗时几乎不变(1.53 → 1.80 s),MongoDB 增至 12.6 秒
条件命中 12.5%(125,036 行)· rowrec · 耗时越短越好
耗时对投影列数几乎不敏感(546~693 ms);条件 COUNT 同样领先 2.8×(495 ms vs 1,369 ms)
测试口径:AMD EPYC 32C / 61G · DB 与压测端单机同置 · MongoDB v8.0.26 · 100 万行宽表(155 / 161 列)· 1000 行/批。 写入三档背靠背对照、两侧错误数均为 0 且已在服务端核实落盘。
每一笔写入先进写入日志再落数据,组提交技术兼顾吞吐与安全; 默认 10ms 刷盘窗口,重启自动回放恢复,进程崩溃数据零丢失。
数据逐行携带校验码,磁盘静默损坏自动发现、绝不静默错答; 支持行级隔离坏数据,一行受损不影响整表可用。
内建任意时间点恢复(PITR):在线快照不停写,按需回到误操作前的任意时刻, 支持全库或单表粒度还原;配合历史表,每行数据的来龙去脉都有账可查。
内置监控面板 + Prometheus 指标出口 + 容器健康探针,不必再外接一套监控系统
内置监控面板示意 · 实时指标 / 慢 SQL / 表拓扑 / 告警 / 健康探针,同时以 Prometheus 文本格式对外暴露,可直接接入 Grafana
互联网大厂的用户行为分析,是业内公认最「吃」数据库的负载之一:十亿级用户数据、 明细只增不减、单日数亿行涌入,漏斗、路径类分析还要在全量明细上直接聚合。 美团在此类场景中引入 Youngs DB:每日 7 张数仓宽表定时同步入库, 事件、漏斗、路径三类分析模型例行运行,支撑 PV / UV 实验观测、行为归因与全链路数据看板, 分析结果直接驱动业务决策。
fact_inp_user_action_xxxfact_flow_pvmv_wide_xxxtrip_order_topic_xxxfact_inp_user_xxx_key_eventfact_inp_user_xxx_key_event_pvuser_experiment_relation_xxxapp_xxx企业客户服务经验,沉淀为可复用的产品能力与交付方法
客户核心数据查询耗时的典型改善,数据追溯效率提升约 3–5 倍
单进程单 jar,不引入任何外部依赖组件;基于 JVM 运行,x86 / ARM 芯片架构无要求,十分钟完成部署
多种接入方式,老系统新系统都有顺手的那一种
不放跑分图,直接上真数据——每一条都在演示库上实测跑通,现场可亲手执行
-- 主键点查:一击即中 SELECT order_no, user_id, status, pay_amount, created_at FROM orders WHERE order_id = 81250319; -- 唯一索引:手机号定位用户 SELECT id, username, city, level FROM users WHERE phone = '13000812503'; -- 为什么快?执行计划直接告诉你 EXPLAIN SELECT * FROM orders WHERE user_id = 812503;
-- 一笔订单的完整画像:三表关联 SELECT o.order_no, s.name AS 店铺, i.product_name, i.quantity, i.amount FROM orders o JOIN order_items i ON i.user_id = o.user_id AND i.order_no = o.order_no JOIN shops s ON s.id = o.shop_id WHERE o.user_id = 812503 AND o.order_no = 'ORD81250319'; -- 头表金额 = 明细求和,现场对账 SELECT o.order_no, o.total_amount, SUM(i.amount) AS 明细合计 FROM orders o JOIN order_items i ON i.user_id = o.user_id AND i.order_no = o.order_no WHERE o.user_id = 812503 GROUP BY o.order_no, o.total_amount;
-- 大促识别:6·18 当天订单量为平日 9 倍 SELECT DATE_FORMAT(created_at, '%Y-%m-%d') AS 日期, COUNT(*) AS 订单量 FROM orders WHERE created_at >= TIMESTAMP '2026-06-14 00:00:00' AND created_at < TIMESTAMP '2026-06-22 00:00:00' GROUP BY DATE_FORMAT(created_at, '%Y-%m-%d') ORDER BY 日期; -- 窗口函数:每个类目价格最高的 3 款商品 SELECT category, name, price FROM ( SELECT category, name, price, ROW_NUMBER() OVER (PARTITION BY category ORDER BY price DESC) AS rn FROM products ) t WHERE rn <= 3;
-- 商品表开启历史留痕,保留 15 天 ALTER TABLE products HISTORY RETAIN 15; -- 每天的变更账本一目了然 SHOW HISTORY FOR products; -- PRODUCTS_HIST_20260801 | 10000 行 | 保留 15 天 -- 回看单个商品的完整变更轨迹(__HIS 自动跨天合并) SELECT name, price, updated_at FROM products__HIS WHERE id = 8888;
SELECT DATE_FORMAT(created_at,'%Y-%m') AS 月份, COUNT(*) AS 单量, COUNT(DISTINCT city) AS 城市数, IFNULL(SUM(pay_amount),0) AS 成交额 FROM `orders` WHERE created_at >= TIMESTAMP '2026-01-01 00:00:00' AND created_at < TIMESTAMP '2026-07-01 00:00:00' GROUP BY DATE_FORMAT(created_at,'%Y-%m') ORDER BY 月份;
SELECT TO_CHAR(created_at,'YYYY-MM') AS 月份, COUNT(*) AS 单量, COUNT(DISTINCT city) AS 城市数, COALESCE(SUM(pay_amount),0) AS 成交额 FROM orders WHERE created_at >= TIMESTAMP '2026-01-01 00:00:00' AND created_at < TIMESTAMP '2026-07-01 00:00:00' GROUP BY TO_CHAR(created_at,'YYYY-MM') ORDER BY 月份;
SELECT TO_CHAR(created_at,'YYYY-MM') AS 月份, COUNT(*) AS 单量, COUNT(DISTINCT city) AS 城市数, NVL(SUM(pay_amount),0) AS 成交额 FROM orders WHERE created_at >= TIMESTAMP '2026-01-01 00:00:00' AND created_at < TIMESTAMP '2026-07-01 00:00:00' GROUP BY TO_CHAR(created_at,'YYYY-MM') ORDER BY 月份;