OceanBase 数据库是如何做到比传统数据库更省空间的?

OceanBase 数据库通过数据编码压缩技术实现高压缩。数据编码是基于数据库关系表中不同字段的值域和类型信息,所产生的一系列的编码方式,它比通用的压缩算法更懂数据,从而能够实现更高的压缩效率。

为什么 OceanBase 数据库要基于同一套引擎实现 HTAP 呢?

经典数据库,例如 Oracle 数据库或者 SQL Server 数据库,其实都是在一套引擎下支持 HTAP 混合负载,这种方式做得更精细,性价比更高,且经典数据库通过类似 Cgroup 等技术已经解决了 TP(Transactional Processing) 和 AP(Analytical Processing)隔离的问题。OceanBase 数据库在技术上可以更多地借鉴发展了五十多年的经典关系数据库。

OceanBase 数据库作为一款分布式数据库,业务 APP 连接数据库时和传统数据库是否有不同?

OceanBase 数据库作为分布式数据库,副本可能分布在不同的机器上,为了尽可能地减少跨机数据访问,我们提供了 OBProxy。OBProxy 作为 OceanBase 分布式关系数据库专用反向代理服务器, 为前端用户请求提供了高性能、高准确率的路由转发服务, 为后端 Server 服务提供了高可用易扩展的容灾保障. 相对于其他数据库的代理服务器, OBProxy 根据实际单机环境和 OceanBase 多集群部署的特点, 采用异步框架和流式转发的设计, 采用 FastParse 和 LockFree 的内存方案, 具备有限资源占用下百万 QPS 的能力和海量部署下丰富便捷的运维支持能力。

OceanBase 数据库作为一个以 TP 见长的数据库,AP 计算能力怎么样呢?

AP 主要采用行列混合存储、编译执行、向量引擎、基于代价的查询改写和优化等技术,再加上 OceanBase 数据库的可扩展性很好,OceanBase 数据库在 AP 领域里面的实时分析部分都是业界领先的。当然,对于离线大数据处理,Spark 等大数据方案可能是更合适的选择。

数据量大概多少可以使用 OceanBase 数据库做 AP 呢?

这个需要看业务需求,100 G 到 PB 级不设限。AP 是 OceanBase 数据库提供的一个能力。数据量小的时候,可以把并行设置小一些,用的计算资源就小。数据规模大了,计算资源给多一些就好了。本质上并没有一个量的限制。AP 的能力,主要体现在把机器硬件资源充分调动起来的能力,以及生成高效的并行计划等方面的能力。

OceanBase 数据库的性能和机器数量的关系是什么?

可以看看 OceanBase 数据的 TPC-C 报告,TPC-C 场景且 1500 多台机器规模的情况下基本都是线性扩展的。

OceanBase 数据库最新版本中对标准 SQL 的支持度是多少?

在实际应用中,MySQL 的大部分业务均能够做到平滑迁移;Oracle 模式下基本的 Oracle 功能也都支持,基本只需要很少的改动就可以比较平滑地由 Oracle 数据库迁移到 OceanBase 数据库。

从前运行在 MySQL 上的业务,迁移到 OceanBase 数据库上的成本如何?

OceanBase 数据库兼容常用 MySQL 功能及 MySQL 前后台协议,业务零修改或少量修改即可从 MySQL 迁移至 OceanBase 数据库。

用户如何使用 OceanBase 数据库?

和传统数据库一样,OceanBase 数据库提供了 SQL 接口,用户可以通过 SQL 语言访问、操作数据库。

什么是实例,什么是租户,它们的关系是什么?

OceanBase 数据库是一个多租户系统, 一个实例即 OceanBase 集群中的一个租户。 租户之间的数据不能互相访问。

我需要一个实例还是多个实例?

如果有多个子系统, 每个子系统在数据库层面没有交互,建议每个子系统使用不同的实例。

使用 OceanBase 数据库在开发中要特别注意什么?

以下列出开发过程中的注意事项,供参考:

  • 表建好后,主键不能更改。如果需要修改,只能删表重建。

  • 列类型修改有较大限制。Varchar 长度只能由短变长,不能由长变短。

  • 索引生效时间较长,建议在建表时将索引语句一并纳入。

  • 大数据量导入需要特别关注内存的使用情况。

  • mysql-connector-java 的版本建议使用 5.1.30 及以上。

  • 如果一个连接超过 15 分钟空闲,服务端会主动断开,在使用连接池的时候需要设置一个连接最大的空闲时间。例如,Druid 的 minEvictableIdleTimeMillis 小于 15 分钟。