对标Redis的国产数据库
一位来自国产数据库的朋友想请我试用一下他们的产品。并且直言早期问题比较多,还请多多包涵。一般对于这种比较客观和友好的我都愿意试试。对于怼天怼地吊打谁的我个人就不尝试了。
他们中文名字叫“成章数据库“我就尝试从一个不了解产品的人的角度去安装尝试一下。我也和他们反馈了说这个怎么一个汉字都没有啊。(同样的话我以前对PingCAP的CTO黄东旭老师说过,后来TiDB的就都有中文了。不过是不是因为我说的就不知道了)官方意思这个产品主打海外。对于不在国内卷,而出去的产品我是赞赏的。
先说一下该产品对标Redis以及兼容Redis的KV的,我听到这个以后我就不解。我说Redis的流行度挺高、在他所适配的场景中没什么短板。你们这个产品的优势在哪里?原厂说我们是多线性读写支持SQL、持久化的。听到这里我就明白了这个产品的发力点在哪里。
那么等下就和Redis比较一下吧。根据原厂给的地址下载压缩包。
下载安装
https://d143xau9fe26d8.cloudfront.net/eloqkv/centos7/rocksdb/eloqkv-1.0.10-amd64.tar.gz这个产品是二进制解压安装。
这里我个人建议,其实rpm的安装更加友好一些。因为熟悉Redis的朋友只要rpm -ihv redis-7.0.8-1.el7.remi.x86_64.rpm这样一个命令就好了。这样一个好处是连环境变量的事情也解决了。而现在的方式,需要用户手工去配置。当然这些不是大问题,只是如果改良会更加好。(安装体验简单会让用户喜欢)数据库届堪称最复杂的Oracle,看看他23AI的安装。就两步(我实测可以运行的)
说回这个数据库,按照文档要建立一个ini配置文件,我于是给他建立了一个conf目录。(虽然有点强迫症的感觉,但是其他软件的目录管理都是这样,应该说这是一种约定俗成的规矩吧)
然后再conf目录中我手工建立ini文件,把官网内容贴进去。我建议这里日后这个目录自己有,配置文件直接放进去。然后用户再按照文档要求,设置环境变量等。其实这里就回到我第一个问题,如果是rpm的安装这些都指定的话,这里就省略了。也不用指定路径启动。
启动数据库
然后就是启动这个数据库。
对了这种启动方式还有一个问题,就是我当前在那个目录运行log就在哪里。这样变成动态了,实际使用过程中导致了我好几个目录下都出现了log。所以这种应该指定到一个路径下为好。
然而这种启动会随着会话断开而关闭。那么最好是改成nohup eloqkv --config=/opt/EloqKV/conf/eloqkv.ini > log 2>&1 & 其实这种方式类似Kafka或者zookeeper的方式了。一般数据库很少这种操作。我更加倾向于systemctl start|status|stop service这种方式管理。
访问数据库
接下来要到激动人心的访问了。我看到这里有eloqkv-client。以为用这个访问。
不过原厂研发告诉我eloqkv-client下个版本会删除掉,我应该使用Redis的客户端 redis-cli来连接。这个操作很像mysql客户端连接StarRocks,所以我也习惯了。
我在同一台机器上既有Redis也有eloqkv,作为对比。Redis保持6379的默认端口。Eloqkv用16379以示区别。
一上来info的内容就不一样。只有这一点。对此原厂说,不是基于redis内核二次开发的,基本重写。也非常坦言比如类似monitor这种命令暂时还没支持。
最后在命令兼容性文档中看到了,几乎redis有的这里都有了。(我截图部分)
总体来说安装上面能改进不少,改进之后至少能让更多人用起来。随后原厂的CTO亲自下场,远程给我演示了并行的读写能力。看到整体CPU充分的调度了起来。在32核的机器上,成章KV的吞吐可以达到150万OPS,对比Redis只有30万OPS。我们探讨了Redis的单工作线程局限,和使用Redis Cluster提高CPU利用率的方案。
成章CTO介绍Redis Cluster虽然可以提高CPU利用率,但是存在易用性和可扩展性的问题。易用性是指Redis Cluster不支持跨节点数据访问和跨节点事务(MultiExec),往往需要业务指定HashTag。可扩展性是指Redis Cluster采用Gossip协议,集群性能随分片数增多而下降。最后又和另外一款基于RocksDB的持久化Redis产品进行了对比(这个我没用过),成章KV的性能也有明显优势,成章CTO从架构上解释了性能优势的原因,基于RocksDB的Redis产品需要同步写入RocksDB,性能同样受限于RcoksDB。而成章KV和Redis一样的直接操作内存结构,通过Checkpoint的方式把增量变化写入RocksDB,因而性能更好。
看上去是集合了两者优点,那么我觉得安装上再友好一点就好了。