NoSQL数据库概述:思想、手段与实践

需积分: 10 2 下载量 197 浏览量 更新于2024-07-21 收藏 2.68MB DOC 举报
本文档是一份关于NoSQL数据库技术的详细笔记,作者以“颜开”的名义编写于2010年2月。NoSQL,即“Not Only SQL”,是一种非关系型数据库的集合,它在处理大规模分布式系统时提供了一种灵活的数据存储方式,与传统的SQL数据库相比,它不遵循ACID(原子性、一致性、隔离性和持久性)模型,而是采取了不同的设计原则。 1. **CAP定理**:这是NoSQL设计的一个核心理论,强调在分布式系统中,不可能同时保证一致性(Consistency)、可用性(Availability)和分区容错性(Partition Tolerance)。为了提高系统的可用性,NoSQL往往牺牲部分一致性。 2. **最终一致性**:NoSQL数据库倾向于实现最终一致性,即数据最终会达到一致,但可能在一段时间内存在不一致状态。这种设计允许系统在面对网络延迟或分区时保持在线服务。 3. **BASE原则**:Base(Basically Available, Soft state, Eventually consistent)是对传统ACID模型的一种扩展,强调系统可以容忍软状态(如不完全同步的状态更新),并最终达到一致。 4. **I/O、RAM和磁带**:文中提到的I/O的五分钟法则反映了对数据库性能的影响,强调了快速读写对于数据库的重要性,而RAM作为临时存储空间,与硬盘相比具有更快的访问速度。硬盘则被视为更慢的长期存储,磁带则用于备份等场景。 5. **Amdahl定律和Gustafson定律**:前者描述了并行计算的局限性,后者则表明增加处理器数量对程序性能提升的影响。这些定律在理解NoSQL数据库如何通过水平扩展来提高性能时具有重要意义。 6. **一致性哈希**:这是一种分布式数据存储算法,用于在节点故障时保持数据分布的均匀性,通过哈希函数将键值对映射到一个环形分布,从而实现快速的节点添加和删除。 7. **其他算法和框架**:包括QuorumNRW、Vectorclock(用于版本控制)、Virtualnode(虚拟节点)、Gossip(用于节点间通信)、Merkletree(用于数据校验)和Paxos(一种共识协议)等,这些都是NoSQL数据库中常用的技术手段。 8. **DHT(分布式哈希表)**:是NoSQL数据库中常见的数据存储结构,通过哈希函数将数据分布在多台服务器上,实现高效的查询。 9. **MapReduce和Hadoop**:提及了MapReduce作为一种数据处理模型,以及Hadoop生态系统中的HBase和Yahoo的PNUTS,展示了NoSQL在大数据处理方面的应用。 10. **Cassandra、BigTable等具体数据库**:文中介绍了Cassandra的特点,如列族存储(ColumnFamily)、SuperColumn和列式存储,以及Google的BigTable和Yahoo的PNUTS的架构和功能。 11. **非云服务竞争者**:除了云服务,文档存储如CouchDB、Riak、MongoDB等也作为NoSQL的代表,提供了键值对、文档或列族存储,适应不同的应用场景。 总结来说,这篇笔记涵盖了NoSQL数据库的核心理论、设计原则、实现技术、分布式算法以及各种具体的NoSQL数据库实例和其在大数据处理、高可用性和性能优化等方面的应用。无论是理解NoSQL的概念,还是技术选型,都能从中获得有价值的信息。