eeb*_*sen 5 oracle sequence timestamp
Oracle 11gR2 Exadata
我需要唯一标识何时创建记录。序列缓存意味着我不能使用基于序列的 ID,而批量插入意味着在一个批次中插入的所有记录都将具有相同的时间戳值(即使使用 TIMESTAMP(9))。类似于 Twitter 的since_id 概念。
到目前为止我想到的最好的选择
这是我的要求:我有一个 API,它允许用户提供一个序列作为标记并请求自那时以来的所有记录。例如,他们请求 1000 条标记为 7 的记录,他们将从我的表中获得 1000 条 ID 大于 1007 的记录。例如,假设返回的 1000 条记录的数字最大 ID 是 2045,因此我们返回 2045 作为标记 后来客户端请求 1000 条记录,标记为 2045,期望获得下一批 1000 条记录和一个新标记。
一种非常简单的方法,允许他们获取适合他们的任何大小的所有记录而不会丢失任何记录。但是,由于跨多个 Exadata 节点的序列缓存,在客户端请求 1000 条标记为 1007 的记录时,可能尚未创建 ID 为 2020 的记录。因此,当他们使用标记 2045 执行下一个请求时,他们将永远错过记录 2020。使用 ID 获取关联记录的时间戳可以解决这个问题,但是我必须确保始终将记录单独插入表中以保证唯一的时间戳。
假设:
希望我只是没有找到正确的术语来搜索现有答案。我觉得这是一个多年来应该通过某些模式解决的问题。我认为 Twitter 已经解决了它......
| 归档时间: |
|
| 查看次数: |
2928 次 |
| 最近记录: |