hbase建索引的两种方式

转载自http://blog.csdn.net/ryantotti/article/details/13295325

在二级索引的实现技术上一般有几个方案:

1.      表索引

使用单独的hbase表存储索引数据,业务表的索引列值做为索引表的rowkey,业务表的rowkey做为索引表的qualifier或value。

问题:对数据更新性能影响较大;无法保证一致性;Client查询需要2次RPC(先索引表再数据表)。

2.      列索引

与业务表使用相同表,使用单独列族存储索引,用户数据列值做为索引列族的Qualifier,用户数据Qualifier做为索引列族的列值。适用于单行有上百万Qualifier的数据模型,如网盘应用中网盘ID做为rowkey,网盘的目录元数据都存储在一个hbase row内。(facebook消息模型也是此方案)

可保证事务性。

问题:仅适用于特定的应用场景。

时间: 2024-11-08 14:10:07

hbase建索引的两种方式的相关文章

java-创建线程的两种方式

1. 继承Thread类 定义类继承Thread类. 覆盖run方法. 实例化子类对象,调用start()方法,从而调用run方法. 2.实现Runnable接口 定义类实现Runnable接口. 覆盖接口中的run方法,将线程的任务代码封装到run方法中. 通过Thread类创建线程对象,并将Runnable接口的子类对象作为Thread类的构造函数的参数.因为线程对象的任务封装在Runnable接口子类对象的run方法中,在线程创建时必须明确要运行的任务. 调用线程对象的start()方法.

单击获取索引的两种方式

window.onload=function(){ var li=document.getElementsByTagName("li"); for(var i=0;i<li.length;i++){ li[i].index=i; li[i].onclick=function(){ console.info("您单击了",this.index+1); } } } window.onload=function(){ var li=document.getEleme

外网登陆SAP的两种方式

1.用SAP router实现从外网登录SAP服务器(方式一) 自已搭建的局域网结构如下: SAP服务器IP: 192.168.0.2, 路由器中设为DMZ区 在SAP服务器上启用SAP router,即可 SAP router的搭建非常简单: 1.找到SAP的安装目录(例如D:\usr\sap\ECC\DVEBMGS00\exe\),可以看到saprouter.exe文件 2. 用记事本建立一个名为SAPROUTTAB的文件(没有扩展名), 输入 P * * * 后保存 3.打开c:\syst

Android开发之使用sqlite3工具操作数据库的两种方式

使用 sqlite3 工具操作数据库的两种方式 请尊重他人的劳动成果,转载请注明出处:Android开发之使用sqlite3工具操作数据库的两种方式 http://blog.csdn.net/fengyuzhengfan/article/details/40193123 在Android SDK的tools目录下提供了一"sqlite3.exe工具,它是一个简单的SQLite数据库管理工具,类似于MySQL提供的命令行窗口在有些时候,开发者利用该工具来査询. 管理数据库. 下面介绍两种方式: 第

合并两个数组的两种方式的异同

本文讨论合并数组的两种方式:$a+$b , array_merge($a,$b) 操作符+,在前一个数的基础上插入后一个数组,如果有相同的抛弃,而array_merge 是在前一个参数基础上插入后一个参数,如果有相同用的key 用后一个覆盖.实例如下: php > $a = array('a'=>'1','b'=>'2','c'=>'3'); php > $b = array('c'=>3,'d'=>'4','e'=>'5'); php > $c =

CSharpGL(18)分别处理glDrawArrays()和glDrawElements()两种方式下的拾取(ColorCodedPicking)

CSharpGL(18)分别处理glDrawArrays()和glDrawElements()两种方式下的拾取(ColorCodedPicking) 我在(Modern OpenGL用Shader拾取VBO内单一图元的思路和实现)记录了基于Color-Coded-Picking的拾取方法. 最近在整理CSharpGL时发现了一个问题:我只解决了用glDrawArrays();渲染时的拾取问题.如果是用glDrawElements();进行渲染,就会得到错误的图元. 本文就彻底解决这个拾取的问题.

jQuery 获取DOM节点的两种方式

jQuery中包裹后的DOM对象实际上是一个数组,要获得纯粹的DOM对象可以有两种方式: 1.使用数组索引方式访问,例如: var dom = $(dom)[0]; 2.使用函数get()访问,例如: var dom = $(dom).get(0); get()函数中的参数为索引号. 3.示例 var div = document.createElement("DIV"); div.innerText = "TEST IS OK!"; document.body.a

【分享】有效创建Oracle dblink的两种方式

两台不同的数据库服务器,从一台数据库服务器的一个用户读取另一台数据库服务器下的某个用户的数据,这个时候可以使用dblink. 其实dblink和数据库中的view差不多,建dblink的时候需要知道待读取数据库的ip地址,ssid以及数据库用户名和密码. 创建可以采用两种方式 步骤/方法 已经配置本地服务 以下是引用片段: create public database link fwq12 connect to fzept identified by neu using ‘fjept’ CREA

Unity知识三:两种方式实现切水果的刀痕

Unity作为游戏开发平台之一,还是有很多实用的小技巧的,今天来学习一下怎样用两种方式来显示切水果游戏中的刀痕: 1.正常显示下的刀痕: 什么叫正常显示下的呢?我们所接触过的切水果游戏一般都是2D游戏,那我们知道,2D游戏可以用Unity直接来做,还可以使用NGUI.UGUI或者其他方法通过UI来实现. 所以我们第一种方法就是不借助UI来做. 首先来看看我们刀痕的素材:(需要的同学可以右键另存.^_^) 打开Unity: 新建一个空游戏体,命名为"BackGround",然后在组件面板