PostgreSQL + Apache Doris:构建用于实时分析的 HTAP 架构

多维聚合实战:从SQL GROUP BY到OLAP立方体的工程化落地 多维聚合是现代数据分析的核心能力,本质是通过维度建模与度量定义,在保留数据颗粒度的前提下实现任意切片、钻取与交叉分析。其技术原理根植于OLAP立方体模型,依赖维度层级、事实表粒度与可加性度量的协同设计。相比传统GROUP BY的静态降维,多维聚合提供动态探查能力,显著提升BI响应速度与分析灵活性。在工程实践中,它支撑销售归因、用户行为路径、财务成本分摊等高频场景,并深度融入Pandas多维操作、ClickHouse物化视图及StarRocks分布式聚合等现代工具链。本文聚焦多维聚合的数据操作心法与生产级避坑 阅读详情

像 PostgreSQL 和 MySQL 这样的 OLTP(在线事务处理)数据库,凭借其强一致性和高并发事务处理能力,已成为行业标准。为应对更大规模的工作负载,许多团队还会引入分库分表方案,将数据分布到多个实例和表中,以此突破单节点瓶颈。然而,这种对事务行之有效的方案,在实时分析需求(实时运营仪表盘、多维业务报告、用户行为分析和实时监控)面前却暴露出明显短板。

问题的关键不在于将 PostgreSQL 数据库扩展到其设计范围之外的用途,而是在其旁构建一个专用的分析层。本文将介绍如何将 PostgreSQL 与 Apache Doris 结合,构建混合事务/分析处理(HTAP)架构:让 PostgreSQL 专注于事务处理,而 Apache Doris 则负责分析任务——通过实时数据同步、高速聚合和高并发查询能力,为分析场景提供支撑。

为什么 OLTP 数据库不擅长实时分析?

分库分表方案有效解决了事务型数据库的扩展问题。它突破了单节点存储限制,将高并发请求(如秒杀活动、订单高峰)分散到多个节点,在拆分后仍能保证 ACID 特性,并可随业务增长进行水平扩展。但随着分析需求的增加,依赖同一 OLTP 系统来处理事务和分析会暴露出几个根本性的局限性。

为什么 OLTP 数据库不擅长实时分析?.PNG

  • 分析效率低下:跨分库、跨分表的关联查询(如多表 Join、多维度聚合)需手动拼接分片数据,SQL 编写复杂且存在大量跨节点数据传输,导致查询延迟高、资源消耗大;

  • 成本高昂:TP(事务处理)系统的设计核心是适配在线高并发事务场景,其存储架构更侧重性能优化而非成本控制,若用于存储海量历史数据,会导致存储成本显著增加;

  • 隔离性缺失:数据分析通常伴随大量计算与存储资源占用,若与在线 TP(事务处理)系统共享资源,易引发资源竞争,进而影响交易业务的响应速度与系统稳定性。

  • 存储冗余与 I/O 激增: PostgreSQL 的 MVCC(多版本并发控制)机制采用“仅追加”(Append-Only)存储模式。这意味着每次更新操作都会在磁盘上复制整行数据,导致大量的无效死元组(Dead Tuples)积累,形成表膨胀(Table Bloat)。对于分析查询而言,必须扫描这些冗余数据,造成查询 I/O 成本激增和性能显著衰退,极大地增加了存储和计算资源的消耗。

  • 垃圾回收效率低下与运维复杂: PostgreSQL 依赖复杂的 Autovacuum 机制来清理死元组。然而,这一机制难以调优,且易被分析场景中常见的长事务阻塞,进一步加剧了表膨胀的恶性循环。更糟糕的是,常规的 VACUUM 无法回收磁盘空间,必须运行资源消耗巨大且耗时的 VACUUM FULL 操作,严重影响生产环境的连续可用性。

  • 高并发分析与连接瓶颈: PostgreSQL 采用的进程-连接(Process-per-Connection)模型在应对分析场景下的高并发连接时,性能衰减迅速,难以实现大规模并发查询的线性扩展。

HTAP 架构:PostgreSQL + Apache Doris

Apache Doris 是基于 MPP(大规模并行处理)架构构建的高性能实时分析型数据库。它专为高速复杂查询、实时数据更新、高并发工作负载而设计,常用于实时报表和分析、实时监控、用户画像等场景。Doris 还能与主流数据同步工具无缝集成。

