什么是nosql

NoSQL与HBase详解
本文介绍了NoSQL数据库的概念及其解决传统关系型数据库所面临的挑战,并详细解释了HBase这一NoSQL数据库的具体特点和应用场景。

什么是nosql

NoSQL(NoSQL = Not Only SQL),意思是不仅仅是SQL的扩展,一般指的是非关系型的数据库。

随着互联网web2.0网站的兴起,传统的关系数据库在应付web2.0网站,特别是超大规模和高并发的SNS类型的web2.0纯动态网站已经显得力不从心,传统的电信行业动辍就千万甚至上亿的数据,甚至有客户提出需要存储相关的日志数据50年以上,暴露了很多难以克服的问题,而非关系型的数据库则由于其本身的特点得到了非常迅速的发展。

关系型数据库难以克服的问题:

  • 不能很好处理对数据库高并发读写的需求
  • 不能很好处理对海量数据的高效率存储和访问的需求
  • 不能很好处理对数据库的高可扩展性和高可用性的需求

为什么使用nosql

SQL语言和关系型数据库(MySQL、PostgreSQL、Oracle等)是通用的数据解决方案,占有绝大多数的市场。但是就像上面提到的,它有很多难以解决的问题。不过在最近兴起的NoSQL运动中,涌现出一批具备高可用性、支持线性扩展、支持Map/Reduce操作等特性的数据产品,它们具有如下特性:

  • 频繁的写入操作、相对较少的读取统计信息的操作
  • 海量数据(如数据仓库中需要分析的数据)适合存储在一个结构松散、分布式的文件存储系统中
  • 存储二进制文件(如mp3或者pdf文档)并且能够直接为用户的浏览器提供下载功能

使用这些数据产品并不是要取代原有的数据产品,而是为不同的应用场景提供更多的选择。也就是说,在一些特定的情况下如果是关系型的数据库解决不了的问题,那么就可以考虑使用nosql,而不是说完全将应用移植到nosql上,毕竟适合才是最好的。

现在流行的nosql

下面对现在的nosql进行了整理,其中包括各种nosql的官方网站。

15个nosql数据库

HBase是什么

HBase是Apache Hadoop中的一个子项目,Hbase依托于Hadoop的HDFS作为最基本存储基础单元,通过使用hadoop的DFS工具就可以看到这些这些数据 存储文件夹的结构,还可以通过Map/Reduce的框架(算法)对HBase进行操作,如下图所示:

HBase在产品中还包含了Jetty,在HBase启动时采用嵌入式的方式来启动Jetty,因此可以通过web界面对HBase进行管理和查看当前运行的一些状态,非常轻巧方便。

HBase是Apache Hadoop中的一个子项目,现已成为Apache的顶级项目。

HBase是Google Bigtable(基于Google File System)的开源山寨版本。

为什么采用HBase

HBase 不同于一般的关系数据库,它是一个适合于非结构化数据存储的数据库.所谓非结构化数据存储就是说HBase是基于列的而不是基于行的模式,这样方便读写你的大数据内容。

HBase是介于Map Entry(key & value)和DB Row之间的一种数据存储方式。就点有点类似于现在流行的Memcache,但不仅仅是简单的一个key对应一个 value,你很可能需要存储多个属性的数据结构,但没有传统数据库表中那么多的关联关系,这就是所谓的松散数据。

简单来说,你在HBase中的表创建的可以看做是一张很大的表,而这个表的属性可以根据需求去动态增加,在HBase中没有表与表之间关联查询。你只需要 告诉你的数据存储到Hbase的那个column families 就可以了,不需要指定它的具体类型:char,varchar,int,tinyint,text等等。但是你需要注意HBase中不包含事务此类的功能。

Apache HBase 和Google Bigtable 有非常相似的地方,一个数据行拥有一个可选择的键和任意数量的列。表是疏松的存储的,因此用户可以给行定义各种不同的列,对于这样的功能在大项目中非常实用,可以简化设计和升级的成本。

 

 

http://www.cnblogs.com/skyme/archive/2012/07/25/2608310.html

 

 

 

NoSQL数据库是一种非关系型的数据库管理系统,旨在提供一种比传统关系型数据库更灵活、更具可扩展性的数据存储解决方案。它特别适用于处理大规模数据集和实时Web应用程序[^1]。传统的关系型数据库不同,NoSQL数据库不依赖于固定模式的表格结构,并且通常不支持JOIN操作,也不严格遵循ACID(原子性、一致性、隔离性、持久性)属性。 NoSQL数据库采用的数据模型通常是键/值对、文档、列族等形式之一。这些数据模型允许存储和查询复杂的数据结构,同时提供了更高的灵活性和分布式处理能力[^2]。由于其设计上的特点,NoSQL数据库能够轻松地进行水平扩展,这意味着可以通过增加更多的服务器来提高性能和容量,而不是升级单个服务器的硬件规格。 在大数据时代背景下,NoSQL数据库还支持MapReduce风格的编程方法,这使得它们非常适合用来处理大量的非结构化或半结构化的数据。随着互联网服务的发展,对于高并发读写访问的需求日益增长,NoSQL数据库以其特有的优势满足了这类需求,在许多现代的应用场景中得到了广泛的应用。 ### NoSQL数据库的概念 NoSQL数据库的核心理念是“不仅仅是SQL”,即除了标准的SQL语言之外,还可以使用其他方式来管理和操作数据。这种类型的数据库被设计成可以处理大量分散的数据,并且能够在廉价的商品硬件上运行,从而降低了成本[^1]。 ### NoSQL数据库的作用 - 提供灵活的数据模型以适应多样化的数据类型。 - 支持大规模数据的高效存储快速检索。 - 实现跨多个节点的数据分布,增强系统的可用性和容错能力。 - 优化读写速度,适合需要频繁更新和查询的应用环境。 ### NoSQL数据库的特征 - **灵活性**:没有固定的表结构,可以根据需要动态调整数据格式。 - **可扩展性**:易于通过添加更多机器到集群中来实现横向扩展。 - **高性能**:针对特定的工作负载进行了优化,如高速缓存或者日志记录等。 - **最终一致性**:为了保证高可用性和分区容忍度,可能牺牲了一定程度的一致性。 ```python # 示例代码 - 使用Python字典模拟一个简单的键值存储 no_sql_example = { "user:1001": {"name": "Alice", "email": "alice@example.com"}, "user:1002": {"name": "Bob", "email": "bob@example.com"} } def get_user(user_id): return no_sql_example.get(f"user:{user_id}") print(get_user(1001)) # 输出用户Alice的信息 ``` 以上示例仅演示了一个非常基础的键值对形式的数据存储方式,实际应用中的NoSQL数据库会更加复杂并包含多种功能和服务。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值