首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Gemfire组合键(pojo)作为gemfire密钥

Gemfire组合键(pojo)作为gemfire密钥
EN

Stack Overflow用户
提问于 2017-10-03 18:37:49
回答 1查看 452关注 0票数 0

我有以下类型的数据进入我的数据库,并希望存储到Gemfire。

代码语言:javascript
复制
+------------------------------+--------------------------------+----------------------------------------+----------------------------------+----------------------------------+------------------------------------+-----------------------------------+------------------------------+------------------------+----------------------------+-------------------------------------+--+
| A                            | B                              | C                                      | D                                | E                                | F                                  | G                                 | H                            | I                      | J                          | date                                |
+------------------------------+--------------------------------+----------------------------------------+----------------------------------+----------------------------------+------------------------------------+-----------------------------------+------------------------------+------------------------+----------------------------+-------------------------------------+--+
| VK                           | XXXXXXXXXXXXXXXX               | YYY                                    | VBGFD                            | 9                                | 193.83                             | 9                                 | T                            |                        | False                      | 2017-08-25                          |
| VK                           | XXXXXXXXXXXXXXXX               | YYY                                    | VBGFD                            | 25.22                            | 193.83                             | 9                                 | T                            |                        | False                      | 2017-08-25                          |
| VK                           | XXXXXXXXXXXXXXXX               | YYY                                    | VBGFD                            | 9                                | 112.23                             | 9                                 | T                            |                        | False                      | 2017-08-25                          |
| VK                           | XXXXXXXXXXXXXXXX               | YYY                                    | VBGFD                            | NULL                             | 89.98                              | NULL                              | T                            |                        | False                      | 2017-08-25                          |
+------------------------------+--------------------------------+----------------------------------------+----------------------------------+----------------------------------+------------------------------------+-----------------------------------+------------------------------+------------------------+----------------------------+-------------------------------------+--+

4 rows selected (2.248 seconds)

1)您可以看到数据是重复的,任何一个值不同的列都会被认为是唯一的行。

2)我不能使用任何列作为Gemfire键来覆盖值(因为数据是重复的)

我有以下两种可能的解决办法:

方法1

我可以使用复合键( pojo )作为gemfire键,但问题是我需要使用相同的pojo作为键和值(根据数据)

代码语言:javascript
复制
package  data;
Class KEY{
private String A;
private String B ;
private String C ;
private String D ;
private String E ;
private String F;
private String G ;
private String H ;
private String I ;
private String J ;
private String  date ;
}

package  data
Class Value{
private String A;
private String B ;
private String C ;
private String D ;
private String E ;
private String F;
private String G ;
private String H ;
private String I ;
private String J ;
private String  date ;
}


put --key=(KEY) --value=(Value) --region=/region1 --key-class=data.KEY --value-class=data.Value

这种方法的问题是,它将使我在区域中的数据大小翻倍,并且我的加载程序开始抛出内存错误。

方法2

将自动增量id创建到数据库中并使用此id作为键,但是我需要创建索引,增量id不会是我的sql的一部分。

我的疑问

代码语言:javascript
复制
query --query='select a,b,c,d,e,f,g,h,i,j,date from / myRegion where a=VK and b=XXXXXXXXXXXXXXXX and c=YYY and F=193.83'

我想知道有没有人遇到过同样的情况?

更新:我决定使用自动增量id (Long)作为键,使用pojo作为值。计划在列上创建范围索引。

EN

回答 1

Stack Overflow用户

发布于 2017-10-03 19:09:04

您对数据有什么样的访问模式?如果您只打算使用OQL或函数查询数据,我建议生成一个随机密钥,并让值成为您的数据。

我认为把所有数据保存在你的钥匙里没有任何价值。如果要进行查找(使用region.get( key )),则需要所有数据来创建密钥,此时get()将没有任何价值。

(最新情况)

在进行查找时,您的键应该具有尽可能少的可用字段数。由于在查询中使用的是a、b、c和d,所以我建议您的密钥由a、b、c、d组成,而您的值包含其余的字段。此时您可以只做一个region.get(键),不需要编写查询。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46551278

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档