SelectDB 作为 Apache Doris 的核心贡献者和商业化团队,在 Doris 开源内核基础上,提供了企业级特性、全托管运维服务及专业技术支持,帮助企业更便捷地将 Doris 能力应用于生产环境。

这种 HTAP 架构的核心思想很简单:将事务与分析业务在物理上实现分离。PostgreSQL 处理在线事务处理,Apache Doris 处理分析任务。数据通过 Kafka、Flink CDC、DataX 或 Apache SeaTunnel 等同步工具从 PostgreSQL 流向 Apache Doris,在不影响事务系统的情况下保持分析层的最新状态。

HTAP 架构.PNG

数据同步策略

数据同步是保障分析数据准确性与实时性的核心环节,需根据业务场景选择合适的同步工具与策略:

  • 全量同步:适用于初始化场景,通过 DataX、Sqoop 等工具,读取 MySQL/PostgreSQL 分库分表的全量数据,按 Doris 表结构进行格式转换后批量写入,完成初始数据对齐;

  • 增量同步:针对交易数据的实时变动,采用 Flink CDC(Change Data Capture)工具,捕获分库分表中的 INSERT、UPDATE、DELETE 操作日志,实时传输至 Doris。Flink CDC 支持断点续传、数据去重,确保增量数据的完整性与一致性;

  • 同步频率控制:对于高频变动数据(如订单状态),采用实时同步(延迟≤10 秒);对于低频变动数据(如用户基础信息),采用定时增量同步(如 5 分钟一次),平衡实时性与资源消耗。

Doris 表结构设计

为适配分库分表数据与分析需求,Doris 表结构设计需遵循以下原则:

  • 分区设计:按时间维度(如天分区)或业务维度(如区域、业务线)进行分区,减少查询时的数据扫描范围,提升查询效率;

  • 分桶设计:针对大表,按高频查询字段(如用户 ID、订单 ID)进行分桶,使数据均匀分布在 Doris 各个节点,充分发挥 MPP 并行计算能力;

  • 表引擎选择:核心业务表采用 Mow(Merge-on-Write)表引擎,支持行级近实时更新;离线分析表采用 Aggregate 表引擎,通过预聚合提升聚合查询效率。

核心优势

实时数据更新

实时数据更新.png

Apache Doris 的 Merge-On-Write(MOW)引擎专为实时更新场景设计。无需依赖后台大量异步 Compaction,MOW 在数据写入阶段即完成合并,更新后的数据可秒级可见,完美适配高频小批量更新、实时数据同步等场景(如订单状态实时变更)。

MOW 支持全范围的 DML 操作(INSERT、DELETE、UPDATE、UPSERT),并能与 CDC 工具和其他数据导入工具无缝协作,适配 PostgreSQL/MySQL 等数据源的实时同步需求,现有查询 SQL 与核心功能(向量引擎、物化视图、分区 TTL 等)可直接复用,无额外适配成本。

高速分析查询

大多数数据库基准测试基于静态数据集。但在生产环境中,数据高频更新下进行性能测试,才能展现真实的生产适配能力。

以 Star Schema Benchmark(SSB)SF100 数据集为基准,在 25%的数据持续更新的情况下,Apache Doris 的整体性能比 ClickHouse 快 25 倍,显著凸显其在实时更新场景下的优势。

高速分析查询.png

注: Apache Doris 与 ClickHouse 在实时更新方面的比较

Apache Doris 的性能优势来自两个方面:

  • 执行引擎。Apache Doris 采用向量化执行引擎,以批量方式处理数据,从而降低每条指令的开销。其基于成本的优化器(CBO)会分析数据统计信息,自动选择最优查询计划,包括 Join 顺序、扫描方式和聚合策略,从而将复杂查询的执行成本降至最低。

  • 存储结构。MOW 引擎在写入时对数据进行排序、编码和合并,生成规范的、组织良好的存储结构。在查询时,无需扫描分散的增量日志,也无需进行即时合并计算。这种“写时合并、读时轻量”的设计方法使查询延迟保持稳定且可预测,这对于实时仪表盘和 SLA 约束报告等对延迟敏感的用例至关重要。

工作负载隔离

