暂无图片
暂无图片
4
暂无图片
暂无图片
暂无图片

看着像保时捷,开着也得像保时捷

原创 多明戈教你玩狼人杀 2024-11-19
695

最近一个月,车圈一件大事就是小米SU7 Ultra在纽北的成绩出来了,四门车的最快速度,在条件有限的情况下被小米拿下。三年前谁能想到,小米才是那个认真研究底盘和驾驶的新势力。

实际上Su7刚发布的时候,我自己是持谨慎态度的,一方面这个造型和保时捷太像了,但是保时捷的操控和驾驶,开过的人都知道;另一方面,小米选择的是轿跑路线,到底在新势力里面能有多少市场我也不清楚。然而最终,这辆看起来像保时捷,开起来也像保时捷的小米Su7,却成为了我今年最想买的车,甚至超过了宝马M4或者混动款的保时捷911(当然这里面也有价格因素)。

如果我们换个角度思考,这何尝不是一个翻版的数据库兼容性问题——看着像Oracle,用着像不像Oracle?

看着像

市面上做Oracle兼容的产品已经有几家,光我测试过的就有达梦、OceanBase和YashanDB。这几个产品也是国内针对Oracle兼容做的最好的几家,其中达梦还上市了,股价一路稳步上涨。在这几个产品中,都做到了让他们的产品看着像Oracle。如果我们再提炼一下,当下的国产数据库,针对Oracle的兼容性,其实主要集中在如下几个方面:

语法兼容性:Oracle的语法其实有两大块,一个是SQL语法,一个是PLSQL语法。目前的国产数据库都在尽可能支持Oracle的SQL语法,以减少迁移过程中的工作量,有的已经做到接近100%兼容。另一方面,对于PL/SQL的支持度也是在重点攻坚,但是这方面各家做的情况不一。

对象类型兼容性:这里包含两部分,一个是数据类型,一个是逻辑对象。前者包含了Oracle诸多特有的数据类型,后者包括表、视图、索引、存储过程、触发器等。我曾经以为,很多冷门的Oracle类型不会有什么人用,然而真到了迁移的时候才发现,真的有系统在开发的时候使用。而Oracle各种逻辑对象类型,泛用性非常广,尤其存储过程和函数,几乎是绕不开的,如果能兼容,整个迁移的工作量可以大幅减少。

字符集兼容性:如果对Oracle了解程度不高,字符集有可能是一个被忽略的选项。但是一旦涉及到中文的存和用,就成了一个头疼的问题。Oracle的字符集从全球化、命名规则、子集与超集,都比其他数据库要复杂。刚入行的时候,我常常搞不清楚这之间的关系(直到今天还有很多东西不清楚),叠加上中文显示,在这方面吃过很多次亏。而国产数据库能把这部分兼容性做好,就非常像Oracle了。

驱动与工具的兼容性:Oracle作为一个已经存在了几十年的产品,在驱动和工具方面已经非常完备,无论原厂还是第三方的。除了常见的JDBC和ODBC连接,还有OLEDB、Oracle Net Service这种针对Oracle的连接驱动方式。开源的或者闭源的数据库工具也多如牛毛。有时候做迁移会感觉,替掉一个数据库似乎没那么难,但是去找到对应的工具却难上加难。这些都需要国产数据库以时间换空间去慢慢积累,很难做到一蹴而就。

告警和提示信息:这部分是我在做产品经理的时候深有体会的。Oracle成体系的ora-xxxxx,还有各种告警信息,都能够帮助DBA和研发工程师迅速定位问题,从而节省工时。这部分如果做不像,过往的经验就没法迁移过来。既要对这些告警和提示信息有足够的了解,又要去和自身产品对应的告警匹配,两边的机制和原因必须是能够精准匹配的,否则就成了巴别塔,各说各的。哦对了,依托告警和统计信息,还有个叫AWR的东西,也离不开。

用着也得像

如果说看着像主要是集中在具体的功能,那么开着也得像,意思就是在功能以外的部分,也得达到Oracle的水准。实际上,这方面也想要做到只会更难,毕竟别人积累了几十年的东西,我们国产数据库不可能短期内追上。而这些也是Oracle在数据库界赖以成名的核心竞争力:

可靠稳定性:除了DB2,在我用过的数据库里,Oracle在生产环境是独一档的存在。无论系统负载有多高,各种极端情况频率有多高,Oracle总能让我足够放心。一个人运维上百个实例都比较轻松。很多时候,我会听到一些DBA抱怨,国产数据库替掉了Oracle,但是自己工作量大幅提高,很多时候就是在排查各种问题,小毛病不间断,大毛病不重样。以前一个人能干的活现在要两三个人起步,还没法保证,实际上就是可靠稳定性没做到位。

性能:Oracle数据库之所以性能优异,与其强大的优化器密不可分。经常我们会遇到,同一条SQL同等资源配置,Oracle很快出结果,其他数据库连跑都跑不出来。实际上这背后就是Oracle那变态的CBO在起作用。你以为这就完事了?并没有,什么动态采样、索引优化、查询重写、表分区策略,全都招呼过来,在一个系统中到处都有。国产数据库哪里做不好,实际性能就会让你好看,而且这些东西都是需要以年为单位不断优化,短期内根本看不出成效。

高可用,说到这里,就得请出Oracle的高可用全家桶,实例级高可用的RAC,灵活物理备份恢复的RMAN,秒级别同步且读写分离的ADG,日常逻辑备份无忧的数据泵,手滑了能救你一命的Flashback,异构数据库之间数据同步的OGG。这么多东西总有一款适合你,反过来说国产数据库也得把它们都做出来,才敢说自己彻底实现了Oracle同等水平的高可用。这些都是组合拳,只有共同作用,才能使得Oracle数据库能够在面对各种故障和灾难时保持业务的连续性和数据的完整性。

安全特性,一个公司跑在Oracle上的系统,往往都是关键系统,既然都是关键业务了,那数据安全和系统安全都是不可能妥协的。无论是TDE加密,还是各种粒度的数据库审计,还有Oracle XXXXX Vault家族,都是不可能妥协的东西。不单单要做到,还要过国家等保。你以为这就完了?身份认证这一关,集中认证和单点登录、Kerberos、RADIUS、TLS都了解一下。缺了哪个都有可能导致迁移去O搞不下去。


真做到看着像,开着也得像,可真太难了。赛车有个好处是,有赛道可以量化,纽北跑完你不服,我去跑SPA,跑完SPA还不服,那我去跑银石。还不行,大不了我把蒙扎、加泰罗尼亚、铃鹿、勒芒、上赛都跑一遍,成绩都给你碾压了。

但是数据库很难,甭管你benchmark跑的多好,只要遇到某个业务场景搞不定,那就是一票否决权——细狗,你行不行啊?!

看着像保时捷,开着也得像保时捷,很难。看着像Oracle,用着也得像Oracle,更难。价格还要比同等配置的保时捷或者Oracle更低,难上加难。

最后修改时间:2024-11-19 10:53:21
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论