yunong
by yunong

Categories

  • hbase

Tags

  • 数据库

目录

Table of Contents

  1. 目录
    1. 维度

hbase作为一种非关系型数据库系统,提供海量存储的同时想要了解hbase,可以从非关系型数据库系统的各个维度进行出发进行研究。

维度

  • 数据模型

    数据有多种存储方式,key-value、文档存储、半结构化列式存储。用户应该如何存储数据?

  • 存储模型

    内存还是持久化? 内存模式怎么保证数据不丢失? 持久化存储是否影响访问?

  • 一致性模型

    严格一致性or最终一致性? 如何权衡利弊?

  • 物理模型

    分布式模式(distribut) or 单机模式(standlone) ? 是单机运行还是运行在多台机器上? 如何做分布式 ?

  • 读or写性能

    读多写少? 读写相当? 写多读少? 有些系统可能只对一种支持的特别好

  • 辅助索引

    辅助索引支持用户按不同的字段和排序方式来访问表。如果存储系统不支持,用户的应用可以自己应对或者自己模拟辅助索引?

  • 故障处理

    机器会奔溃是一个客观存在的问题,如何处理故障,故障处理完后,是否可以正常工作?

  • 压缩

    当用户需要存储TB级的数据时,尤其当这些数据差异性很小或由可读性文本组成时,压缩会带来很好的效果,能节省大量的原始数据存储。有可选择的压缩组件? 又有哪些压缩算法可用?

  • 负载均衡

    对读写有高吞吐的需求,就要考虑配置一套能够随着负载变化自动均衡处理能力的系统。

  • 原子操作的读-修改-写

    RDBMS提供很多类似的操作,但是在分布式系统中较难实现,这些操作可以帮助用户避免多线程造成的资源竞争,有了这个操作,在设计系统的时候有效降低客户端的复杂度。

  • 加锁、等待和死锁

    复杂的事务处理,如2PC,会增加多个客户端竞争的同一个资源的可能性,最糟糕的情况是死锁,这种情况很难解决。系统支持哪种锁模型? 这种锁模型能否避免等待和死锁?

没有硬性的说RDBMS不能很好的解决问题,NoSql就能完美解决问题。从实际业务场景和需求选择最合适的维度,来进行系统设计,也是日常所面临的抉择。接下来日程会随着这些维度来进行hbase的探究