将分析型业务(AP)迁移到 Apache Doris 后,事务(TP)与分析(AP)在物理独立的集群上运行,彻底消除资源争用:分析查询不再挤占生产事务的 CPU 和内存,也不再出现因报表误时运行而导致事务超时的风险。

PostgreSQL 始终专注于其最擅长的事务处理。Apache Doris 则独立承担所有分析性的繁重任务。每个系统都有自己的资源,且互不干扰。

降低存储成本

Apache Doris 提供存算分离与存算一体两种部署模式下的分层存储方案,可灵活适配不同业务场景,实现性能与成本的平衡。

  • 存算分离架构:采用“本地缓存 + 远端对象存储”的分层策略。热数据(高频访问、对延迟敏感)缓存在计算节点本地磁盘,确保低延迟查询响应;冷数据(低频访问、体量大)则自动沉降到兼容 S3 的对象存储(如 AWS S3、阿里云 OSS),在突破本地存储限制的同时,显著降低长期存储成本。

  • 存算一体架构:支持按数据访问热度进行多介质存储适配。热数据部署于 SSD,充分发挥高 IOPS 与低延迟优势,保障高并发与复杂分析的性能;冷数据则迁移至成本更低的 HDD,通过“热 SSD + 冷 HDD”的组合,在满足业务性能需求的前提下,有效控制硬件采购与运维成本。

两种模式均基于访问模式使用智能数据分层,实现同一目标:热数据高性能,冷数据低成本。为海量数据下的存储与分析提供了灵活、经济的优化路径。

客户使用收益

森马:400% QPS 提升(MySQL )

森马服饰作为中国休闲服饰和童装领域的领先企业,覆盖线上线下全渠道零售,门店总数达到 8000+ 家。为支持其全渠道库存管理平台,森马将其 Elasticsearch +分布式 MySQL 架构替换为阿里云 SelectDB 版(由 Apache Doris 提供支持的云服务),统一了 16 条以上核心业务线的分析,复杂查询 QPS 提升 400%,响应时间缩短至秒级。

  • 多场景并发支撑:同时支撑 2B 业务、2C 业务、直营店、加盟商等多场景下的高并发数据分析需求,复杂查询的 QPS 提升 400%,达到 200+ QPS

  • 资源隔离:使用独立的计算组实现在线订单查询与批量 BI 分析之间的资源隔离,避免相互干扰,确保高并发场景下系统稳定性。

  • 弹性扩缩容:在重要的直播销售活动期间,无需停机或数据迁移,可快速在线扩容应对流量激增。

  • 统一架构:简化架构取代双系统设置,在一个系统中支持从简单过滤器到复杂多表连接的所有功能

阿里云数据库 SelectDB 版作为阿里云原生服务,与 VPC、RAM 权限、监控等云服务无缝集成,提供类似在用户 VPC 内部署的网络体验,让用户享受更便捷的云端管理能力。

完整阅读:森马服饰从 Elasticsearch 到阿里云 SelectDB 的架构演进之路

天眼查:查询延迟降低 70%(PostgreSQL)

天眼查是一家亚洲的企业数据服务公司,提供超过 3 亿家公司的商业、金融和法律信息,涵盖 300 多个数据维度。天眼查将其混合架构的 Apache Hive、MySQL、PostgreSQL 和 Elasticsearch 替换为 Apache Doris,2 个 Apache Doris 集群承载数十 TB 数据,实现数据写入效率提升 75%,用户分群延迟降低 70%。

  • 即席查询能力:此前,每一个新的分析请求都需要在 Hive 中构建和测试数据模型,然后在 MySQL 中调度作业。现在,由于所有详细数据都存储在 Apache Doris 中,新请求只需配置查询条件即可运行即席查询,无需进行定制开发。

  • 高效用户分群:对于结果集在 500 万以下的细分任务,Apache Doris 可实现毫秒级响应。通过优化连续用户 ID 映射,细分延迟降低了 70%。

  • 统一架构:消除了多组件间的复杂读写操作,无需预定义用户标签,标签可基于任务条件自动生成,大幅简化用户分群流程,提高 A/B 测试的灵活性。

  • 稳定数据写入:针对不同场景使用不同的数据模型:MySQL 数据采用 Unique 模型,日志数据采用 Duplicate 模型,DWS 层数据采用 Aggregate 模型,每天支持近 10 亿条新记录的处理。

