假设我有3张桌子(LiveDataTableReducedDataTableScheduleTable)。
基本上,我有一个事件流->每当我收到一个事件时,我就把这个事件的提取数据写到LiveDataTable
问题是,有大量的事件,这就是为什么LiveDataTable可能会变得非常巨大的原因,所以我有另一个ReducedDataTable在这里合并LiveDataTable中的行(考虑从LiveDataTable中选择100行,将其减少到1行,并将其写入ReducedDataTable中,然后从LiveDataTable中删除这100行)。
为了确定执行这些reducing operations的正确时间,有ScheduleTable。您可能认为1行ScheduleTable对应于1 reducing operation
我希望能够从List<Data> getData()支持Interface方法。有两种情况:我要么只从ReducedDataTable读取结果,要么合并ReducedDataTableLiveDataTable的结果。
下面是我的缓存是如何一步一步工作的:
ScheduleTable读取一行
LiveDataTable
写入ReducedDataTable(至少4行)
LiveDataTable中删除(从ScheduleTable中删除一行
问题是,当接收到LiveDataTable请求时,我想确定是否应该以编程方式读取ReducedDataTablegetData()。对于每一步(在3之前),我想从LiveDataTable开始阅读,然后我想从ReducedDataTable开始阅读。当接收到getData()请求时,如何确定当前正在执行的步骤?
我之所以问这个问题,我相信这是DB处理并发时的一个常见问题。

最佳答案

(假设您的压实过程足够快)
您可以首先从小表中乐观地读取数据,如果数据丢失,则从未压缩的表中读取。
在大多数情况下,只有一个请求,而不是两个。
否则,您可以维护已经压缩的数据的时间戳。

关于database - 如何处理数据库并发?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/49983828/

10-17 02:44