背景
项目一直是与实时在线监测相关,特点数据量大,读写操作大,所以选用的是MongoDB。但按趋势来讲,需要有一款国产数据库可替代,实现信创要求。选型对比如下
1. IoTDB
这款是由清华大学主导的开源时序数据库,用于特联网交互场景为主,专注于处理时序数据问题。
主要特点如下:
- 高效能读写:经基准测试,其读写性能优于 KairosDB、InfluxDB 等现有时序数据库。支持数以百万计的低功耗设备的强连接数据访问、高速数据读写,适用于智能网络设备和混合设备。
- 部署方便:可实现端云一体化解决方案。轻量级
- 高效存储:采用TsFile 文件系统,可用于大数据分析,磁盘压缩比高
- 查询语义丰富:丰富的聚合操作支持,还支持SQL语言
API可参考: https://iotdb.incubator.apache.org/zh/UserGuide/V1.2.x/API/Programming-Java-Native-API.html
不考虑原因: 与Mongo 写法有一定差别,不支持文档类型,不考虑了
2. TapDB
TapDB是深圳钛铂数据有限公司旗下的产品,由前 MongoDB 大中华区首席架构师、MongoDB 中文社区主席唐建法创建。由游戏开发者团队打造。是一个以低延迟数据复制和实时数据处理为核心优势构建的现代数据平台。拥有完全自主知识产权的、管理海量文档数据对象,同时适应于事务和分析场景的国产分布式文档数据库。TapDB 是一套专注于解决游戏项目数据需求的分析工具,致力于帮开发者实现低成本、高效率的接入与查询体验。
主要特点
- 低门槛接入: 服务产接入支持REST API ,可以在不依赖 SDK 的情况下直接将数据上报到 TapDB。
- 无延时:官网原话描述:上报后可以立刻查到数据,时间就是生命
- 免费使用
API及接入方式可参考:https://www.tapdb.com/docs/aboutUs
最大的缺点也是由于该产品应用场景决定,不可离线使用,只能联网接入游戏数据。
不考虑原因:在线数据库,不能离线使用,不考虑了
3. SequoiaDB
3.1 概述
SequoiaDB 巨杉数据库 是一款分布式文档型 NoSQL 数据库,自研原生分布式存储引擎支持完整 ACID,具备弹性扩展、高并发和高可用特性。适用于历史数据平台、全量数据平台、实时数据中台和内容数据管理平台等各类应用场景。侧重应用场景为金融类。广泛应用于银行、保险、证券、新能源、政府等行业等。
主要物点
- 兼容性:完全兼容传统关系型数据,数据分片对应用程序完全透明
- 高性能与无限水平弹性扩展
- 分布式事务与ACID能力
- 同时支持结构化、半结构化、非结构化数据
- 金融级安全性,多数据中心间容灾能力强
- 多租户能力,去环境下支持多种级别的特量与逻辑隔离
API参考手册:https://doc.sequoiadb.com/cn/sequoiadb-cat_id-1558957223-edition_id-304
3.2 安装部署
SequoiaDB 巨杉数据库是一款金融级分布式数据库,可以轻松地部署和运行在主流框架的服务器及虚拟化环境。同时作为一款高性能分布式数据库,SequoiaDB 巨杉数据库支持绝大多数的主流硬件网络设备和主流的 Linux 操作系统环境.
3.2.1 硬件与操作系统要求
- X86架构(Linux):通用X86硬件平台
【Red Hat Enterprise Linux (RHEL) 6/7/8、SUSE Linux Enterprise Server (SLES) 11 Service Pack 1/2/3、 Ubuntu 12/14/16.x、CentOS 6/7/8.x、国产统信 UOS、深度 Deepin、中标麒麟、银河麒麟、红旗 Linux】; - ARM64架构(Linux):华为 TaiShan 服务器(鲲鹏 920 处理器)、长城擎天服务器(飞腾 2000 处理器)
【Red Hat Enterprise Linux (RHEL) 7/8、 Ubuntu 16.x、CentOS 7/8.x、国产统信 UOS、深度 Deepin、中标麒麟、银河麒麟、华为 EulerOS(openEuler)】; - Power架构(Linux):浪潮(IBM) Open Power受支持的操作系统
【Red Hat Enterprise Linux Server release 7.5】
3.2.2 说明Note:
- 操作系统需安装 glibc 2.15 和 libstdc++ 6.0.18,或安装其更高版本。
- 如果用户需要将未在上述列表中列举的 Linux 操作系统应用于生产环境,建议联系 SequoiaDB 技术支持,以获得更详细的信息。
网址参考
- 技术生态参考:https://blog.sequoiadb.com/cn/
- spring data MongoDB操作参考:https://idea.sequoiadb.com/cn/d/1387
- JAVA 原生驱动参考https://doc.sequoiadb.com/cn/index/Public/Home/document/304/api/java/html/index.html
- Mongo协议兼容参考
https://blog.csdn.net/weixin_53480635/article/details/115211814
3.3 SequoiaDB 与MongoDB命令兼容对比
3.4 社区版本和企业版本对比
待补充…
4. OceanBase
由蚂蚁集团完全自主研发的原生分布式关系型数据库,已连续 10 余年稳定支撑双 11,代码级可控,大规模金融核心场景 10 余年可靠性验证,稳定可靠真正实现数据强一致,数据不丢失。高度兼容 Oracle 和 MySQL。适用场景包括银行、保险、零售,也适用于电子商务、物联网,满足大规模数据存储和处理要求。
主要特点:
- 稳定可靠:RPO(Recruitment Process Outsourcing,恢复数据的完整性指标)=0,RTO(Recovery Time Objective恢复所需时间指标代表了及时性)小于8秒故障自动恢复能务,满足严苛条件下的业务连续性。
- 成本低:存储成本相比传统商业DB有显著优势,存储成本能降低70%-90%。基线加增加的存储引擎,增量存内存,基线存SSD盘,DML是内存操作。,LSM-Tree架构,数据存储压缩率能够相较传统数据库提升 10+ 倍。
- 易用性:支持活跃事务的落盘保证用户的大事务/长事务的正常运行或回滚
- 高性能:提供了多级 cache 加速来保证极低的响应延时
- 高安全性:支持国密GCM完整性校验,完备的角色权限管理体系,数据存储和通信全链路透明加密。通过等保三级专项合规检测。
- 高兼容性:高度兼容 Oracle 和 MySQL,全链路迁移工具及体系,支持新旧系统并跑提供更强性能,支持海光、鲲鹏、Intel 等多种芯片满足混合部署业务需求。
- 水平扩展:支持透明水平扩展,集群节点可超过数千个,单集群最大数据量超过 3PB,最大单表行数达万亿级。
API可参考:https://www.oceanbase.com/docs/common-oceanbase-database-cn-1000000000639550
不考虑原因:实现语义语法和Mongo区别很大,oceanbase仍为关系型数据库,可以很好地替换Mysql和Oracle,对于关系库单表数据量的查询瓶颈做了优化扩展,其Nosql主要是依靠其字符串的一些函数及其强大的查询做为支持实现。如果基于现有Mongo开的改造替换,工作量仍然不小
TiDB
TiDB是PingCAP公司自主设计、研发的开源分布式关系型数据库,是一款同时支持在线事务处理与在线分析处理 (Hybrid Transactional and Analytical Processing, HTAP) 的融合型分布式数据库产品,具备水平扩容或者缩容、金融级高可用、实时 HTAP、云原生的分布式数据库、兼容 MySQL 协议和 MySQL 生态等重要特性。目标是为用户提供一站式 OLTP (Online Transactional Processing)、OLAP (Online Analytical Processing)、HTAP 解决方案。TiDB 适合高可用、强一致要求较高、数据规模较大等各种应用场景。
参考文档https://docs.pingcap.com/zh/tidb/stable/overview
几乎完全兼容Mysql
不考虑因素:从数据模型和查询语言来看,MongoDB是文档型数据库,使用JSON格式的文档来存储数据,并使用MongoDB查询语言进行数据查询。而TiDB是关系型数据库,使用SQL作为查询语言。如果将现有的MongoDB应用程序迁移到TiDB,需要将MongoDB的查询语句改为TiDB的SQL语句。
KingbaseES
待更新…
GaussDB
待更新…
GaussDB(for Mongo)不支持离线使用。
GaussDB(for Mongo)是华为云自主研发的兼容MongoDB4.0接口的文档数据库,它是基于云计算架构的分布式数据库服务,需要依赖华为云的基础设施和服务来运行。用户可以通过华为云提供的管理控制台、API等方式对GaussDB(for Mongo)进行操作和管理,包括创建实例、配置参数、监控运行状态等。
GaussDB(for Mongo)是华为云自主研发的兼容MongoDB4.0接口的文档数据库,以下是其详细介绍:
-
技术架构
- 存算分离架构:采用计算存储分离的架构模式,计算节点和存储节点可分别独立部署,通过高速网络进行通信。这种架构使得资源可以灵活扩展,能够根据业务需求单独增加计算资源或存储资源,有效提高了系统的可扩展性和资源利用率。
- 共享存储设计:基于共享存储的架构,多个节点可以同时访问和使用同一份数据存储空间。与传统的社区版MongoDB相比,在添加Secondary节点时不需要拷贝数据,添加动作可以秒级完成,大大提高了集群的扩展效率。
-
功能特点
- 高可用性:支持副本集模式,通过数据的冗余备份和自动故障转移机制,确保在节点出现故障时,系统能够自动切换到其他正常节点继续提供服务,保证业务的连续性。
- 弹性扩展:计算节点和存储节点都可以根据业务负载的变化进行弹性扩展,无需停机重启,对业务的影响极小。无论是应对业务高峰期的流量增长,还是长期的业务发展需求,都可以轻松实现资源的动态调整。
- 数据一致性:在分布式环境下,能够保证数据的强一致性,确保不同节点上的数据始终保持一致,避免因数据不一致导致的错误和问题。
- 兼容性:完全兼容MongoDB4.0接口,对于已经使用MongoDB的应用,可以无缝迁移到GaussDB(for Mongo),无需修改代码,大大降低了迁移成本和风险。
- 性能优化:针对LSMTree的写压力来源进行了优化,将Compaction任务集中化管理,卸载到Compaction统一调度池,减少了用户计算节点的CPU和IO资源消耗,提升了整体性能。
-
应用场景
- 互联网应用:适用于各种互联网应用的后端数据库,如社交网络、内容管理系统、在线游戏等,能够提供高性能、高可用的数据存储和处理能力,满足大量用户的并发访问需求。
- 物联网领域:可以作为物联网设备数据的收集和存储中心,处理海量的物联网设备产生的数据,为物联网应用提供实时数据分析和决策支持。
- 金融行业:在金融交易、风险管理、客户关系管理等场景中,GaussDB(for Mongo)的高性能和高可用性能够保障金融业务的稳定运行,同时满足金融行业对数据安全和合规性的要求。
- 大数据与分析:适合用于大数据的存储和分析,能够与其他大数据处理工具和平台集成,为企业提供强大的数据分析能力,帮助企业挖掘数据价值,做出更明智的决策。
综上所述,GaussDB(for Mongo)是一款功能强大、性能优越的文档数据库产品,具有高可用性、弹性扩展、数据一致性等特点,广泛应用于互联网、物联网、金融、大数据等领域。
下图来源于官网
TDSQL
待更新…
归纳
国产的文档数据库主要有以下几种:
-
SequoiaDB 巨杉数据库:原生支持 JSON API 操作,如增删改查,在扩展性、高可用和整体性能方面有明显优势。采用原生分布式架构,集群规模可弹性扩展,支持从 TB 到 PB 级的不同应用需求。数据库引擎原生支持多中心容灾,无单点故障。【官方客户一直没联系上,不知道后续运维如何】
-
TapDB 分布式文档数据库:全面兼容 MongoDB 社区版,适配国产芯片鲲鹏、海光、海思以及麒麟等操作系统,满足信创要求,可应用于事务和分析场景。【用于在线且游戏应用场景】
-
GaussDB(for Mongo):是华为推出的 MongoDB 替代产品,基于统一的架构设计,支持分布式集群部署,具备良好的兼容性和稳定性。
-
OceanBase:虽然主要是关系型数据库,但也可以存储和管理一些半结构化和非结构化的数据,其强大的事务处理能力和分布式特性使其在一些场景下可作为文档数据库的替代品。
总的来说,这些数据库各具特色,在不同的应用场景中发挥着重要作用。