完整阅读:秒级数据写入,毫秒查询响应,天眼查基于 Apache Doris 构建统一实时数仓

结束语

PostgreSQL 和 MySQL 搭配分库分表,仍然是高并发事务处理的可靠选择。但其面对现代企业面临的实时分析需求仍存在天然局限。这种 HTAP 架构将 OLTP 系统与 Apache Doris 组合,在基础设施层面将事务与分析分离:每个系统都能发挥其所长,且不会对另一个系统造成影响。其结果是分析查询速度更快、事务性能稳定,且存储成本更低。如果您正在 PostgreSQL 或 MySQL 集群上运行分析工作负载,并感到压力,那么这种架构值得探索。

【信息科学与工程学】【数据中心】第三十五篇 云计算数据中心的学科知识04 编号学科(课程)核心知识点在云计算/云存储/云网络/云安全/云MaaS中的作用代表教材/资料/论文 + 数学方程式列表工业界应用D1421​云原生数据库:TiDB​HTAP(混合事务/分析处理)、分布式SQL、水平扩展、强一致(Raft)、自动故障恢复、与MySQL兼容、TiFlash列式引擎提供弹性扩展的分布式数据库;支撑高并发在线交易与实时分析教材:《TiDB in Action》PingCAP(2020) 论文:《TiDB: A Raft-based HTAP Database》(2017) 阅读详情

相关推荐

【信息科学与工程学】计算机科学与自动化——第三百零四篇 高性能系统开发指南01

高并发:限流、熔断、降级高性能:红包拆分、多级缓存、大Key/热Key拆分、Pipeline、线程池、RocketMQ零丢失、幂等、分布式锁、集群缩容、分批入库海量数据处理:日志分表分片、跨表查询、冷热分层、大数据引擎服务器选型系统安全:网关安全、服务器安全、云存储安全、风控、监控、测试数据一致性:缓存与数据库一致性、大厂方案、蓝绿回滚、流量一致性、流程一致性项目与团队管理:流程问题、管理问题(风险、成本、人员、文档、培训)稳定性建设:上线三板斧、线上五步闭环、混沌工程、容量规划。

weixin_49199313的博客 249

PostgreSQL + Apache Doris HTAP 架构:技术能力、选型对比与企业实践

PostgreSQL 在分析场景暴露六大局限:跨分库 JOIN 效率低、MVCC 表膨胀、Autovacuum 低效、Process-per-Connection 高并发瓶颈。Apache Doris MOW 引擎在 25% 更新场景比 ClickHouse 快 25 倍。森马 8000+ 门店 QPS 提升 400%,天眼查 3 亿公司延迟降低 70%。:Apache Doris · PostgreSQL · HTAP · MOW 引擎 · 工作负载隔离 · SelectDB · 分库分表 · 实时分析。

SelectDB 1128

Project 编制进度计划【项目管理】

Project 项目管理编制进度计划详解。

m0_52861684的博客 5084

Apache Doris 实战:PostgreSQL + Doris 构建 HTAP 架构配置指南

PostgreSQL 擅长事务处理但不擅长分析。Apache Doris MOW 引擎在 25% 更新场景下比 ClickHouse 快 25 倍。森马 QPS 提升 400%(8000+ 门店 16 条业务线),天眼查延迟降低 70%(3 亿公司)。本文拆解 HTAP 架构的数据同步策略、表结构设计和工作负载隔离配置。:Apache Doris · PostgreSQL · HTAP · MOW 引擎 · SelectDB · 数据同步 · 工作负载隔离 · 分库分表。

SelectDB 250

Mac上VMware Fusion手动安装VMware Tools实现跨系统复制粘贴

本文详细指导了在Mac的VMware Fusion中手动安装VMware Tools的完整流程,以解决虚拟机与宿主机之间无法复制粘贴的常见问题。通过定位安装镜像、挂载、解压并运行安装脚本,最终实现跨系统无缝数据交换,提升工作效率。

orange的博客 696

H3C ACL的应用与配置1

