1

我目前正在对记录用户事务的不同选项进行一些研究。目前,我们有一个设计,其中事务以 XML 消息的形式发送。使用 SQL 作为数据库,每个 XML 消息/事务都存储在一个表中,该表具有四个字段(使用 guid 的主键、事务类型、事务发生时间的时间戳和一个包含整个 XML 的字段。基本上,如果出现错误如果发生在事务期间,则可以根据事务类型和发生错误的时间来检索原始 XML 消息,以评估 XML 消息中发送的数据。

但是,使用这种设计,我们发现查询数据库需要很长时间。我不确定是否是因为每天记录的交易数量(可能超过数十万笔交易)。因此,我一直在研究是否有其他类型的数据库应用程序对我的情况更有效。有很多选择,但我不知道从哪里开始。关于 mongodb 有很多讨论,但我不确定这是否适合我正在尝试做的事情。你们中的任何人都可以就我可以研究的数据库选项类型向我提供一些建议吗?

4

2 回答 2

0

您的 MySQL 实例可能使用动态行格式,因为存储 xml 的 BLOB/TEXT 字段是可变长度的。

创建一个单独的关联表来保存 XML 数据,其中包含指向事务元数据表中 PK 的外键链接。这样,您可以运行查询以查找元数据上的记录,而不会影响存储在 BLOB/TEXT 中的 XML 数据。仅在需要时通过使用连接的单独查询访问 XML 数据。

看:

http://dev.mysql.com/doc/refman/5.5/en/optimize-blob.html

更多来自这里:

是否将 TEXT/BLOB 存储在同一张表中?

于 2013-06-11T02:24:41.907 回答
0

我会合并这个数据库方案:

id, parentid, text
1, 0, 'test'
2, 0, 'test2'
3, 1, 'test child'
4, 3, 'test child child'

然后递归地将树重建为 xml

于 2013-06-11T02:19:33.833 回答