Hi,
Recall our suggestion to use the new concurrent map named Oak as a base for 
Incremental Index. Oak stands for Off-heap Allocated Keys, for more details 
please see issue #5698. We had a great progress with Oak integration and 
stabilizing OakIndex performance. We have some questions regarding FactsHolder. 
As we explained in our design document and refactoring suggestion we prefer to 
remove the FactsHolder usage in the OakIndex, because Oak maps the keys 
(Time&Dims) to the values (Aggregators) directly. Therefore the Oak mapping is 
always sorted and only from keys to values. From here we have two questions.

1. Unsorted FactsHolder: It is understandable that unsorted mapping via HashMap 
(O(1) access) might be faster than sorted mapping (O(logN) access). The 
question is whether the unsorted variant used frequently? When it is used? And 
is it acceptable that in this case Oak will give slightly lower performance?

2. Regarding Plain- vs Rollup- FactsHolder: It can be seen that 
PlainFactsHolder is holding a queue of Key->Value (Time&Dims->Aggregator) per 
Timestamp, where the sorting is via Timestamp. Therefore, Oak implements mostly 
sorted RollupFactsHolder logic. Additionally, Timestamp is also a part of 
TIme&Dims and the sorting is initially according to Timestamp, then other 
dimensions. The question is what are the use-cases where the PlainFactsHolder 
and not Rollup is used? And is there any functionality that can be given by 
Plain but not by Rollup?

Thanks,Anastasia

Reply via email to