需要帮助!无法解决这个问题,我遇到了硬件限制 - 页 4

 
komposter:

想过了。问了一下意见。

与读取文件相比,速度会提高多少,与在内存中工作相比,速度会降低多少?

DBMS尽可能地将其表放在内存中。

但在你的情况下不是,除非你有32GB的内存。

因此,如何将20GB放在4GB中是一个真正的优化挑战。


如果你想简化你的任务,在内存中制作传统的RAM驱动器。

如果你不能,那就去买一个硬盘。

 
1)考虑SSD选项。你可以用大约5卢布甚至更少的钱买一个快速的100G硬盘。


3)变体1+变体2,即把你的数据填入数据库,而数据库又被放在一个固态硬盘上。

我认为最后一个选项会很适合你。如果没有,把你的操作系统从用户操作系统改为服务器操作系统。
 
这里有一篇关于MKL和例如C#之间的数据传输的文章,你可以把所有繁重的操作放在那里,分块读取文件而不占用所有的RAM。数据传输以结构的形式进行,相当方便和快速。
 
komposter:

与读取文件相比,它的速度会快多少,与在内存中工作相比,它的速度会慢多少?

那么,你不只是需要读取文件,你还需要搜索、计算、将文本转换为数字、进行排序等。

首先,如果数据不经常更新,你可以为数据搜索中涉及的属性(包括聚合属性)创建任意多的索引。因此,搜索会更快(使用索引),因此计算也会更快。

其次,说MySQL、MS SQL、Oracle等数据库在重复查询时采用数据缓存技术,也有一定的处理速度优势。

第三,你可以把一个表分成几个部分(分区),比如说,按年份划分。因此,选择一年的数据的查询将不会读取/搜索位于其他分区的数据。

第四,由于你的源数据是文本形式的,当把它加载到数据库时,由于自然的类型转换,它的大小应该更小。例如,文本形式的数字124.223456221将占用13个字节,在数据库中取决于类型4-8;日期和时间 "2014-08-17 10:23:35 "将占用19个字节,在数据库中为8字节。

第五,如果你在某些时期经常使用汇总的信息,你可以将这些数据汇总一次,然后存储在另一个表中。

当然,如果我们只是讨论将数据读入内存,WinApi会做得更快,但之后如何处理数据?想象一下,即使要搜索数据的正确部分,你也必须从磁盘上读取所有的数据。或者你必须编写索引功能,对文件中的数据进行排序,为所有搜索操作创建索引文件,并重写一半的DBMS功能。要处理这样的数据量并希望有合理的性能,这是必要的。

我的意见是明确的--在一台专用机器 上的服务器DBMS(文件DBMS如MS Access,SQLite在这里不起作用)。它将具有足够合理的性能,并易于处理数据(SQL查询)。否则,你将浪费大量的时间来编写低级别的 "内部程序 "来处理文件。

 
komposter:

想过了。问了一下意见。

与读取文件相比,速度会提高多少,与在内存中工作相比,速度会降低多少?

(我对超过3TB的数据库和10-100G的相对较小的数据库有经验)


但在某些硬件方面...比如64gb的内存和更高的内存,以及一个好的磁盘子系统

在这种情况下,与处理一个巨大的文件相比

SQL将大大加快速度,但速度当然取决于SQL的实现。

- 正确的数据库设计 - 正确的索引 - 正确的数据库配置

这意味着文件分割(elugovoy 写的方式是真的)

一个完整的实施需要一个单独的服务器和一个服务器操作系统--SQL数据库

如果MS SQL必须不低于2008(在软件方面也最好不要低于64)。

但在我看来,它的实施将是相当耗费人力和硬件的。(64位是最理想的)

--

如果你的机器只有16G,而它被用作一个工作站

只要把SQL服务器放在上面就不会很好--但总比用一个文本文件要好。

但如果你没有任何关于SQL的经验,在实施过程中就需要付出一些努力。

 
barabashkakvn:

如果这个文件用存档器压缩,它将变得多大(因为文本应该被压缩得很好)?

每次解压所需的时间会扼杀性能。

 
YuraZ:

每次解压缩所需的时间会影响性能

我并不是说取消存档。如果归档可以大大减少尺寸,那么将信息压缩到索引文件中是有意义的。
 
barabashkakvn:
我并不是说取消存档。如果归档可以大大减少尺寸,那么将信息压缩到索引文件中是有意义的。

原本是

barabashkakvn:
如果这个文件是用压缩器压缩的,那么体积是多少(毕竟文本应该压缩得很好)?

因此,对你的帖子的反应!


索引文件 - 创建...那是另一个话题

编写自己的(类似于SQL的)服务器甚至更酷--但为什么呢?

 
YuraZ:

从一开始,它就是

因此,对你的帖子的反应!


索引文件 - 创建...那是另一个话题

编写你自己的(如SQL)服务器甚至更酷--但为什么呢?

原本有一个问题要问作者--但文件会被压缩到什么程度。你已经把解压缩的事说出来了。
 
barabashkakvn:
最初向作者提出的问题是文件被压缩的程度。....。

我可以问为什么吗?

它将被压缩70-80%,这对作者解决他所描述的问题有什么作用?