NoSQL 的挑战
NoSQL 最初指的是非 SQL 或非关系型数据库,是一种提供数据存储和检索机制的数据库。该数据的建模方式不同于关系数据库中使用的表格关系。由于各种原因,企业依赖于已经存在数十年的关系数据库技术。关系数据库经常支持长期运行的关键任务应用程序,这些数据库具有强大的技术和专家支持。然而,随着新的大数据用例和应用程序的发展,企业正在转向 NoSQL 数据库技术来满足他们的需求。
与传统的关系数据库相比,NoSQL 数据库提供了更灵活的数据模型、水平可扩展性和更高的性能。然而,这些优势伴随着某些 NoSQL 数据库问题。
NoSQL 的挑战:
- 应用程序中的备份一致:确定跨副本的更改顺序,这对于选择哪些值应该组成快照至关重要,这是基于仲裁的复制系统中的一个典型困难。例如,确定对同一数据库对象同时到达两个不同节点的两个写入请求之间的严格排序是具有挑战性的。由于没有排序,在任何给定时间确定数据库项目的最新值是困难的。
- 成熟度: NoSQL 支持者会同意,不断增长的需求将不可避免地导致过时,但 RDBMS 成熟度周期似乎更安全。 RDBMS 已经存在了几十年,因此更加可靠和实用。许多 NoSQL 替代方案仍处于预生产阶段,尚未实现其所有基本功能。
- 备份和恢复期间的数据库和节点故障:节点故障在 NoSQL 数据库中很常见,因为它们旨在增长到数百个节点。因此,任何备份方法都必须能够考虑来自宕机节点的数据收集故障及其对仲裁一致性的影响。另一方面,恢复必须考虑失败的集群节点并相应地修改数据重新填充。
- 分析和商业智能: NoSQL 的创建是为了满足 Web 2.0 应用程序的需求,因此,它的所有特性都面向该目标。另一方面,其他商业系统需要超越插入-读取-更新-删除周期。即使是最基本的查询也需要丰富的编程知识,而集成的 BI 工具是不够的。
- 性能:在性能(RPO 和 RTO)方面考虑与以前相同的系统。因为不可能将数据库文件处理并行化超过某个点,如果每行处理缓慢,就不可能在 RTO 方面实现客户 SLA。由于相同的并行化限制,恢复过程也会受到影响。这意味着对 1000 万个文件的 1000 亿行的备份和恢复处理必须快速,并且解决方案必须显着减少每行和每文件的数据库文件处理。
- 数据完整性:在块级别验证数据完整性是分布式 NoSQL 数据库的另一个问题。校验和适用于扩展数据库,因为恢复的数据在物理上与备份数据相同。横向扩展数据库中恢复的数据在语义上与备份数据相当,但在物理上并不完全相同。在这种情况下,我们需要想出一种独特的方法来识别恢复数据和备份数据之间的语义等价性,这将使我们能够发现整个备份和恢复过程中可能出现的数据损坏问题。
- 专业知识:尽管全世界有数百万开发人员,但他们中的大多数人都熟悉 RDBMS 架构。所有 NoSQL 开发人员都应被视为处于职业生涯的早期阶段,尚未达到专家级。虽然这个问题最终会得到解决,但现在很难选择正确的开发人员。
- 重复数据删除:在传统的数据库系统中,重复数据删除很简单——具有相同位值的块。现代 NoSQL 数据库存储系统中的数据副本并不总是相同的,因为节点之间更改的排序和刷新各不相同,这给重复数据删除带来了新的挑战。
由于提高了能力/容量和经济性,NoSQL 数据库变得越来越流行。但是,开发人员应谨慎行事并注意系统的实际限制。