SWHC1-acl-ipv4-adv-3000]rule 30 permit ip source 192.168.50.252 0 destination 192.168.70.252 0 //设置一条ID为30的过滤,允许源地址为 192.168.50.252 访问目的地址为192.168.70.252 的设备。高级ACL范围3000-3999:对源IP,目地IP,协议,端口号进行过滤。[SWHC1]acl number 3000 //创建高级ACL 3000。

weixin_41120428的博客 2425

Apache Doris 4.0.4:解锁数据管理新境界

JSON 处理也得到增强,新增多个函数改进规范化和哈希,还支持 `GROUP BY` 和 `DISTINCT`,增强型时间处理简化了 BI 工作负载中的时间分析。Apache Doris 4.0.4 版本由超 200 位社区贡献者构建,标志着其在数据管理领域的重要进步。Apache Doris 4.0.4 版本功能全面升级,在搜索、分析、数据处理和集成等方面表现出色。随着数据需求增长,其有望成为数据管理领域的有力竞争者,推动行业发展。支持 Iceberg 系统表,可查看清单元数据,还实现快照管理和表优化。

web3times的博客 49

Nengo神经工程框架:脉冲神经网络的实时编译与硬件部署

脉冲神经网络(SNN)作为类脑计算的核心范式,正从生物模拟走向工程落地。其本质是用离散脉冲建模神经动力学,关键在于实现可预测、可复现的神经行为而非单纯拟合函数。Nengo基于神经工程学框架(NEF),将动态系统理论与硬件约束深度融合,通过解析式权重计算、确定性时间步长(dt)和多后端编译能力,支撑从CPU仿真到Loihi/FPGA的端到端部署。它不替代深度学习框架,而是提供面向神经形态芯片的‘神经编译器’能力,使LIF神经元参数、突触动力学与硬件时序严格对齐,显著提升实时性、能效比与物理可解释性。

weixin_32533659的博客 636

腾讯云TDSQL三大引擎解析:HTAP、分布式与单机如何选型

数据库技术发展至今,OLTP(联机事务处理)与OLAP(联机分析处理)的架构分离长期是主流方案,前者保障高并发事务的ACID特性,后者优化海量数据的复杂分析查询。然而,数据同步延迟与运维复杂度催生了HTAP(混合事务/分析处理)架构的兴起,其核心原理在于通过计算存储分离、行列混合存储等技术,在同一套系统中兼顾实时事务与即时分析。这种架构的技术价值在于简化数据栈、降低ETL成本,并支撑实时决策场景,如实时风控、动态报表等。腾讯云TDSQL正是基于此理念,通过“一套内核,三种引擎”的差异化设计,将HTAP、分布

weixin_30652491的博客 385

内网Linux服务器离线安装python包

3、将下载的依赖包和requirements.txt 拷贝到内网主机,依赖包和requirements.txt放同一级目录,进入该目录,运行指令。其实还有个更加方便的办法,联网主机装个与内网主机一样环境的虚拟机,在虚拟机中下载py包,拷贝到内网主机后就能直接安装了,省去手动下载py包的步骤。简单记录下最近遇到的一个小问题,内网主机没有内网源,处于无互联网状态,安装python包只能通过联网主机下载好后拷贝到内网主机。由于内网主机安装了多个版本的python,为了防止搞错,使用这种方式来调用pip安装。

cyc头发还挺多的博客 650

【2025CVPR】基于脉冲神经网络的能效目标检测模型:Multi-scale Spiking Detector(MSD)深度解析

本文提出了一种创新的多尺度脉冲神经网络目标检测器(MSD),通过生物启发的ONNB模块和MSDF框架实现了高效准确的目标检测。该模型采用端到端直接训练策略,在COCO数据集上达到62.0%mAP的精度,同时仅需7.8M参数和6.43mJ能耗,较传统方法提升2.8%精度并降低82.9%能耗。实验验证了其在小目标检测和事件数据处理的优越性,为边缘计算应用提供了新范式。

hasakie的博客 1109

腾讯云TDSQL“一套内核三种形态”解析:如何统一应对OLTP、OLAP与HTAP场景

在数据库技术领域,OLTP(联机事务处理)与OLAP(联机分析处理)是两大核心范式。OLTP专注于高并发、低延迟的事务操作,保障数据强一致性,支撑电商、金融等核心交易系统;OLAP则面向海量数据的复杂分析与查询,通过列式存储、MPP并行计算等技术实现高性能数据分析。随着业务对实时数据分析需求的增长,HTAP(混合事务/分析处理)架构应运而生,旨在统一平台处理混合负载,避免传统ETL链路带来的数据延迟与架构复杂度。腾讯云TDSQL提出的“一套内核,三种形态”架构,正是基于统一内核技术,通过TDSQL-C、TD

