关于NOSQL

现在这个时代是key-value百花齐放的时代,从最早的Berkeley DB,Berkeley DB是一个嵌入式数据库,也就是一个文件系统,不过具有强大的事务功能,而且支持多语言,java版被称为JE,支持Bean实体,优点简单依赖小,缺点不支持分布式,实体所占空间比较大。个人觉得比较适合移动设备类开发,手机,小型应运网站。(体外话,MYSQL就有一种数据引擎是Berkeley DB)

mongoDB带动NOSQL火起来的一个重要KEY-VALUE数据库,是非关系数据库当中功能最丰富,高性能、易部署、易使用,存储数据非常方便。
支持动态查询。
支持完全索引,包含内部对象。
支持查询。
支持复制和故障恢复。
使用高效的二进制数据存储,包括大型对象(如视频等)。
自动处理碎片,以支持云计算层次的扩展性
支持RUBY,PYTHON,JAVA,C++,PHP等多种语言。
文件存储格式为BSON(一种JSON的扩展)
可通过网络访问
MongoDB服务端可运行在Linux、Windows或OS X平台,支持32位和64位应用,默认端口为27017。推荐运行在64位平台,因为MongoDB
最大局限性是
在32位模式运行时支持的最大文件尺寸为2GB。

Redis基于内存但其又有数据持久化功能,仿佛就是来化身memcached的,很多开发者都认为Redis不可能比Memcached快,Memcached完全基于内存,而Redis具有持久化保存特性,即使是异步的,Redis也不可能比Memcached快。但是测试结果基本是Redis占绝对优势。而且Redis 2.0也增加了VM特性。让Redis数据容量突破了物理内存的限制。并实现了数据冷热分离。值得WEB2.0大型网站开发者期待。

还有由于Facebook而火起来的Cassandra,不过Twitter停用Cassandra而使其变得扑朔迷离,所以非常重要数据还是小心为妙,除非你做好了所有事务数据备份恢复机制。

还有随着‘云’而火起来的Hadoop的HBase也值得研究下。

还有很多。。。哎。。。神马都是浮云,HOHO
### HBase 在 NoSQL 中的应用和特点 #### ### 数据模型与架构特性 HBase 是一个分布式的、面向列的 NoSQL 数据库,其设计灵感来源于 Google 的 Bigtable。它基于 HDFS 构建存储层,支持大规模数据的高并发随机读写操作。HBase 的数据模型采用多维键值对形式,通过行键(RowKey)、列族(Column Family)和列限定符(Qualifier)来定位数据单元格[^3]。这种灵活的数据结构允许动态添加列,并且不会因为空列的存在而浪费存储空间[^4]。 ```java // 示例:HBase 表的插入操作 Put put = new Put(Bytes.toBytes("row1")); put.addColumn(Bytes.toBytes("cf"), Bytes.toBytes("name"), Bytes.toBytes("John Doe")); table.put(put); ``` #### ### 实时查询与高性能访问 HBase 适用于需要低延迟读写访问的场景,例如实时日志分析、用户行为追踪等。相比传统关系型数据库,HBase 提供了更强的横向扩展能力,能够轻松处理 PB 级别的数据量[^3]。此外,HBase 支持版本控制机制,每个单元格可以保存多个时间戳版本的数据,便于历史数据回溯[^1]。 #### ### 分布式可扩展性 HBase 利用底层 HDFS 和 ZooKeeper 实现了自动分区和负载均衡,RegionServer 负责管理数据分片,并在集群扩容时自动迁移和分裂 Region。ZooKeeper 则负责集群状态协调、元数据维护以及故障恢复[^3]。这种架构使得 HBase 可以通过简单地增加节点来线性提升系统容量和性能。 #### ### 与其他 NoSQL 数据库的比较 虽然 HBase 是一种流行的列式 NoSQL 数据库,但在某些特定领域并不具备绝对优势。例如,在图计算或文档型数据处理方面,图数据库(如 Neo4j)和文档数据库(如 MongoDB)可能更加适合。HBase 的强项在于海量数据下的随机访问能力和良好的水平扩展性,而不是复杂的事务处理或聚合分析任务[^2]。 #### ### 应用场景 HBase 常用于以下典型应用场景: - **实时数据分析**:结合 Kafka 或 Flink 实现实时流数据写入与查询。 - **事件溯源与日志存储**:记录系统的每一次变更,便于审计与回滚。 - **推荐系统与用户画像**:存储并快速检索用户行为数据,为个性化推荐提供支撑。 - **物联网(IoT)数据管理**:处理传感器上报的海量时间序列数据。 ```java // 示例:HBase 扫描操作 Scan scan = new Scan(); scan.addColumn(Bytes.toBytes("cf"), Bytes.toBytes("age")); ResultScanner results = table.getScanner(scan); for (Result result : results) { System.out.println("Row: " + Bytes.toString(result.getRow())); } ``` ####
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值