- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
包含索引的特征矩阵
CQEngine - Collection 查询引擎
CQEngine查询引擎- 是一个高性能的Java Collection,可以用类似于查询的查询来搜索,它具有非常高的延迟和低延迟。
· 每秒实现数百万次查询,查询延迟以微秒计
· 从数据库卸载查询流量- 扩展应用程序层
· 在低端硬件上优于数据库,即使在低端硬件上
支持堆持久性。关闭堆持久性。磁盘持久性和支持MVCC事务隔离。
CQEngine的有趣评论:
· : 比较CQEngine和标准的Java集合的搜索性能。
· : 开始使用 CQEngine: LINQ为 Java,只快速实现
· CQEngine: wild | | ( 3-5 requests请求/天)
迭代的极限
从 Collection 检索符合某些条件的对象的经典方法是遍历 Collection 并对每个对象应用一些测试。 如果对象 MATCHES 是标准,那么它将被添加到结果集。 对于 Collection 中的每个对象重复这里操作。
传统的迭代效率非常低,时间复杂度为O ( ) 。 它可以优化,但需要对 Collection 构成的统计知识 。 阅读更多:迭代迭代的极限。
基准偷窥
即使将优化应用到惯例迭代中,CQEngine也可以比传统的迭代。 下面是一个用于对范围类型查询的CQEngine延迟与迭代进行比较的测试的图表:
· 每秒 ,10个查询( 在单个 1.8处理器内核上)
· 每查询 0.896 微秒
· CQEngine的 330187 50% iteration iteration iteration iteration
· CQEngine的价格为 ,比优化的迭代速度要快
有关这里测试的详细信息以及其他各种类型的查询,请参见基准 wiki页面。
CQEngine概述
通过将索引存储在 Collection 中的对象,并基于集合理论的规则来减少访问它们的时间复杂度,CQEngine可以解决迭代的可伸缩性和延迟问题。
索引和查询计划优化
· 可以在对象的任意数量的单个字段中添加简单索引,只允许在O 时间复杂度answered查询这些字段的查询
· 在相同的字段上可以添加多重索引,分别针对不同类型的查询进行优化- 例如相等,数值范围,字符串开始等。
· 可以添加英镑复合索引,这可以增加多个字段,允许引用多个字段的查询在O ( 1) 时间复杂度中也得到回答
· 完全支持嵌套查询,如SQL等价于WHERE color = blue AND(NOT(doors = 2 OR price 53.00))
· 可以添加加权查询索引 ;这允许在O ( 1) 时间复杂度中回答任意复杂的查询( 嵌套查询 Fragments,不管引用的字段数如何。 包含支持查询索引的分支或者查询 Fragments的大查询将自动从O ( 1) 时间复杂性评估中获益。
· 基于统计信息的统计查询优化- 当多个字段具有适当的索引时,CQEngine将使用索引中的统计信息,以选择可以执行查询的索引,该索引可以执行最小时间复杂度查询。 当某些引用字段具有合适的索引时,CQEngine将首先使用可以用索引,然后重新筛选查询的最小可以能集。 在那些情况下,时间复杂度将比O,但通常比O ( n)
· 如果没有合适的索引可用,则CQEngine将通过迭代评估查询,使用延迟评估。 即使没有合适的索引,CQEngine也可以对每个查询进行评估。 查询与索引不耦合,因此可以在事实之后添加索引,以加速现有查询
· CQEngine支持完全并发,并期望在运行时将对象添加到 Collection ;CQEngine将负责实时更新所有已经注册索引。
· 类型安全- 几乎所有的错误都会导致编译时编译时出错,而不是运行时出现异常: 所有索引和所有查询都在对象级别和字段级别使用泛型进行强类型化
· 在堆( 像一个普通的Java Collection ) 上或者从堆( 在本机内存中,在JVM进程内,而在Java堆之外) 中存储 On-heap/off-heap/disk对象,或者保存到磁盘
提供了几种 IndexedCollection的实现,支持各种并发和事务隔离级别:
· ConcurrentIndexedCollection - 锁定空闲并发读取和写入,无需事务隔离
· ObjectLockingIndexedCollection 锁免费并发读取,以及对象级别事务隔离和一致性保证的一些写入
· :使用多版本并发控制,锁定空闲并发读取,并为完整的事务隔离( sequential )
有关详细信息,请参阅 TransactionIsolation 。
完整示例
大多数应用程序都与 IndexedCollection 交互,这是 java.util.Se
您可能关注的文档
最近下载
- 2022年国家公务员考试行测试题(有答案)(地市级).pdf VIP
- CISA考试练习习题库(2025年第1部分).pdf VIP
- 基于核心素养的小学语文作业设计策略分析.docx VIP
- T_CGSS 014—2020_老年人跌倒风险综合评估规范.pdf VIP
- 选区激光熔化技术下成形件表面质量及残余应力预测方法.pdf VIP
- 机电设备安装应急处理预案.docx VIP
- 2025入党积极分子发展对象考试题库(含答案).docx VIP
- 个人简历——【标准模板】.doc VIP
- [富士康 索尼设备校正]SI-F209 Operation Manual (中文版).pdf
- 小学语文作业设计的有效策略.doc VIP
文档评论(0)