假设有两种类型的消息,QUOTE 和 TRADE。两者都有不同的领域。例如 TRADE 只有一个价格。QUOTE 既有买入价,也有卖出价。我希望及时处理消息,以便执行以下操作:
if (QUOTE) {
...
}
if (TRADE) {
...
}
我的问题是这两条消息的格式不同,所以我无法将它们放入同一个数据库表中。如果我无法将它们放入同一个数据库表中,我该如何按顺序处理?对合适的设计有什么想法吗?
假设有两种类型的消息,QUOTE 和 TRADE。两者都有不同的领域。例如 TRADE 只有一个价格。QUOTE 既有买入价,也有卖出价。我希望及时处理消息,以便执行以下操作:
if (QUOTE) {
...
}
if (TRADE) {
...
}
我的问题是这两条消息的格式不同,所以我无法将它们放入同一个数据库表中。如果我无法将它们放入同一个数据库表中,我该如何按顺序处理?对合适的设计有什么想法吗?
答案完全取决于您正在做什么以及您的应用程序插入数据流的位置。
在一个极端情况下,您可能只是在回答您从 API 中提取的客户报价,并且基本上实现了缓存。在这种情况下,两个表都可以。
在另一个极端,您可能正在监控高频交易平台的实时报价,在这种情况下,吞吐量可能会完全排除使用数据库的可能性(围绕 lisp 构建的东西,例如 allegrograph,可能更合适),除了定期收集汇总统计信息。
简短的回答是,“不是真的”对于股票市场和其他时间序列数据,像 Berkley DB 或 Mongo 这样的关键值存储非常好。此外,从长远来看,像 NetCDF (http://en.wikipedia.org/wiki/NetCDF) 这样的数据格式可能会更好地为您服务。它还取决于您想要什么样的访问权限以及您想要存储多少时间。
你没有说明你对数据做了什么,这应该比任何事情都更能说明你对存储的选择。例如,高速交易应用程序将具有与历史批处理系统(Hadoop + NetCDF 会很棒)不同的存储权衡。YMMV