我们说我有3张桌子(LiveDataTable
,ReducedDataTable
,ScheduleTable
)。
基本上我有一系列事件 - >每当我收到一个事件时,我都会将此事件的提取数据写入LiveDataTable
。
问题在于,有大量事件导致LiveDataTable
变得非常庞大,所以我还有另一个ReducedDataTable
来自LiveDataTable
(考虑从LiveDataTable
中选择100行,将其减少到1行,然后将其写入ReducedDataTable
,然后从LiveDataTable
删除这100行。
为了确定执行这些reducing operations
ScheduleTable
的正确时间。您可能认为1行ScheduleTable
对应1 reducing operation
。
我希望能够从List<Data> getData()
支持Interface
方法。在2个案例中:我应该仅从ReducedDataTable
阅读,或者合并ReducedDataTable
和LiveDataTable
的结果。
以下是我的缓存如何逐步完成的工作:
ScheduleTable
LiveDataTable
ReducedDataTable
(至少4行)LiveDataTable
ScheduleTable
问题是我想确定在收到LiveDataTable
请求时是否应该以编程方式从ReducedDataTable
和getData()
读取。对于每一步(在#3之前),我想从LiveDataTable
读取,然后我想从ReducedDataTable
读取。如何确定我在收到getData()
请求时目前正处于哪个步骤?
我问这个问题的原因我认为这是处理并发时DB中的常见问题。
答案 0 :(得分:0)
(假设您的压缩过程足够快) 您可以先乐观地从小表中读取数据,如果数据丢失 - 则从未压缩的数据中读取。 在大多数情况下,只有一个请求,而不是两个。
否则,您可以维护已经压缩的数据的时间戳。