2011-11-30 57 views
0

我有一个函数将传递一个包含MANY变量的对象。这些变量都存储在数据库中。稍后,一个新的对象将被传递给我的函数,大部分时间它将会是相同的。但有时一两个变量会有所不同,我将不得不根据这些变化采取各种行动。除了遍历每个变量并将其与该变量的每个存储版本进行比较之外,我该如何做到这一点?我可以如何为整个对象生成散列值?因为如果传递给我的时间对象将是最相同的,这将是确定没有任何变化的快速方法。比较对象变量并查找变化的最佳方法

+0

您是否正在实施自己的ORM?如果不是这样,你可以在开源ORM的源代码中找到答案。 –

回答

0

你写过你将所有变量存储在数据库中,所以我认为你应该尽可能少地调用数据库。为此,您可以编写一个存储过程,该行在将一行插入保存值的表中时调用。在此过程中,您可以计算散列值并更新表中添加的用于存储散列值的列。您可以使用Oracle中的sys.dbms_crypto.hash函数来计算散列值。如果需要搜索某个对象,请再次调用一个存储过程,该过程输入当前对象值的文本值,再次使用相同函数创建散列值并调用select语句,如果某行返回,则返回“ Y“,否则为”N“。您可以将索引添加到“哈希值列”以使事情变得更快。

0

您可能会消耗尽可能多的资源,试图确定是否有任何变化。除非您每小时收到数十万条请求,否则每次更新数据库时都可能很容易。