文档章节

多个索引的内存数据结构guavaTable.md

北京起航
 北京起航
发布于 2015/06/11 19:57
字数 299
阅读 16
收藏 0

多个索引的数据结构 用guavaTable.md
开发中经常遇到多列索引的内存数据结构,原来的做法是 用 Map<key100, Map<key200, Object>>来实现,稍复杂[写着不方便,用着也不方便;代码也不好理解]。 其实guava 有封装好的 Table 集合类型,来满足次业务场景。 Table支持“row”和“column”,而且提供多种视图。

Table<Integer, Integer, String> table = HashBasedTable.create();
       
table.put(1, 1, "11");
table.get(1,1);

项目代码

/**
* key=用户id ,value = 多列索引 table     key1:活动id key2:是指标id
*/
private LoadingCache<String, Table<String, String, ActivityLatestData>> dataCache;
dataCache = CacheBuilder.newBuilder().maximumSize(5000).build(
    new CacheLoader<String, Table<String, String, ActivityLatestData>>() {
        public Table<String, String, ActivityLatestData> load(String userId) throws Exception {
            return getUserTableData(userId);
        }
    }
);

table初始化

private Table<String, String, ActivityLatestData> getUserTableData(String userId) {
 Table<String, String, ActivityLatestData> table = HashBasedTable.create();
        IActivityLatestDataService userService =PointApp.getService(IActivityLatestDataService.class);
        ActivityLatestData pojo = new ActivityLatestData();
        pojo.setUserId(userId);
        List<ActivityLatestData> datas = userService.getByPojo(pojo);
        for (ActivityLatestData data : datas) {
            table.put(data.getActivityId(), data.getMetricId(), data);
        }
        return table;
}
```
获取数据

```
ActivityLatestData latestData = table.get(activity.getId(), metricId);
```

© 著作权归作者所有

共有 人打赏支持
北京起航
粉丝 55
博文 52
码字总数 29304
作品 0
海淀
架构师
DTCC2013:eXtremeDB内存数据库性能优化

【IT168 现场报道】2013年4月18-20日,第四届中国数据库技术大会(DTCC 2013)在北京福朋喜来登酒店拉开序幕。在为期三天的会议中,大会将围绕大数据应用、数据架构、数据管理(数据治理)、传统...

it168网站
2013/04/18
0
0
高维向量快速检索方法Locality Sensitive Hashing之二算法改进

位置敏感哈希是当前高维空间中近似近邻(Approximate Near Neighbor, ANN)搜索速度最快的解决方法,LSH在汉明空间进行搜索,E2LSH是对LSH的改进之一,在欧氏空间进行搜索。与基于树的索引方法...

holygao
06/28
0
0
存储与索引------《Designing Data-Intensive Applications》读书笔记3

在上一篇的笔记之中,我们讨论了数据模型和查询语言。在第三章之中我们来聊一聊不同的数据引擎内部是如何实现存储和检索的,以及不同设计之间的折中与妥协。 1.键值对数据库 键值对数据库是数...

LeeHappen
2017/12/26
0
0
用Golang写一个搜索引擎(0x08)

我觉得这个标题应该改改了,我写下来其实是告诉大家怎么写一个搜索引擎,并没有涉及太多的Golang的东西,我觉得这样也挺好,熟悉了原理,用什么实现其实并不重要了,而且说说原理比说代码更实...

wyh817
2016/05/05
108
0
oracle逻辑结构与物理结构

逻辑结构: 数据概念上的组织,如数据库,表 物理结构: 实际数据的存储单元,如文件和数据块 逻辑存储结构包括表空间,段,区,数据块。 表空间是最大的逻辑单位,一个数据库可以有多个表空...

南北024
2011/06/30
376
0

没有更多内容

加载失败,请刷新页面

加载更多

Java异常处理最佳实践

总结一些Java异常的处理原则 Java异常处理最佳实践 不要忘记关闭资源 在finally里关闭资源 public void readFile() { FileInputStream fileInputStream = null; File file = new Fil...

yysue
53分钟前
0
0
00.编译OpenJDK-8u40的整个过程

前言 历经2天的折腾总算把OpenJDK给编译成功了,要说为啥搞这个,还得从面试说起,最近出去面试经常被问到JVM的相关东西,总感觉自己以前学的太浅薄,所以回来就打算深入学习,目标把《深入理...

凌晨一点
今天
4
0
python: 一些关于元组的碎碎念

初始化元组的时候,尤其是元组里面只有一个元素的时候,会出现一些很蛋疼的情况: def checkContentAndType(obj): print(obj) print(type(obj))if __name__=="__main__": tu...

Oh_really
昨天
6
2
jvm crash分析工具

介绍一款非常好用的jvm crash分析工具,当jvm挂掉时,会产生hs_err_pid.log。里面记录了jvm当时的运行状态以及错误信息,但是内容量比较庞大,不好分析。所以我们要借助工具来帮我们。 Cras...

xpbob
昨天
124
0
Qt编写自定义控件属性设计器

以前做.NET开发中,.NET直接就集成了属性设计器,VS不愧是宇宙第一IDE,你能够想到的都给你封装好了,用起来不要太爽!因为项目需要自从全面转Qt开发已经6年有余,在工业控制领域,有一些应用...

飞扬青云
昨天
5
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部