问题标签 [large-data-volumes]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
5 回答
4309 浏览

java - 如何处理大量数据列表

我们有一个应用程序的一部分,比如说,它需要 20% 的时间读取超过内存限制的大量数据。虽然我们可以增加内存限制,但我们不愿意这样做,因为在大多数情况下它不需要高分配。

我们正在考虑使用定制的 java.util.List 实现在我们达到这样的峰值负载时假脱机到磁盘,但在较轻的情况下将保留在内存中。

数据一次加载到集合中,随后迭代和处理,然后丢弃。一旦它在集合中,就不需要对其进行排序。

有人对这种方法有优点/缺点吗?

是否有一个开源产品可以提供像这样的某种 List impl?

谢谢!

更新:

  • 不要厚颜无耻,我所说的“巨大”是指超过我们愿意分配的内存量,而不会干扰同一硬件上的其他进程。你还需要什么其他细节?
  • 该应用程序本质上是一个批处理器,它从多个数据库表中加载数据并在其上执行广泛的业务逻辑。列表中的所有数据都是必需的,因为聚合操作是完成逻辑的一部分。
  • 我刚刚看到这篇文章,它提供了一个很好的选择:Java 中的 STXXL 等效项
0 投票
5 回答
4619 浏览

mysql - 删除除给定列表中的行号之外的所有其他行

所以基本上这就是我想要做的:我有一个帐户表,我有一个 acct_id 列表:(3、24、515、6326、17),假设我在表中有大约 100,000 个帐户,最有效的方法是什么删除我给定列表中除了具有 account_id 的行之外的所有其他行?

我想出了类似的东西:

我听说这个查询很慢,因为它是递归的或什么的。考虑我的行数,那会很慢。有什么更好的方法来做到这一点?

0 投票
10 回答
2140 浏览

python - 在 Python 中搜索 1GB+ 字符串以查找第一次出现的模式的最快方法

有一个 1 GB 的任意数据字符串,您可以假设它相当于:

我们将在这个字符串中搜索1_gb_string无限数量的固定宽度、1 KB 模式1_kb_pattern。每次我们搜索的模式都会不同。所以缓存机会并不明显。将一遍又一遍地搜索相同的 1 GB 字符串。这是一个简单的生成器来描述正在发生的事情:

请注意,只需要找到模式的第一次出现。之后,不应进行其他主要处理。

我可以使用什么比 python 的 bultin find 更快地匹配 1KB 模式与 1GB 或更大的数据字符串?

(我已经知道如何拆分字符串并并行搜索,因此您可以忽略基本优化。)

更新:请将内存要求限制为 16GB。

0 投票
3 回答
1515 浏览

sql-server - 对索引视图进行大量更新

我们有一个跨三个大表运行的索引视图。其中两个表 (A & B) 不断更新用户事务,另一个表 (C) 包含需要每周更新一次的数据产品信息。该产品表包含超过 600 万条记录。

对于我们的核心业务流程,我们需要跨这三个表的视图,不幸的是我们无法更改这方面。我们甚至有一个 sql server MVP 来帮助在负载下进行测试,以确保我们拥有最有效的配置。产品表中有一个列在视图中被使用,并且必须每周更新。

我们现在遇到的问题是,随着我们针对表 A 和 B 的事务量增加,对表 C 的更新导致死锁。

我尝试了几种不同的方法都无济于事:1)我希望我们可以更改视图,以便表 C 可能是脏读“WITH(NOLOCK)”,但显然该功能不适用于索引视图。

2) 我考虑过在表 C 中更新一个新列,然后在该过程完成后重命名它,但由于视图中的依赖性,您不能这样做。

3) 我还考虑将这个值写入临时产品表,然后针对视图运行 ALTER 语句以使其指向我的新表。然而,当我这样做时,我视图上的索引被删除了,重新创建它们需要相当多的时间。

4)我们尝试以小块(一次小至 100 条记录)进行每周更新,但我们仍然遇到死锁。

问题:

a) 我们使用的是 sql server 2005。sql server 2008 的索引视图是否具有对我们有帮助的新功能?现在有没有办法使用索引视图进行脏读?

b)更改现有视图以指向新表的更好方法?

谢谢!

0 投票
3 回答
4222 浏览

sql-server - 用于存储大量图像的 SQL Server 表结构

