标签: cqengine

CQEngine针对小型数据集进行优化

我有一个应用程序需要对数百万个较小的集合应用灵活的查询,每个集合的大小从10到10000个.CQEngine在提供查询这些集合的灵活性方面工作得很好,但是比先前更严格的实现要慢得多,后者通过预先计算集合中某些项目属性的聚合来工作.该方法的问题在于它不够灵活,无法轻松处理新属性的添加.

我的问题是处理数百万个较小的集合,我可以做些什么来调整CQEngine以使其更快.

  1. 我应该添加索引,还是只在集合超过某个大小时才添加索引.
  2. 我目前在记录时间戳上使用Navigable,在其他属性上使用HashIndex,类似于类别或标记.

任何想法将不胜感激!

java cqengine

9
推荐指数
1
解决办法
196
查看次数

如何使用 NavigableIndex 从 cqengine IndexedCollection 获取第一个或最后一个项目

我有配置的com.googlecode.cqengine.IndexedCollection对象NavigableIndex。我通常需要从索引或索引的迭代器中获取第一个或最后一个项目。

我想这应该是微不足道的。我知道我可以使用 queryOptions 对象创建 Query 对象,使用它从 IndexedCollection 检索迭代器并获取第一个对象,但我不确定它是否是最佳性能。肯定不优雅。

java cqengine

5
推荐指数
1
解决办法
578
查看次数

对于快速变化的集合,CQEngine 中的索引惩罚是什么?

我正在考虑将CQEngine用于我需要处理大量实时事件并不时执行一些查询的项目。它适用于返回结果,但我注意到集合越大,向其中添加或从中删除元素的速度就越慢。

我在集合中添加了一些简单的索引,所以我假设延迟是因为在每个添加/删除的事件中,索引都会更新。我还收到了大量事件的 OutOfMemoryError,从索引随着我认为的集合的增加而增加。

所以我的问题是,对于快速变化的集合(经常从集合中添加和删除元素),CQEngine 中的索引惩罚是什么?

java indexing performance cqengine

4
推荐指数
1
解决办法
2979
查看次数

第三方库中的通用方法限制规避

我使用cqengine进行集合索引:

Attribute<UtilizationEntry, LocalDate> startDateAttr = new SimpleAttribute<UtilizationEntry, LocalDate>() {
    @Override
    public LocalDate getValue(UtilizationEntry object, QueryOptions queryOptions) {
        return object.getStartDate();
    }
};
IndexedCollection<UtilizationEntry> entries = new ConcurrentIndexedCollection<>();
entries.addIndex(NavigableIndex.onAttribute(startDateAttr)); // compilation error in this line
Run Code Online (Sandbox Code Playgroud)

此代码未编译,因为:

Error:(61, 70) java: no suitable method found for onAttribute(com.googlecode.cqengine.attribute.Attribute<entities.UtilizationEntry,java.time.LocalDate>)
method com.googlecode.cqengine.index.navigable.NavigableIndex.<A,O>onAttribute(com.googlecode.cqengine.attribute.Attribute<O,A>) is not applicable
  (inferred type does not conform to equality constraint(s)
    inferred: java.time.chrono.ChronoLocalDate
    equality constraints(s): java.time.chrono.ChronoLocalDate,java.time.LocalDate)
method com.googlecode.cqengine.index.navigable.NavigableIndex.<A,O>onAttribute(com.googlecode.cqengine.index.support.Factory<java.util.concurrent.ConcurrentNavigableMap<A,com.googlecode.cqengine.resultset.stored.StoredResultSet<O>>>,com.googlecode.cqengine.index.support.Factory<com.googlecode.cqengine.resultset.stored.StoredResultSet<O>>,com.googlecode.cqengine.attribute.Attribute<O,A>) is not applicable
  (cannot infer type-variable(s) A,O
    (actual and formal argument lists differ in length)) …
Run Code Online (Sandbox Code Playgroud)

java generics java-8 cqengine

3
推荐指数
1
解决办法
180
查看次数

CQEngine可以查询另一个对象中的一个对象吗

有谁知道 CQEngine 是否可以查询其他对象中的对象?我希望能够查询用户、订单和产品。

这可以用 CQEngine 来完成吗?或者我需要展平对象吗?

public class User {
    public List<Orders> orders;
}

public class Orders {
    public List<Products> products; 
}

public class Products {
    public String name;
}
Run Code Online (Sandbox Code Playgroud)

java cqengine

2
推荐指数
1
解决办法
2279
查看次数

标签 统计

cqengine ×5

java ×5

generics ×1

indexing ×1

java-8 ×1

performance ×1