哪个更好-Oracle或Redis或如何证明平台选择的合理性

“好吧,这是必要的。”她大声说,没有对任何人讲话。-这是必须的!因此,它是直接写成的-公司的主要任务是为股东利益牟利。好吧,你认为!他们什么都不怕!



朱利叶斯·杜波夫(Julius Dubov),“邪恶的小人物”


看到这样的标题,您可能已经确定该文章是愚蠢还是挑衅。但不要急于下结论:大型公司(尤其是具有国家参股的公司)的员工经常不得不比较不同的平台,例如标题中所包含的平台则完全不同。







当然,没有人会这样比较DBMS,因为它们的优缺点是众所周知的。通常,解决应用问题的平台需要进行比较。在本文中,我将使用数据库示例作为哈伯读者不熟悉的传闻主题,展示同时使用的技术。所以,



动机



当您开始一个教育项目或一个爱好项目时,选择一个平台的动机可能会多种多样:“我最了解这个平台”,“我有兴趣了解这个平台”,“这里是最好的文档”……对于一家商业公司,选择标准是:我要付多少钱,这笔钱我会得到什么。



自然,您想少付钱而得到更多。但是,有必要确定哪个更重要-少付钱或多收钱,并为每个节点分配权重。假设高质量的解决方案比便宜的解决方案对我们更重要,并且我们为“成本”节点分配40%的权重,为“机会”节点分配60%的权重。







在大型公司中,情况通常恰恰相反-价值的权重不会低于50%,甚至可能超过60%。在模型示例中,仅重要的是任何父节点的子节点的总权重必须为100%。



截止条件



网站db-engines.com已知有大约500个数据库管理系统。自然地,如果您从众多选择中选择目标平台,您可能会得到一篇评论文章,而不是商业项目。为了减少选择空间,制定了截止标准,如果平台不满足这些标准,则不考虑。



截止标准可能与技术特征有关,例如:



  • ACID担保;
  • 关系数据模型;
  • SQL语言支持(请注意,这与“关系模型”不同);
  • 水平缩放的可能性。


可能有一般标准:



  • 在俄罗斯可获得商业支持;
  • 开源;
  • 电信和大众传播部注册簿中该平台的可用性;
  • 该平台是否存在一定等级(例如,在db-engines.com等级的前100个等级中);
  • 市场上专家的可用性(例如,基于在hh.ru网站上的简历中搜索平台名称的结果)


毕竟,可能存在特定于企业的条件:



  • 工作人员的专业性;
  • 与监视系统X或与备份系统Y的兼容性,所有维护都依赖于该备份系统...


最重要的是要有一个截止标准清单。否则,肯定会有一些专家(或“专家”)享有管理层的特别信任,他们会说:“为什么不选择Z平台,我知道这是最好的。”



成本估算



解决方案的成本显然包括许可证成本,维护成本和设备成本。



如果系统的类别大致相同(例如,Microsoft SQL Server和PostgreSQL),那么为简单起见,我们可以假定两种解决方案的设备数量大致相同。这将使您不必评估设备,从而节省了大量时间和精力。如果您必须比较完全不同的系统(例如,Oracle与Redis),那么很明显,为了进行正确的评估,有必要进行规模估算(设备数量的计算)。调整不存在的系统的大小是一项非常不费力的任务,因此他们仍然尝试避免进行这种比较。这很容易做到:零数据丢失和关系模型是在裁剪条件下编写的,反之亦然-每秒5万笔事务的负载。



要评估许可证,只需向供应商或其合作伙伴索取固定数量的内核和固定期限的许可证费用。通常,公司已经与软件供应商建立了牢固的关系,如果数据库运营部门无法独自回答成本问题,那么一封信就足以接收此信息。



不同的供应商可能具有不同的许可指标:按核心数量,数据数量或节点数量计算。备用数据库可以是免费的,也可以按照与主数据库相同的方式进行许可。如果仅发现度量标准上的一些差异,则必须详细描述模型摊位并计算该摊位的许可成本。



