Aerospike 数据建模和查询
Aerospike data modeling and querying
假设我在 JAVA
中有以下模型
class Shape {
String type;
String color;
String size;
}
并假设我有以下基于上述模型的数据。
Triangle, Blue, Small
Triangle, Red, Large
Circle, Blue, Small
Circle, Blue, Medium
Square, Green, Medium
Star, Blue, Large
我想回答以下问题
Given the type Circle how many unique colors?
Answer: 1
Given the type Circle how many unique sizes?
Answer: 2
Given the color Blue how many unique shapes?
Answer: 2
Given the color Blue how many unique sizes?
Answer: 3
Given the size Small how many unique shapes?
Answer: 2
Given the size Small how many unique colors?
Answer: 1
我想知道我是否应该按照以下方式对其建模...
set: shapes -> key: type -> bin(s): list of colors, list of sizes
set: colors -> key: color -> bin(s): list of shapes, list of sizes
set: sizes -> key: size -> bin(s): list of shapes, list of colors
或者有更好的方法吗?如果我这样做,我需要 3 倍的存储空间。
我还希望每组都有数十亿个条目。顺便说一句,该模型已被编辑以保护无辜的代码;)
NoSQL 中的数据建模始终与您计划如何检索数据、以何种吞吐量和以何种延迟检索数据有关。
有几种方法可以对此数据建模;最简单的是模仿 class 结构,其中每个字段都变成一个 Bin。您可以在每个 bin 上定义二级索引并使用聚合查询来回答您的问题(以上)。
但这只是一种方式;您可能需要使用不同的数据模型来满足延迟和吞吐量的因素。
假设我在 JAVA
中有以下模型class Shape {
String type;
String color;
String size;
}
并假设我有以下基于上述模型的数据。
Triangle, Blue, Small
Triangle, Red, Large
Circle, Blue, Small
Circle, Blue, Medium
Square, Green, Medium
Star, Blue, Large
我想回答以下问题
Given the type Circle how many unique colors?
Answer: 1
Given the type Circle how many unique sizes?
Answer: 2
Given the color Blue how many unique shapes?
Answer: 2
Given the color Blue how many unique sizes?
Answer: 3
Given the size Small how many unique shapes?
Answer: 2
Given the size Small how many unique colors?
Answer: 1
我想知道我是否应该按照以下方式对其建模...
set: shapes -> key: type -> bin(s): list of colors, list of sizes
set: colors -> key: color -> bin(s): list of shapes, list of sizes
set: sizes -> key: size -> bin(s): list of shapes, list of colors
或者有更好的方法吗?如果我这样做,我需要 3 倍的存储空间。
我还希望每组都有数十亿个条目。顺便说一句,该模型已被编辑以保护无辜的代码;)
NoSQL 中的数据建模始终与您计划如何检索数据、以何种吞吐量和以何种延迟检索数据有关。
有几种方法可以对此数据建模;最简单的是模仿 class 结构,其中每个字段都变成一个 Bin。您可以在每个 bin 上定义二级索引并使用聚合查询来回答您的问题(以上)。
但这只是一种方式;您可能需要使用不同的数据模型来满足延迟和吞吐量的因素。