04.数据库选择

数据库选择

您选择的数据库系统可能会产生长期影响如果数据库可能由于性能问题,一致性问题或操作难题而不太适合,则最好在开发周期中早些找到它,因为迁移到其他系统可能并不容易在某些情况下,可能需要对应用程序代码进行实质性更改。每个数据库系统都有优点和缺点为了降低进行昂贵迁移的风险,您可以花一些时间再决定使用哪个数据库来建立对数据库满足应用程序需求的信心。

尝试根据数据库的组件(例如,数据库使用的存储引擎,如何共享,复制和分发数据等),数据库的等级(由 ThoughtWorks 等咨询机构或数据库比较网站分配的任意受欢迎度值)进行比较 例如 DB-Engines 或数据库数据库)或实现语言(C++,Java 或 Go 等)可能导致无效和过早的结论这些方法只能用于高级比较,并且可以像在 HBase 和 SQLite 之间进行选择一样粗略,因此即使对每个数据库的工作方式及其内部内容有一个肤浅的了解也可以帮助您得出更加权的结论。

每次比较都应从明确定义目标开始,因为即使是最微小的偏差也可能完全使整个调查无效如果您要搜索的数据库非常适合您拥有的(或正计划减轻)工作负载,那么您最好的办法就是针对不同的数据库系统模拟这些工作负载,衡量重要的性能指标 为您,并比较结果一些问题,尤其是在性能和 可伸缩性方面,仅在一段时间或容量增长后才开始显示为了检测潜在的问题,最好在尽可能接近实际生产环境的环境中进行长时间运行的测试。

模拟现实世界的工作负载不仅可以帮助您了解数据库的性能,还可以帮助您学习如何操作,调试和发现数据库社区的友好程度和帮助程度选择数据库总是将这些因素结合在一起,而性能通常并不是最重要的方面:通常使用缓慢保存数据的数据库要比快速丢失数据的数据库好得多。

比较项

要比较数据库,可以非常详细地了解用例并定义当前和预期的变量,例如:

  • 架构和记录大小
  • 客户数量
  • 查询类型和访问模式
  • 读写查询率
  • 这些变量的预期变化

了解这些变量可以帮助回答以下问题:

  • 数据库是否支持必需的查询?
  • 该数据库是否能够处理我们计划存储的数据量?
  • 一个节点可以处理多少个读写操作?
  • 系统应具有多少个节点?
  • 给定预期增长率,我们如何扩展集群?
  • 什么是保养程序?

回答完这些问题后,您可以构建测试集群并模拟您的工作负载大多数数据库已经具有压力工具,可用于重建特定的用例如果没有标准的压力工具可以在数据库生态系统中生成现实的随机工作负载,则可能是一个危险信号如果某些情况使您无法使用默认工具,则可以尝试使用现有的通用工具之一,也可以从头开始实施。

源码探究

如果测试显示出积极的结果,熟悉数据库代码可能会有所帮助查看代码,通常首先了解数据库的各个部分,如何找到不同组件的代码,然后进行导航,这通常很有用甚至对数据库代码库有一个大概的想法,都可以帮助您更好地了解它产生的日志记录,其配置参数,并帮助您在使用它的应用程序中甚至在数据库代码本身中发现问题。如果我们可以将数据库用作黑匣子,而不必不必查看它们,那就太好了,但是实践表明,迟早会出现错误,中断,性能下降或其他一些问题,并且 最好为此做好准备如果您了解并了解数据库内部知识,则可以降低业务风险并提高快速恢复的机会。

选择数据库是一项长期的决定,最好跟踪新发布的版本,了解确切的更改以及更改的原因,并制定升级策略新版本通常包含对错误和安全性问题的改进和修复,但可能会引入新的错误,性能下降或意外行为,因此在推出新版本之前对其进行测试也至关重要以前检查数据库实施者的处理方式可能会给您一个关于将来的期望的好主意过去的平滑升级不能保证将来的平滑升级,但是过去的复杂升级可能表明未来的升级也不容易。

上一页
下一页