正确比较的重点是相同的支持条件。例如,Oracle支持每年的费用为许可证价格的22%,而PostgreSQL支持则为零。比较是否正确?不可以,因为无法独自消除的错误会带来完全不同的后果:在第一种情况下,支持专家将迅速帮助解决该问题;在第二种情况下,存在不确定的项目延迟或整个系统停机时间的风险。



有三种方法可以使计算条件相等:



  1. 在没有支持的情况下使用Oracle(实际上,这不会发生)。
  2. 购买PostgreSQL支持-例如,从Postgres Professional。
  3. 包括与缺乏支持相关的风险。


例如,风险计算可能看起来像这样:如果致命的数据库故障,系统的停机时间将是1个工作日。使用该系统的计划利润是每年400亿蒙古图格里克,事故发生率估计为1/400,因此,缺乏支持的风险估计每年约为1亿蒙古图格里克。显然,“计划利润”和“估计事故率”是虚拟数量,但是拥有这样一个模型比没有模型要好得多。



实际上,该系统可能太重要了,长时间停机所造成的声誉损失是不可接受的,因此需要支持。如果允许停机,那么放弃支持有时可能是省钱的好方法。



假设经过所有计算,操作平台A的5年成本为8亿蒙古图格里克,操作平台B的成本为-6.5亿图格里克,而操作平台C的成本为-6亿图格里克。平台C作为赢家获得了总分的成本,而平台A和B的价格略低(与价格高出多少倍成正比)。在这种情况下-分别为0.75和0.92点。



机会评估



机会评估分为许多组,其数量仅受评估人的想象力的限制。最好的选择似乎是将功能划分为使用这些功能的团队。在我们的示例中,他们是开发人员,管理员和信息安全人员。假设这些函数的权重分布为40:40:20。



开发功能包括:



  • 易于数据操作;
  • 缩放
  • 二级索引的存在。


标准列表(如权重)非常主观。即使解决相同的问题,这些列表,项目权重和答案也将根据团队的组成而显着不同。例如,Facebook使用MySQL存储数据,而Instagram建立在Cassandra之上。这些应用程序的开发人员不太可能填写此类表格。只能猜测马克·扎克伯格选择了成熟的关系模型,并为此付出了应用分片的代价,而凯文·西斯特罗姆则通过该平台放下了扩展规模,从而牺牲了数据访问的便利性。



管理功能包括:



  • 备份系统功能;
  • 易于监控;
  • 方便的容量管理-磁盘和节点;
  • 数据复制功能。


请注意,问题的措辞必须是可量化的。您甚至可以就如何评估特定功能达成共识。例如,让我们尝试使用Oracle DBMS随附的工具示例对备份工具进行评分:



工具 一条评论 评定
imp / exp 上传和下载数据 0.1
开始/结束备份 复制文件 0.3
RMAN 增量复印功能 0.7
ZDLRA 仅增量复制,恢复最快点 1.0


如果没有明确的评估标准,请几位专家提供评分,然后对它们进行平均即可。



最后,让我们只列出信息安全功能:



  • 密码管理策略的可用性;
  • 连接外部身份验证工具(LDAP,Kerberos)的能力;
  • 访问的榜样;
  • ;
  • ;
  • (TLS);
  • .




另外,我要警告不要将您未完成的任何负载测试的结果用作参数。



首先,被测应用程序的数据结构和负载配置文件可能与您要解决的任务有很大不同。大约10到15年前,数据库供应商喜欢炫耀TPC基准测试结果,但是现在似乎没有人认真对待这些结果。



其次,系统的性能在很大程度上取决于最初编写代码的平台以及进行测试的硬件。我已经看到许多基准测试将Oracle与PostgreSQL进行了比较。结果范围从一个系统的无条件优势到另一个系统的无条件优势。



最后,第三,您对谁进行了测试一无所知。影响操作系统质量和平台定制的两项资格,以及动机,都比所有其他因素加在一起对测试结果的影响更大,对动机也很重要。



如果性能是关键因素,最好自己进行测试,最好在将配置和维护生产系统的专家的帮助下。



结果



最后,所有工作的结果应该是一个电子表格,其中所有估计值都汇总在一起,相乘并加在一起:







如您所知,通过更改权重和调整估计值,您可以实现任何期望的结果,但这是完全不同的故事...



All Articles