weixin_30546189的博客 432

Xarray实战:从气象数据到可视化分析的完整流程(附Python代码)

本文详细介绍了使用Xarray库处理气象数据的完整实战流程。针对气象领域常见的NetCDF和GRIB格式,文章从数据读取、坐标操作、智能索引、统计计算到高级可视化,提供了完整的Python代码示例。重点阐述了Xarray如何高效处理高维标记数据,帮助地球科学领域的研究人员将繁琐的数据处理工作转化为高效的分析流水线。

d6e7f8g9h的博客 289

Ubuntu 修复 FinalShell 任务栏齿轮图标

FinalShell 可以正常启动,但任务栏显示默认齿轮图标。本次环境为 Ubuntu、X11,图标文件存在且有效。最终通过在用户级.desktop文件中加入,重新启动并固定应用,成功解决。st是本次实际测得的窗口标识。其他版本或安装方式应先测量,不要直接套用。

To be a better man 197

针对小缺陷目标:在YOLOv11中引入小目标检测层

摘要: 针对YOLOv11在工业检测中漏检微小目标(如焊点气泡)的问题,研究发现深层特征下采样导致小目标信息丢失。通过在YOLOv11中增加P2检测层(4倍下采样)并融合浅层高分辨率特征,可显著提升小目标召回率。关键优化包括:调整模型结构、谨慎设计数据增强策略(减少MixUp、增加小目标粘贴)、重新分配损失权重(提升P2层权重)、优化推理速度(动态分辨率、通道裁剪)。同时强调数据质量的重要性,建议根据具体场景特性(目标尺寸、分布)定制方案,而非盲目调整模型。

as1225120794的博客 366

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

fast-lio2复现跑avia数据集

本文详细介绍了在Windows WSL2中安装Ubuntu 22.04并配置ROS2 Humble环境的全过程,涵盖系统初始化、ROS2安装、Livox雷达驱动编译及FAST-LIO2 ROS2版本的构建与验证。通过完整数据集回放与建图测试,成功实现点云地图生成与轨迹记录,并利用evo工具完成轨迹分析与可视化。最终输出包括累积点云地图、位姿轨迹及实验配置文件,为后续精度评估与复现提供基准。

chase_my_dream的博客 324

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

【T113】SDK Tina5.0 V1.2 使用记录(一)基本使用,初次编译等

SDK名称发行方其他描述全志官方tina2.0,仅支持 openwrt全志官方tina5.0 v1.2,支持 openwrt, buildroot百问网非官方,支持buildroot,用于开发板100ask_t113-pro。

似水流年 108

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

高危工业场景人员定位系统设计:四类场景的架构选型与部署要点

本文由航飞光电一线工程团队整理,重点讨论高危工业场景下人员定位系统的架构选型思路。覆盖危化、矿山、港口、电力四类场景,拆解技术路线分工、融合引擎跨区切换实现,以及私有化/本地化部署中的工程难点,供架构师与技术负责人参考。

HF17513371855的博客 347

热管理系列之八:终局判断 - 浸没式冷却、混合架构与技术路线图

动力电池热管理三条路径的终局判断:液冷极致优化守住基盘,直冷在中高端渗透,浸没式冷却从概念到量产。附2026-2030技术路线图与关键产业信号分析。

weixin_54917114的博客 1122

【STM32】 ADC 完全指南:从模拟信号采样量化到五大架构原理

本文系统介绍ADC核心概念与五大主流架构。模拟信号具时间与幅值连续性,需经采样(满足奈奎斯特准则防混叠)、量化(引入±1/2LSB误差,SNR≈6.02N+1.76dB)、编码三步转为数字信号。重点解析Flash(并行高速但受限于比较器数量)、SAR(逐次逼近,低功耗适合MCU如STM32)、双积分(高精度抗工频,用于万用表)、流水线(高速吞吐)及Σ-Δ(高分辨率,靠过采样与噪声整形)五类架构原理、优缺点与应用场景。强调分辨率≠精度,选型本质是速度、精度、功耗与面积的权衡。

