2012-02-06 146 views
1

我目前正在实现一个使用Qt显示超大规模数据的直方图,并且对于我的问题应该使用哪种数据结构有些疑问。我将显示从应用程序用户收到的查询数量,我应该显示的方式如下所示 - 在单个应用程序中,点击不同的“显示此数据等”时将显示不同的直方图。 buttons-处理复杂直方图数据的最有效方法?

1)显示每月每个查询的总直方图-4这里数据的几个月里,我
保持四个变量和增加他们为我抓住属于在CSV那几个月
查询文件 -

2)显示每的每一天的总查询在所选月份-I的直方图在考虑使用4个QVectors来表示这一个月份的,递增的载体(每一天的元素),如我来通过该特定一天矢量表示八月份,每当遇到2011-08-XY数据时,我将通过1-递增该向量的(XY + 1)个元素,我的第二个替代方法是使用4个QLinkedList更好的复杂性,但我不确定我提出的方法是否足够有效,并且我愿意倾听任何其他想法。

3)这里的事情有点复杂。显示选定日期和月份每小时总查询的直方图。所表示的数据是以很大的方式相乘的,我不知道应该使用哪种数据结构或结构组合来实现这个数据结构。列表可能是?

任何想法,我的问题在2)和3)将是有益的,在此先感谢。

回答

2

其实,这不应该太难以管理,始终做到每小时查询。假设每小时查询次数永远不会大于最大int值,那么每天只有24个字节= 32位或64,具体取决于您的机器。假设32位,那么每MB可以获得长达28年的数据价值。

没有必要转移月/年 - 你的程序可以工作了这一点。只需将小时0分配到数据中的最早点,然后将其保留为常数,然后根据自那时起经过的小时计算出日期。

这避免了具有列表或任何幻想的名单 - 只使用其中每个地址包含自0小时的小时数,并为这一个小时的查询数的数组。

1

你为什么不简单地使用经典的数据库? 当你开始提出这样的问题时,我认为现在是考虑更健壮的结构的好时机。在任何数据库中都实现了多种数据结构,针对不同的访问类型进行了优化。您至少应该考虑查找,插入,删除,范围查询。没有任何结构比其他所有成本都好,所以总会有一个折衷。

Qt拥有some database classes就可以使用。我从来没有使用Qt SQL库,但我认为你应该试试看。幸运的是,在页面末尾有一个Qt SQL编程指南。

相关问题