在这篇文章中,我们将介绍 NoSQL 数据库基准测试的最佳实践和一个压力测试工具,您可以使用它来快速完成您的数据库项目。
基准测试将帮助您快速失败并在为时已晚之前快速恢复。
团队应始终将基准测试作为任何应用程序接受程序的一部分。您希望融入应用程序本身的整体用户体验是什么?确保您可以支持扩展您的客户群,而不会影响用户体验或应用程序的实际功能。
用户还应该考虑他们的灾难恢复目标。问问自己“我愿意购买多少基础设施开销才能在危急时刻维持我的应用程序的可用性?” 当然,还要考虑数据库对 DBA 日常生活的影响。
以下是我们在 ScyllaDB 开发的一些最佳实践,同时帮助数百个团队开始使用 ScyllaDB,这是一个速度极快且可扩展的开源 NoSQL 数据库。
1. 设定切实的目标
以下是您的团队设定切实目标的一些注意事项:
- 用例是什么?— 这应该确定您要对哪种数据库技术进行基准测试。您必须选择具有主要功能的数据库来满足您的用例需求。
- 测试和部署的时间表——您的时间表应该推动您的计划。您可能面临哪些风险和延误?
- MVP,中长期应用规模——很多时候人们只看 MVP 而没有考虑应用生命周期。您不会在第一天就需要 1,000 个节点,但不提前考虑可能会导致开发死胡同。对您需要支持的扩展有一个很好的估计。
- 为您的数据库制定预算——为您的 POC 和您的生产需求执行此操作。总体应用成本,包括服务器、软件许可和人力。考虑一些技术如何开始便宜,但不能线性扩展。
2. 创建测试计划
您的时间表需要考虑从不同的利益相关者那里获得共识并将他们带入流程。部署服务或服务器可能就像单击按钮一样简单。但这并没有考虑到您可能需要纳入日程安排的任何官僚程序。
将所需的流程纳入您的日程安排。此外,请确保您拥有正确的资源来帮助您评估系统。开发人员、DBA 和系统管理员在任何组织中都是有限的资源。确保在安排测试时考虑到他们的可用性。
下面是一个项目计划清单示例,您可以将其用于您自己的项目:
下载概念验证清单
这是我们在进行的每个概念验证中推荐的清单。我们正在考虑许多您有时不认为是基准测试的一部分但从您的角度和您的团队来看确实需要大量资源和大量时间的方面。
3. 了解应用程序的数据模式
数据建模本身可能会导致许多带有基准测试的恐怖故事。例如,一位用户试图将一个 1、2 甚至 5 GB 的 blob 强制放入单个单元格中。仅将元数据保留在数据库中,并将实际对象存储在数据库之外。这不仅在运营上更有意义,而且在财务上也更有意义。
数据库针对您的应用程序中的某些数据模型和访问模式进行了优化。确保可以轻松存储和访问应用程序数据。此外,请确保您拥有的 POC 开发人员接受过针对目标数据库的数据建模方面的培训。
此外,要意识到并非所有的基准测试压力工具都具有数据建模功能。超越通用测试。如果您有自己的数据模型要求并且可以用它对您的应用程序进行基准测试,那是最好的情况。查看合成工具,看看它们是否能够修改数据模型。
4. 基准测试硬件
虽然这是可以理解的,但许多基准测试失败是因为测试环境功率不足;使用太小而无法提供足够测试体验的硬件系统——尤其是与他们的生产系统相比。太多次我们看到评估者试图从一角钱中榨取生命。这些动力不足的测试系统可能会严重但不公平地偏向您的结果。考虑一下您要为系统提供的 CPU 数量。要查看系统的好处并进行公平的性能评估,请不要在笔记本电脑上运行它。
5. 压力测试工具和基础设施
确保您有专门的服务器作为压力节点,执行 Cassandra-stress 和 Yahoo Cloud Server Benchmark (YCSB) 等压力工具。如果您在与数据库相同的服务器上运行压力工具,可能会导致资源争用和冲突。它还有助于尽可能真实地设置测试。
同样,使用真实数量的数据,以确保您正在推送和创建足够的独特数据。如果服务器中只有 10 GB 的数据或 10 TB 的数据,性能会有很大差异。这不是苹果对苹果的比较。(多年来,我们一直在指出其他数据库的性能无法线性扩展。)
查看各种压力测试使用的默认值,并在可能的情况下针对您的用例进行修改。假设 Cassandra-stress 正在做一个 300 字节的分区键。这可能不代表您的实际工作量。所以你想改变它。你想改变有多少列,等等。确保您的压力工具代表您的实际工作量。
6. 容灾测试
你需要测试你维持正常生活事件的能力。节点会崩溃。磁盘会损坏。并且网络电缆将被断开。这肯定会发生,而且总是在高峰时段发生。这将是在你的黑色星期五。这将是在你的游戏中间。事情发生在完全错误的时间。因此,您需要考虑灾难并使用减少的节点、网络分区或其他不希望发生的事件来测试容量规划。这还有一个额外的好处,就是让您了解系统弹性的真正能力。
必须测试从备份中恢复活力的艰巨任务。这意味着您还应该花更多的时间(和金钱)来测试备份和恢复过程,以查看恢复的速度和容易程度,以及恢复是否正常工作。
7. 可观察性
确保你的可观察性的能力。您需要一个强大的监控系统来了解数据库和系统功能。这使您可以了解数据模型的性能和应用程序的效率。您还可以发现数据模式。
转向生产
此外,一旦您完成了 POC,您还没有完成!对于进入生产的后续步骤,您将需要一份清单以确保您已准备好。随意使用我们准备的清单,或修改它以创建您自己的清单。
原文标题:How to Test and Benchmark Database Clusters
原文作者: Peter Corless
原文地址:https://dzone.com/articles/how-to-test-and-benchmark-database-clusters