|
|
1
4
Hibernate(或任何JPA解决方案)不适合这项工作。 JPA/Hibernate不是一个轻量级的解决方案。在高容量应用程序中,开销不仅很大,而且令人望而却步。你真的需要调查一下 grid and cluster solutions 。我不会在这里重复各种技术的概述。 我在金融市场信息系统方面有很多经验。你说的几句话让我印象深刻:
现在,对于网格/集群类型的解决方案,我将其大致分为两类:
我经常使用Coherence,Map解决方案可能很好,但也可能有问题。一致性图上可以有监听器,你可以使用这种东西来做以下事情:
所有这些都可以通过监听器来完成,但在连贯性中,例如监听器必须便宜,这导致像Map这样的东西有一个监听器,而不是向另一个Map写入内容,这可能会持续一段时间。此外,修改缓存条目可能会有问题(尽管也有处理此类问题的机制;我说的是关闭市场价格警报这样它就不会触发第二次)。 我发现GigaSpaces类型的网格解决方案对于这种应用程序来说更具吸引力。读取(或破坏性读取)操作是一种高度优雅且可扩展的解决方案,您可以获得具有亚毫秒性能的事务网格更新。 考虑两种经典的排队架构:
在GigaSpaces中,破坏性读取类似于可扩展的发布-订阅系统,读取操作类似于传统的发布-预订模型。在网格之上构建了一个Map和JMS实现,它可以进行FIFO排序。 现在,我听到你问什么是坚持不懈?坚持是决定所有其他事情的结果。对于这种应用程序,我喜欢 Persistence as a Service 模型(讽刺的是,它写的是Hibernate,但它适用于任何东西)。 基本上,这意味着你的日期存储点击是异步的,它可以很好地处理摘要数据。就像你可以让一个服务监听交易通知,并只保留它感兴趣的通知(如果需要,可以在内存中聚合)。你可以这样做开盘/高/低/收盘价。 对于大容量数据,您并不想将其全部写入数据库。无论如何都不是同步的。持久存储加上数据仓库可能更适合你,但这也取决于需求、数量等。 这是一个复杂的话题,我只触及了它。希望这对你有所帮助。 |
|
|
2
2
你可能会发现听它很有趣 Michael Stonebraker's presentation at Money:Tech 他触及了您提到的许多需要,并说明了三大巨头(SQL Server、Oracle和DB2)将永远无法满足tick存储的需求(看起来您正在构建tick存储)。他在柱店之外挖掘,我同意这是正确的方向。他甚至讨论了压缩和速度,这对你来说都是问题。 以下是一些你可能会感兴趣的链接: |
|
|
3
2
我会看一个 column oriented database 。这对这种应用程序来说太好了 |
|
|
4
1
许多支持JDBC的数据库管理系统(如Oracle)在物理存储引擎中提供压缩。例如,Oracle有一个没有解压缩开销的“压缩”表的概念: http://www.ardentperf.com/wp-content/uploads/2007/07/advanced-compression-datasheet.pdf |
|
|
5
0
谢谢你的回答。 Cletus,我很欣赏这个大纲,但我不能做出的权衡之一是放弃数据库的灵活性和与JDBC/Hibernate的兼容性,以允许使用所有可用的工具。此外,虽然我没有明确说明这一点,但我不想强迫我的用户采用(可能昂贵的)商业解决方案。如果他们有数据库品牌X,让他们使用它。如果他们不在乎,我们建议开源数据库品牌Y。基本上,该应用程序有多个面,其中一个是传入数据的存储库,但另一个面是报告源,我 真正地 不想从事编写报告生成器的工作。 虽然我还没有真正对它进行负载测试,但我对它印象深刻 LucidDB 它是一个面向列的数据库,提供了良好的查询性能和看似良好的数据压缩。它有一个JDBC驱动程序,但据我所知,它还没有Hibernate方言。它还支持用户定义的转换,简而言之,我认为这将使我能够无缝地将重复和连续的值压缩到一个“行”中,但在查询时将它们吹回多个“合成”行,所有这些都是在查询调用者看不见的情况下完成的。最后,它支持外部表的这一漂亮特性,其他支持JDBC的数据库表可以在LucidDB中前置。我认为这对于为其他数据库提供一定程度的支持可能是无价的。 谢谢你的指点,Javaman。它把我定位在LucidDB上。 |
|
|
user29759326 · 如何返回递归函数中的最后一个值? 1 年前 |
|
|
malife89 · 将java中的字符串读取为正确的日期格式 1 年前 |
|
|
Tim · 在java中,有没有更快的方法将字节数组写入文件? 1 年前 |
|
|
rudraraj · java中未声明最终变量 1 年前 |
|
|
Bala Ji · 以下BFS的实施效率如何? 1 年前 |