数据库架构设计与迁移:从 RDBMS 到 Hadoop/NoSQL
1. Lambda 架构与复杂性隔离
Lambda 架构支持一种名为“复杂性隔离”的特性,它将处理复杂性推到结果为临时的层。速度层相较于批处理层或服务层,涉及更多的处理复杂性,而速度层的结果是临时的,这在理念上与该架构相契合。此外,若出现任何数据或处理问题,速度层的全部内容可以轻松丢弃并快速重建。
2. 向 Hadoop/NoSQL 过渡
过渡意味着将现有的应用程序(可能使用关系型数据库管理系统 RDBMS 进行数据存储和处理)迁移到基于 Hadoop/NoSQL 的环境。可以利用之前描述的重新架构技术,但还涉及一个额外步骤:数据迁移。而且,新系统不一定要使用 Lambda 架构,可以根据功能需求和数据量选择合适的 NoSQL 数据库,让应用程序前端接口直接写入。当然,要确保前端能以 NoSQL 数据库可接受的格式写入和读取数据。
3. 选择合适的 NoSQL 数据库
3.1 数据类型
需要考虑计划在 NoSQL 数据库中收集和存储的数据类型。与 RDBMS 不同,NoSQL 数据库没有统一的数据存储方式,甚至不使用相同的数据存储模型。常见的 NoSQL 数据库类型有:
- 键值存储 :将数据存储为键值对,并使用哈希表来索引和管理数据,如 Riak 和 Amazon DynamoDB。
- 文档存储 :文档是一组键值对,数据库系统将数据作为文档存储在数据库(文档集合)中,例如 MongoDB 和 CouchDB。
- 列