专注后端与底层技术,分享实战干货与学习笔记,梦想进入字节跳动,步履不停,热爱不止。 437

零信任架构实战:基于天远运营商三要素详版V即时版构建自动化线上授信身份核验网关

破解线上信贷身份核验痛点:从离散证件图片审查到运营商三要素详版数据穿透直连 在互联网消费金融、小额循环信用贷款以及各类纯线上数字化授信平台的业务演进过程中,移动端进件的身份真实性校验是构筑整体合规风控体系的第一道关键屏障。随着移动互联网的高度普及,个人信贷申请全面向移动端 App、微信小程序以及轻量级 Web 门户迁移,“秒级审批、免抵押、纯线上放款”成为了

2501_94041864的博客 153

政务知识库AI架构选型:强合规约束下的架构决策与落地路径

政务知识库是典型的强合规导向场景,架构选型的第一原则是「合规一票否决」:安全优先级高于效果,可控性优先级高于体验,所有技术决策必须先通过等保、密评、信创、数据不出域四大硬性红线校验,再在此基础上优化检索准确率与用户体验。对应部署在互联网政务服务域、政务外网办公域、涉密内网核心域,三域物理隔离,数据仅能通过审批流程单向摆渡,禁止跨网调用模型与流转数据。• 放弃通用文档加载器,基于公文格式标准开发定制化结构化解析器,自动提取文号、标题、发文机关、成文日期、生效日期、密级、主题词等元数据,与分片内容绑定入库。

2401_89363342的博客 338

AI高密度算力推动冷却架构升级,全球数据中心高功率CDU市场CAGR达23.0%

QYResearch调研显示,2025年全球数据中心高功率CDU市场规模大约为2.04亿美元,预计2032年将达到9.97亿美元,2026-2032期间年复合增长率(CAGR)为23.0%。未来几年,本行业具有很大不确定性,本文的2026-2032年的预测数据是基于过去几年的历史发展、行业专家观点、以及本文分析师观点,综合给出的预测。

QYR_11的博客 190

数据不出域的 AI 分析方案如何选:企业 Data Agent 的三种部署架构与采购评估

选 Data Agent 翻车,表面看是功能不匹配,根子上是把部署架构当成了采购清单末尾的一个勾选项。拆开来看,有三个具体的翻车点。一是先被 SaaS 的体验打动,再回头找私有化,结果发现根本没有。很多 Data Agent 产品为了快速起量,只提供云服务。团队在公网环境里试用得很顺手,到了要落地的环节才发现,私有化版本要么不存在,要么是另一个定价体系、另一个功能子集。二是以为私有化只是把软件搬进内网,忽略了资产和权限的迁移成本。

Leo的博客 181

斯坦福 AI Agent 开发课程指南:从底层架构、工程实践到自主智能体

Agent 开发正在从框架调用走向系统工程。早期学习 Agent,可能只需要掌握 Prompt Engineering、Function Calling,以及 LangChain 等框架。如何设计稳定的任务执行循环。如何管理上下文与长期记忆。如何组织工具、环境和多 Agent 协作。如何保证长时间任务执行的可靠性。如何科学评估 Agent 的效果。如何优化成本、延迟与资源利用。如何持续提升系统能力。因此,

hello! 212

RDIMM、LRDIMM、UDIMM深度对比:寄存器架构、容量上限与平台适配

UDIMM、RDIMM与LRDIMM虽外形相同,但电气架构差异决定其性能与容量上限。UDIMM无缓冲,延迟低但容量受限;RDIMM通过RCD缓冲命令/地址,提升容量;LRDIMM进一步用数据缓冲器(DB)全链路减负,实现超大容量。三者互不兼容,平台适配严格,选型必须“平台先行”,类型错误无法通过降频或混插弥补。核心逻辑:先确认平台支持类型,再优化容量与频率,类型正确才是性能发挥的前提。

JGTX2706的博客 243
上一篇: OLAP 无需事务?Apache Doris 如何让实时分析兼具事务保障
下一篇: 从两套系统到一条 SQL:SelectDB search() 搞定日志的搜索与分析
SelectDB技术团队
博客等级 码龄4年 2119粉丝 484原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

SelectDB技术团队

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值