Coherence装载数据的研究-PreloadRequest
最近给客户准备培训,看到Coherence可以通过三种方式批量加载数据,分别是:
- Custom application
- InvocableMap - PreloadRequest
- Invocation Service
Custom application的方式简单易懂,基本就是通过put和putAll方法实现,就不再纠结了。但问题是无论是put还是putAll
都是一个串行过程,如果装载大量数据的话,就需要有一种并行机制实现并行装载。
本文对第二种方式InvocableMap做一些研究,PreloadRequest主要是基于一个entry的集合通过Cache Loader进行装载,
其命令主要是:
包含如下特征:
- 装载前必须知道要装载的所有的key值。
- 本身装载的动作通过CacheLoader来实现。
- 装载是并行过程,每个存储节点负责把分布在自己Cache的内容按照key值,从数据库中装载
代码:
Person.java
package dataload; import java.io.Serializable; public class Person implements Serializable { public void setId(String Id) { public String getId() { public void setFirstname(String Firstname) { public String getFirstname() { public void setLastname(String Lastname) { public String getLastname() { public void setAddress(String Address) { public String getAddress() { public Person() { public Person(String sId,String sFirstname,String sLastname,String sAddress) { |
实现CacheLoader的DBCacheStore.java,比较核心的是看load方法
package dataload; import com.tangosol.net.CacheFactory; import com.tangosol.util.InvocableMap; import java.sql.DriverManager; import java.util.Collection; import javax.naming.Context; import java.sql.ResultSet; import java.util.Collections; import javax.naming.NamingException; /** } // ---- accessors ------------------------------------------------------- /** /** Hashtable<String,String> ht = new Hashtable<String,String>(); m_con = ds.getConnection(); return m_con; // ----- CacheStore Interface -------------------------------------------- /** try stmt.setString(1, String.valueOf(oKey)); if (rslt.next()) } System.out.println("=============="+e.getMessage()); //throw ensureRuntimeException(e, "Load failed: key=" + oKey); /** if (load(oKey) != null) /** stmt.setString(1, String.valueOf(oKey)); /** /** /** /** try return list.iterator(); // ----- data members --------------------------------------------------- /** /** protected NamedCache cache; |
CoherencePreLoad.java程序
package dataload; import java.sql.ResultSet; import com.tangosol.util.InvocableMap; import java.sql.Connection; import java.util.Collection; import javax.naming.Context; public class CoherencePreLoad { public static void main(String[] args) { NamedCache cache = CacheFactory.getCache("SampleCache"); String sql = "select id from persons order by id"; try{ Context ctx = null; Hashtable<String,String> ht = new Hashtable<String,String>(); con = ds.getConnection(); while (rs.next()) { // this loads 1000 items at a time into the cache }catch (Exception e) { |
然后需要在缓存的配置中进行设置
<?xml version="1.0"?> <read-write-backing-map-scheme> <internal-cache-scheme> <cachestore-scheme> <listener/> </caching-schemes> |
需要注意的是,必须在启动Cache-server的时候加入weblogic.jar以及dataload的包,因为在DBCacheStore中用到了weblogic JNDI去寻找数据源。
输出结果如下:
在jdeveloper端的Coherence节点
在coherence server端的存储节点
通过visualVM监控是否已经写入缓存
转载于:https://www.cnblogs.com/ericnie/p/6125247.html
Coherence装载数据的研究-PreloadRequest相关推荐
- 郑可迪 : 培养数据思维,投身电力大数据领域研究 | 提升之路系列(一)
导读 为了发挥清华大学多学科优势,搭建跨学科交叉融合平台,创新跨学科交叉培养模式,培养具有大数据思维和应用创新的"π"型人才,由清华大学研究生院.清华大学大数据研究中心及相关院系共 ...
- 从 OSS 装载数据到 PostgreSQL
oss_fdw 在阿里云上,支持通过 oss_fdw 并行装载数据到 PostgreSQL 和 PPAS 中 oss_fdw 参数 oss_fdw 和其他 fdw 的接口一样,提供对外部数据源 oss ...
- 广州市城市智能交通大数据体系研究与实践
广州市城市智能交通大数据体系研究与实践 张孜1, 黄钦炎2, 冯川2 1 广州市交通运输局,广东 广州 510620 2 广州交通信息化建设投资营运有限公司,广东 广州 510620 摘要:为了构建现 ...
- 一纸读懂另类数据 | 未央研究
一纸读懂另类数据 | 未央研究 未央研究 清华大学五道口金融学院 今天 什么是另类数据? 1.定义 另类数据(Alternative Data)是不同于传统的交易所披露.公司公告披露的新数据,是有利于 ...
- 基于数据要素流通视角的数据溯源研究进展
摘要 [目的] 通过文献梳理分析数据溯源研究进展及应用场景,以期为数据交易平台搭建.行业数据治理建设和数字政府治理建设提供参考.[方法] 从数据溯源模型.数据溯源方法和数据溯源应用分别进行归纳和分析, ...
- 【P4论文分享】基于P4的可编程数据平面研究及其应用
前言 本文是本人学习的笔记,如有错误欢迎指正. 论文下载地址:基于P4的可编程数据平面研究及其应用 本文目录 前言 1 引 言 传统交换机的局限性 如何增强网络开放性? OpenFlow局限性 解决O ...
- Hive Load装载数据与HDFS的关系
装载数据:LOAD移动数据 LOCAL:指定文件位于本地文件系统 :OVERWRITE表示覆盖现有数据 使用方法: -- load数据格式 LOAD DATA LOCAL INPATH '/home/ ...
- 基于中台的公共图书馆数据服务研究
基于中台的公共图书馆数据服务研究 摘 要 本文以中台相关概念为切入点,讨论利用中台相关技术,收集图书馆的多源数据,提高公共图书馆数据资源的管控能力.中台的作用不仅仅是将图书馆中的各种数据进行汇聚,而且 ...
- 基于文本内容理解的中医药数据基础研究——中医药文献语料库的建设
http://journal.shouxi.net/html/qikan/zgyx/zgzyyxxzz/20079149/zyyxxx/20100108093937831_500494.html [关 ...
最新文章
- 语音控制 python_python有没有语音控制模块
- iphone开发JSON库之BSJSONAdditions
- Python学习日记day4 字符编码
- Java猿面试_猿灯塔:关于Java面试,你应该准备这些知识点
- 操作系统原理之文件系统(第五章)
- Educational Codeforces Round 114 (Rated for Div. 2) D. The Strongest Build 暴力 + bfs
- finereport 格式化金额函数_帆软报表(finereport)常用函数
- 德国大学:如何改变一个民族和整个世界的命运
- flask route
- java 解码 encodeuri_encodeURIComponent编码后java后台的解码
- NSIS ---使用nsDialogs创建自定义页面,并获取输入到控件中的内容保存到一个XML文档中
- DICOM笔记-使用DCMTK库的DcmOutputBufferStream类将DICOM信息序列化到内存中
- 一路走好——稻盛和夫先生
- Java 二十三种设计模式
- IEEE软件工程标准词汇表定义需求
- Mysql查询数据之基本和多条件查询
- java 微秒_Java中的当前时间(以微秒为单位)
- 云盘构建LVM linux 持续更新
- 南方科大计算机学院院长,新闻详情 - 计算机科学与工程系 - 南方科技大学
- cadence元件库文件位置
热门文章
- vue delete删除json数组_Vue.set 和 Vue.delete
- php 同步退出,Ucenter 的同步登录与同步退出
- 重庆计算机考试准考证打印入口,重庆西南大学计算机等级考试准考证打印入口...
- STM8单片机低功耗---等待(Wait)模式实现
- python将json数据集转成voc xml文件
- QLabel 图片大小设定
- python __call__或者说func()()的理解
- 基于SSM的勤工助学管理系统
- Java 命令行运行参数大全
- OpenGL ES 2 o 初探