如何在内存统计数据库中实现Java/Scala?
我需要的是聚合web应用程序服务器的实时统计数据。 例如:如何在内存统计数据库中实现Java/Scala?,java,sql,statistics,embedded-database,Java,Sql,Statistics,Embedded Database,我需要的是聚合web应用程序服务器的实时统计数据。 例如: 已完成多少个内容类型为X的请求 处理Y类型的请求需要多长时间 等等 为了获得最佳性能,这些数据必须完全存储在内存中,而不是文件中。它不会记录每个请求,而是只存储各个方面的计数器 我知道的最简单的方法是将值存储在类似SQL的表中,并执行类似SQL的查询。这样做的好处是,索引可以在没有开发工作的情况下从书架上取下。我想一些嵌入式Java数据库可以完成这项工作 另一种方法是为每个“索引列”实现集合(比如列表)和哈希表。通过这种方式,所有这
- 已完成多少个内容类型为X的请求
- 处理Y类型的请求需要多长时间
您确定SQL数据库非常适合您的需要吗?您是否查看过,以确定它是否适合您的需要,或者它是否不适合您?请查看滚动数据库实现。我可以想象,对于需要收集的每种类型的信息,您只需要一次收集。为了提高性能,请简化我将用于投影Ashmap的代码。e、 g 已完成多少个内容类型为X的请求
tobjectnthashmap contentTypeCount
=新的tobjectnthashmap();
contentTypeCount.increment(contentType);
处理Y类型的请求需要多长时间
TObjectLongHashMap内容类型时间
=新的TObjectLongHashMap();
contentTypeTime.adjustValue(processType,processTime);
我不明白你如何通过使用你提到的其他方法使它变得更短/更简单/更快
在我的机器上执行增量(键)的平均时间为15纳秒(十亿分之一秒)我还注意到这是Scala的统计库
它包含计数器、仪表和计时仪表
可以从HTTP REST API访问数据。我刚刚发现了RRDtool。我想知道这是不是一种更可取的方式,而不是重新发明轮子。还有一个名为rrd4j()的Java实现
TObjectIntHashMap<ContentType> contentTypeCount
= new TObjectIntHashMap<ContentType>();
contentTypeCount.increment(contentType);
TObjectLongHashMap<ProcessType> contentTypeTime
= new TObjectLongHashMap<ProcessType>();
contentTypeTime.adjustValue(processType, processTime);