我们有一个体面的面向对象的应用程序。每当应用程序中的对象发生更改时,对象更改都会保存回数据库。然而,这已经变得不太理想了。
目前,交易被存储为一个交易和一组交易LI。
事务表具有 who、what、when、why、foreignKey 和 foreignTable 字段。前四个是不言自明的。ForeignKey 和 foreignTable 用于确定哪个对象发生了变化。
TransactionLI 具有时间戳、密钥、val、oldVal 和 transactionID。这基本上是一个键/值/旧值存储系统。
问题是这两个表用于应用程序中的每个对象,所以它们现在是相当大的表。将它们用于任何事情都很慢。索引只有这么多帮助。
所以我们正在考虑其他方法来做这样的事情。到目前为止我们已经考虑过的事情: - 按时间戳之类的方式对这些表进行分片。- 对两张表进行非规范化并将它们合并为一张。- 以上两者的结合。- 在更改后序列化每个对象并将其存储在颠覆中。- 可能是别的什么,但我现在想不起来。
整个问题是我们希望有一些机制来正确存储和搜索事务数据。是的,您可以强制将其输入关系数据库,但实际上,它是事务数据,应该相应地存储。
其他人都在做什么?