在 SQL Server 2008 中存储大量图像数据的最佳做法是什么?我希望使用大约 5 GB 的存储空间来存储大约 50,000 张图像。目前我正在使用包含列的单个表来执行此操作:

我很担心,因为在我预期总容量的 10% 左右,插入似乎需要很长时间。典型的图像约为 20k - 30k。是否有更好的逻辑结构来存储这些数据?或者我是否需要研究集群或其他 IT 解决方案来适应数据负载?

0 投票
5 回答
1312 浏览

python - 在 Python 中将数值数据快速转换为固定宽度的格式文件

将仅包含数字数据的记录转换为固定格式字符串并将它们写入 Python 中的文件的最快方法是什么?例如,假设record是一个巨大的列表,由具有属性idxy和的对象组成,wt并且我们经常需要将它们刷新到外部文件中。可以使用以下代码段完成刷新:

但是,我的代码花费了太多时间来生成外部文件,而在两次刷新之间做它应该做的事情的时间太少了。

修改原问题:

我在编写一个服务器软件时遇到了这个问题,该软件通过从多个“生产者”系统中提取信息并将对记录集的任何更改实时或近乎实时地转发给“消费者”系统来跟踪全局记录集以预处理的形式。许多消费者系统都是 Matlab 应用程序。

我在下面列出了到目前为止我收到的一些建议(谢谢)以及一些评论:

  • 只转储更改,而不是整个数据集:我实际上已经在这样做了。由此产生的变更集仍然很大。
  • 使用二进制(或其他更有效的)文件格式:我几乎受到 Matlab 可以合理有效地读取的内容的限制,此外格式应该与平台无关。
  • 使用数据库:我实际上是在尝试绕过当前被认为既太慢又太麻烦的数据库解决方案,尤其是在 Matlab 方面。
  • 将任务划分为单独的进程:此时转储代码正在其自己的线程中运行。然而,由于 GIL,它仍然使用相同的内核。我想我可以将它移动到完全独立的过程中。
0 投票
4 回答
3268 浏览

sql-server-2005 - 在大量数据上选择 Count(*)

我想为报告执行此操作,但我的表中有 20,000,000 条记录,这会导致我的应用程序超时。

据我所知 COUNT(*) 会导致全表扫描,这使我的查询花费了太多时间,我正在使用 MS SQL 2005,有什么帮助吗?

编辑:

项目负责人告诉我,查询只是一天,它可以提供帮助吗?

0 投票
4 回答
306 浏览

sql-server-2005 - SQL Server 2005 适当的索引来过滤 30,000,000 个寄存器

我对事务表的存储过程有疑问,用户有一个 Web 表单来通过多个值查找事务。

该过程花费的时间太长,我不知道如何设置正确的索引。

这是我的存储过程:

0 投票
6 回答
1668 浏览

java - 在 Java 中读取一个大文件并写入多个(数十、数百或数千)文件?

我有一个包含小消息的大型文件(4-5 GB 压缩),我希望按消息类型将其解析为大约 6,000 个文件。消息很小;根据类型,从 5 到 50 个字节不等。

每条消息都以一个固定大小的类型字段(一个 6 字节的密钥)开始。如果我读取“000001”类型的消息,我想其有效负载附加到 000001.dat 等。输入文件包含消息的混合;我想要 N 个同质输出文件,其中每个输出文件仅包含给定类型的消息。

将这些消息写入这么多单个文件的有效快速方法是什么?我想使用尽可能多的内存和处理能力来尽快完成它。我可以将压缩或未压缩的文件写入磁盘。

我正在考虑使用带有消息类型键和输出流值的哈希图,但我确信有更好的方法来做到这一点。

谢谢!

0 投票
4 回答
5999 浏览

javascript - javascript查找可用内存

让我们立即明确:这不是关于内存泄漏的问题!我有一个页面,允许用户输入一些数据和一个 JavaScript 来处理这些数据并产生结果。JavaScript 在 DIV 上生成增量输出,如下所示:

在某些情况下,计算会产生如此多的数据,以至于 IE8 将失败并显示以下消息:

处理太多数据时没有足够的存储空间

问题是:有没有办法计算出多少数据是太多数据?

正如我所说,没有要解决的错误。这是真正的内存不足,因为计算需要创建太多的 html 元素。

如果浏览器成功,我的想法是在执行计算之前运行一个函数以提前解决。但是要这样做,以一种通用的方式,我认为我需要找到浏览器可用的内存。

欢迎任何建议。