因此,对于一些研究工作,我需要分析大量原始运动数据(目前几乎是数据,并且正在增长),并吐出定量信息和图表.
我使用Groovy编写了大部分内容(使用JFreeChart进行制图),当性能成为问题时,我用Java重写了核心部分.
问题是分析和绘图需要大约一分钟,而加载所有数据大约需要5-10分钟.可以想象,当我想对绘图进行细微更改并查看输出时,这会非常烦人.
我有几个想法来解决这个问题:
将所有数据加载到SQLite数据库中.
优点:它会很快.如果需要,我将能够运行SQL来获取聚合数据.
缺点:我必须编写所有代码.此外,对于某些图,我需要访问每个数据点,因此加载几十万个文件,某些部分可能仍然很慢.
Java RMI返回对象.所有数据都被加载到一个根对象中,当序列化时,该对象大约为200兆.我不确定通过RMI传输200meg对象需要多长时间.(同一客户).
我必须运行服务器并加载所有数据,但这不是什么大问题.
主要职业:这应该花费最少的时间来写
运行加载数据的服务器,并在服务器vm内的命令上执行groovy脚本.总的来说,这似乎是最好的想法(实施时间与性能以及其他长期效益)
我想知道的是还有其他人解决了这个问题吗?
分析后(2011年3月29日):在写完这个问题几个月后,我最终不得不学习R来运行一些统计数据.使用R对于数据分析和聚合来说远比我正在做的更容易,更快捷.
最终,我最终使用Java来运行初步聚合,然后在R中运行其他所有内容.与使用JFreeChart相比,R制作漂亮的图表要容易得多.
如果您要获得大量数据,数据库的可扩展性非常高.在MS SQL中,我们目前在4分钟内对大约30GB的数据进行分组/求和/过滤(我认为大约有1700万条记录).
如果数据不会增长很多,那么我会尝试方法#2.您可以创建一个简单的测试应用程序,使用随机数据创建一个200-400mb的对象,并在决定是否要使用该路径之前测试传输它的性能.
| 归档时间: |
|
| 查看次数: |
761 次 |
| 最近记录: |