我們在我們的項目中使用NoSQL(Cassandra)。我們有一個表A(5000條記錄),它是一個主表。我們還有另一個表B(2000年的記錄)。表B有4列,表A有25列。我們公開了一個REST服務來獲取B中的所有記錄;像/ service/getB。這項服務將在響應,返回6列 -提高Cassandra和java集合的性能
{
"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"
}
]
}
所以,有一個查找查詢表A表B.每個項目這是我正在做它 -
//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集合。
有沒有什麼辦法讓它更好,讓我們在較短的時間內獲得記錄。
是否有這些記錄不能共位的原因? – dilsingi