【发布时间】:2017-08-03 18:08:10
【问题描述】:
我们在项目中使用 NoSQL (Cassandra)。我们有一个表 A(5000 条记录),它是一个主表。我们还有另一个表 B(2000 条记录)。表 B 有 4 列,表 A 有 25 列。我们公开了一个 REST 服务来从 B 获取所有记录;像 /service/getB。该服务将返回 6 列作为响应 –
{
"result": [
{
"col1FromB": "1B",
"col2FromB": "2B",
"col3FromB": "3B",
"col4FromB": "4B",
"col1FromA": "1A",
"col2FromA": "2A"
},
{
"col1FromB": "11B",
"col2FromB": "12B",
"col3FromB": "13B",
"col4FromB": "14B",
"col1FromA": "11A",
"col2FromA": "12A"
}
]
}
所以,对于表 B 中的每个项目,都有一个对表 A 的查找查询。这就是我的做法 -
//Get all from Table B (took 90 ms in Local and 30 ms in Test)
Select select = QueryBuilder.select().from("B");
List<B> bList = cassandraOperations.select(select, B.class);
//Loop through bList and do a lookup using id in Table A (took 46000 ms (46 sec) in Local (horrible) and 6000 ms (6 sec) in Test)
For(B b: bList) {
Select select = QueryBuilder.select(“col1FromA”, “col2FromA”).from("A");
select.where(QueryBuilder.eq(“id”, b.getId()));
A a = cassandraOperations.selectOne(select, A.class);
----
----
//Prepare final Pojo with a and b objects and add into a List<finalPjo> and return
}
因此,在本地环境中查找时间非常长,在测试环境中也不太好。我只使用 Java 集合。
有什么方法可以让它变得更好,以便我们在更短的时间内获得记录。
【问题讨论】:
-
这些记录不能共存的原因是什么?
标签: java collections cassandra nosql