对于Java程序员,在选择数据存储的时候,可能会经常遇到这样的疑惑,究竟该使用JCR引擎,还是直接使用关系型数据库?
有一篇老文章对此作过详尽到位的解释,
https://dev.day.com/content/ddc/blog/2009/01/jcrrdbmsreport/_jcr_content/images/jcrrdbmsreport/jcr_rdbms_report_chapuis.pdf
文中主要提到下面的一些观点:
1、数据模型分为:分层模型(树)、网络模型、关系模型(注:还有现在的key/value键值对),
时至今日,分层/网络模型应用场合逐步萎缩,但仍有价值,如HTML页面DOM结构就是分层模型的典型应用
2、选择数据模型取决于业务的复杂度,是否能提前定义,是否能适应变化
3、数据模型会影响数据处理各个角色的职责(DBA,程序员,用户),对于结构驱动内容的模型,DBA负责结构定义,
对于内容驱动结构的模型,DBA只负责数据完整性、安全、可用、可恢复
4、对于一个house而言,结构是可以清晰定义的,那么关系型数据模型比较适用,
而如果是一个城市,由于一个城市的生态环境很多时候是自然选择、淘汰的过程,其存在很大的变数,所以使用具有动态定义内容结构的模型比较合适
这有点类似于静态语言和动态语言之间的差别,静态语言必须提前定义好类的属性行为,而动态语言ruby/python/php,则可以在运行时动态构造、调用新的属性行为
5、每个模型都有其局限,尽管关系型SQL很强大,但在需要查询整个树状数据时,则需要使用其它模型,另外关系型数据对于版本控制以及访问控制的支持也不好
6、JCR适合数据浏览(Navigation)和版本化信息查询(Versioning),而RDBMS适合复杂联合查询
7、性能不是主要的考虑方面,JCR获取关联数据的复杂度由于其实现是指针浏览,所以为O(1),即和数据量n无关,而关系型数据由于需要从表中匹配某个键值,
所以,理论上如果表中数据为n个,那么复杂度为O(n),但通过建立合适的索引,如b-tree,复杂度可以降低到O(log(n)),还可以再简化索引比较操作,使用合适的hash,达到O(1),(注:由于要建立索引,mysql的数据建立较慢,随机查询则和H2/CRX无多大差别)
下面是比较汇总图:
参考链接:
http://stackoverflow.com/questions/1226325/when-should-you-use-jcr-and-when-should-you-use-jpa-rdbms
by iefreer
分享到:
相关推荐
AEM体系结构堆栈 Adobe Experience Manager技术堆栈一部分的OSGi、JCR、Oak和Sling技术 手写简化版AEM体系结构堆栈以及基本核心原理
2015_JCR期刊分区数据(部分)
JCR对包括SCI收录的3800种核心期刊(光盘版)在内的8000多种期刊(网络版)之间的引用和被引用数据进行统计、运算,并针对每种期刊定义了影响因子(Impact Factor)等指数加以报道。一种期刊的影响因子,指的是该刊前二...
中科院JCR分区,1区共560本,涵盖几大类,每年10月份官方发布最新年期刊分区数据,官方网站为中科院期刊分区数据在线平台,网址:http://www.fenqubiao.com。
中科院JCR期刊分区数据(2017年11月发布),可以查看各种期刊及其分区
JCR,即Journal Citation Reports(期刊引证报告),每年6月下旬由科睿唯安...2021年发布的2020JCR首次引入了ESCI期刊的数据。因此,虽然目前SCI和SSCI数量为12000左右,但JCR数据库中则已经涵盖了超过20000本的期刊。
2022年SCI期刊影响因子和JCR分区(基础版和升级版)
JCR的2.0版规范
JCR分区表,助力科研,很有用的啊 ,Excel格式很有参考价值
中科院2015年JCR分区与SCI影响因子
JCR官方说明文档.doc
2022年JCR正式发布(附最新影响因子名单) 重磅!2022年JCR正式发布(附最新影响因子名单,前600) 重磅!2022年JCR正式发布(附最新影响因子名单) 重磅!2022年JCR正式发布(附最新影响因子名单) 重磅!2022年JCR...
JCR 开发文档,详细描述JCR的API
数据来源为 “中科院文献情报中心期刊分区表开放平台” 查询结果示例: 期刊名称: IMAGE AND VISION COMPUTING +------+------------------+------+ | 序号 | 类别 | 分区 | +------+------------------+------+ |...
中科院JCR分区_工程技术大类_1-3分区汇总!详细汇总。
JCR-2.0.JARJCR-2.0.JARJCR-2.0.JARJCR-2.0.JARJCR-2.0.JARJCR-2.0.JARJCR-2.0.JARJCR-2.0.JARJCR-2.0.JARJCR-2.0.JARJCR-2.0.JARJCR-2.0.JARJCR-2.0.JAR
标签:abdera-jcr-1.0.jar,abdera,jcr,1.0,jar包下载,依赖包
2019JCR期刊分区表,分区分为四种Q1、Q2、Q3、Q4,包含了大多数国外期刊,需要的自行下载查找
JSR-170 API jcr-1.0.jar
jcr_in_action.pdf