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