您已经用一个直观、用户友好的UI启动了应用程序。但是,如果您的应用程序遇到负载问题,它将使您的最终客户在使用它时感到沮丧。问题不在应用程序内部,而在数据库中。据调查,38%的数据库专业人员报告称数据库停机是导致他们夜不能寐的重要问题。停机可能是由许多问题引起的,包括不正确的数据库配置、糟糕的负载处理、数据库查询超时等等。
在本文中,我们将讨论您是否需要扩展数据库以及如何解决数据库可伸缩性问题。让我们从最明显的问题开始——为什么要扩展数据库?
为什么要扩展数据库?
应用程序的数据库应该能够扩展或收缩其计算资源,以满足应用程序的动态需求。例如,您的数据库应该能够扩展以处理突然激增的流量。另外,当不在状态时,您的数据库应该能够收缩以节省资源。确保良好的数据库可伸缩性的最佳方法之一是根据您的需求选择适当的数据库。对于物理服务器,数据库的扩展和收缩可能是一个令人头疼的问题。云解决方案可以做到这一点。
数据库可伸缩性是一项资源密集型且具有挑战性的任务。因此,在开始项目之前,您需要确保您的产品需要一个可伸缩的数据库。首先,确定您的产品在可预见的未来是否会出现流量激增的情况。如果没有,您仍然可以使用旧数据库进行操作。
如果您的企业是一家初创企业,那么投资资源购买可伸缩的数据库是没有意义的。一旦您的应用程序达到临界质量并期望流量大增,您就可以这样做。
以下是一些需要数据库可伸缩性的场景:
您的应用程序已过时,您希望迁移到云系统
您的应用程序遇到高负载
你的申请必须符合规定
您需要一个平衡的工作负载,可以服务于世界各地的用户
数据库扩展解决方案
1.缓存数据库查询
提高数据库负载处理能力的最直接的方法之一是缓存数据库查询。通常,一个应用程序只有少数几个查询构成了请求的大部分。您可以缓存这样的查询,以便将来从缓存中读取这些请求。这就消除了每次发出这种常见请求时都从数据库中获取数据的需要。用户可以快速得到所需的数据。这样,缓存有助于提高数据库的性能。
amazonlasticache是一个缓存服务,可以帮助您缓存数据库。使用amazonlasticache,您可以使用内存缓存进行扩展。amazonlasticache支持实时用例。以下是Amazon ElastiCache的理想用例:
-
游戏排行榜
-
分析
-
流动
2.数据库索引
扩展数据库并不总是意味着在现有设置中添加更多的数据库。有时,通过优化当前数据库,您可以在一定程度上进行扩展。这就是数据库索引发挥作用的地方。使用数据库索引技术,您可以构造数据以提高从数据库表中检索数据的速度。
3.数据复制
数据复制是一种策略,用于制作相同的数据库副本以创建其他计算机。复制策略有助于应对峰值负载。当数据被复制时,查询可以分布在多个数据库中,这反过来又会减少单个数据库的负载。此外,在不太可能的情况下,存储设备发生故障,复制的数据将派上用场,系统仍将完全正常工作。
4.切分
扩展数据库的主要瓶颈之一是设计不当的数据库。为了确保您不会遇到这个瓶颈,首先必须为正确的业务应用程序选择正确的数据库。例如:
银行应该选择关系型数据库管理系统来保证其结构化数据的ACID(原子性、一致性、隔离性、持久性)
一个在线多人游戏可以依赖于键值无需SQL数据库
无论您选择哪个数据库,都要确保它具有分片特性。分片意味着将数据库的一大块分割成更小的数据块,称为碎片,可以存储在多个数据库中。分片有两种类型:
-
水平分片
-
垂直分片
当数据库查询返回数据行的子集时,水平分片被证明是有效的。这些行通常被组合在一起。例如,过滤数据的查询基于短日期范围。
当数据库查询返回数据列的子集时,垂直分片被证明是有效的。例如,如果一些数据库查询只请求名称,而其他查询只需要城市,那么垂直分片在这种情况下证明是有效的。
碎片有两大优势:
系统的总存储容量与数据库碎片的数量成正比。
如果有一个碎片离线,你仍然可以依靠碎片池来检索和存储你的数据。当一个碎片离线时,整个数据集中只有一部分是不可用的。因此,不会对系统的运行产生重大影响。
结论
数据库是任何应用程序的关键元素。如果你想扩展你的应用程序,你不能不扩展数据库。幸运的是,由于近年来的技术进步,我们拥有了使缩放过程无缝和轻松所需的所有工具。人们可以利用云服务提供商,如Azure、AWS或googlecloud来扩展他们的应用程序。
原文标题:4 Database Scaling Solutions You Need to Know
原文作者:Hiren Dhaduk
原文地址:https://dzone.com/articles/4-database-scaling-solutions-you-need-to-know