在HBase中,当我在列中存储值或使用值本身作为列名时,性能或任何其他方面是否有任何差异?
例如:
<table>:<Column-Family>:<Column-Name>=<value>
vs
<table>:<Column-Family>:<Column-Name>:<value>=1
在什么情况下建议使用什么?
答案 0 :(得分:0)
这取决于数据以及您需要从中提取的内容!如果您的数据库中包含设备列表及其相关传感器,请执行以下操作:
ID - 标签 - 传感器
1 - K200 - 1,2
2 - K300 - 1,2,3ID - 标签 - SENSOR_1 - SENSOR_2 - SENSOR_3
1 - K200 - 1 - 1 - 0
2 - K300 - 1 - 1 - 1
在我看来,第一个设计更好,你不必存储0不像第二个设计,但它取决于你需要提取什么信息。如果您只想检查哪个设备正在集成SENSOR TYPE 1,那么第二个设计会更好,因为您要读取每一行的列,而第一个设计则需要处理数据...但如果您'只是询问每种设备可用的传感器类型,第一种设计更好......尝试从数据中列出您需要知道的内容,根据这一点,您可以考虑设计!
答案 1 :(得分:0)
这取决于桌子的设计和必要性,更通用的目的
<table>:<Column-Family>:<Column-Name>=<value>
更常用于通用存储,但在某些情况下
<table>:<Column-Family>:<Column-Name>:<value>=1
可以更适合这样的场景:
- 您需要将值与列名称一起过滤
- 您希望拥有一个具有多个值的列,并避免序列化
- 您需要经常非常快地检查列是否具有特定值
有更多的案例可以从后来的设计中获益,但又一次又回到了你需要的地方