问题标签 [large-data]

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 投票
2 回答
1752 浏览

mysql - 在 MySQL 中维护一个包含唯一值的大表

这可能是一种常见情况,但我在 SO 或 Google 上找不到具体答案。

我在 MySQL 数据库上有一个包含朋友关系的大表(>1000 万行),该表非常重要,需要维护以确保没有重复的行。该表存储用户的 uid。该表的 SQL 是:

该表的工作方式是每个用户有大约 1000 个左右的“可能的朋友”被发现并需要存储,但需要避免重复的“可能的朋友”。

问题是,由于程序的设计,在一天的时间里,我需要向表中添加 100 万行或更多行,这些行可能是重复的行条目,也可能不是重复的行条目。简单的答案似乎是检查每一行以查看它是否重复,如果不是,则将其插入表中。但是随着表大小增加到 1 亿行、10 亿行或更高(我预计很快会实现),这种技术可能会变得非常缓慢。

维护这个独特表的最佳(即最快)方法是什么?

我不需要总是有一张只有唯一值的表。对于批处理作业,我只需要每天一次。在这种情况下,我是否应该创建一个单独的表来插入所有可能的行(包含重复行和所有行),然后在一天结束时创建第二个表来计算第一个表中的所有唯一行?

如果没有,长期使用这张桌子的最佳方式是什么?

(如果索引是最好的长期解决方案,请告诉我要使用哪些索引)

0 投票
2 回答
10334 浏览

c++ - 2D,C ++中的所有k个最近邻居

我需要为数据集的每个点找到它所有最近的邻居。数据集包含大约。1000 万个二维点。数据接近网格,但没有形成精确的网格……

此选项排除(在我看来)使用 KD 树,其中基本假设是没有点具有相同的 x 坐标和 y 坐标。

我需要一个快速算法 O(n) 或更好的算法(但实现起来不太难:-)))来解决这个问题......由于 boost 没有标准化,我不想使用它......

感谢您的回答或代码示例...

0 投票
3 回答
1266 浏览

c++ - 如何从已排序的向量中快速获取已排序的子向量

我有一个这样的数据结构:

这些向量(大小N(想想 100000),按排序(在程序执行期间保持不变):

现在,我想写一个函数

用传递的id给出的的排序子集填充out参数(大小M < N(大约 0.8 倍N)),快速(内存不是问题,这将重复完成,因此构建查找表(来自函数参数的辅助数据)或仅执行一次的其他操作完全可以)。

到目前为止,我的解决方案:
构建包含id ->中的偏移量的可查找lut(准备,因此恒定运行时间) 创建,大小 N, 为每个 id填充无效 id(线性N) ,复制到(线性M) 循环tmp , 将项目复制到out (线性N )
std::vector<X> tmp
values[lut[id]]tmp[lut[id]]

这在N中是线性的(因为它比M大),但是临时变量和重复复制让我感到困惑。有没有比这更快的方法?请注意,M将接近N ,因此 O( M log N ) 的事情是不利的。

编辑: http: //ideone.com/xR8Vp是上述算法的示例实现,以使所需的输出清晰并证明它在线性时间内是可行的 - 问题是关于避免临时变量或加速它的可能性以其他方式,非线性的东西不会更快:)。

0 投票
2 回答
877 浏览

mysql - 从具有 30M 行的 Innodb 表中删除 5K 行的最佳方法

桌子:

  • foreign_id_1
  • foreign_id_2
  • 整数
  • 日期1
  • 日期2
  • 主要(foreign_id_1,foreign_id_2)

询问:delete from table where (foreign_id_1 = ? or foreign_id_2 = ?) and date2 < ?

没有日期查询大约需要 40 秒。那太高了:(日期更长了..

选项包括:

  • create另一个表insert select,然后rename
  • 使用限制并多次运行查询
  • 拆分查询foreign_id_1然后运行foreign_id_2
  • 使用选择然后按单行删除

有没有更快的方法?


0 投票
5 回答
1680 浏览

c - C 编程文件读/写技术

这是我第一次创建一个涉及文件读写的程序。实际上,我想知道这样做的最佳技术是什么。因为当我和我的同学比较我的工作时,我们的逻辑是非常不同的。

你看,我们的老师要求我们做一个简单的学生列表系统,用户可以在其中添加、编辑和删除记录。他要求我们制作一个文件来保存所有记录,以便我们下次使用该程序时可以访问它。

我对这个问题的解决方案是在程序打开它的菜单之前,我读取里面的所有记录并将其保存在一个数组 [] 中。这样做,我可以操纵所有的记录。然后在用户退出程序之前,我将它保存在同一个文件中并覆盖上面的所有记录。

我同学的解决方法是这样的。当她添加记录时,她访问文件并附加数据,当她编辑记录时,她访问文件并编辑特定记录,当她删除记录时,她访问文件并删除记录。所以她所做的就是为她所做的每一个功能,她正在访问该文件。

我们的两个工作当然是可以编码的。但我想知道,如果我们要处理数千或数百万条记录,哪个更有效。或者有没有比我们做的更好的解决方案。也许您可以与我们分享您的文件处理经验......谢谢。

0 投票
1 回答
2705 浏览

wcf - 无法通过 WCF 发送大型消息

我使用 WCF 发送各种消息,并且这条消息特别是大约 3200000 字节加上一些字符串和标题。大paylode是通过另一个服务从主机检索的序列化对象,我试图在各个方面模仿其配置。

我使用 netTcp 绑定来提高性能,我们使用了很多回调。我已将客户端和服务器端的所有选项都设置为最高级别。

我在客户端收到此非描述性错误消息:

套接字连接被中止。这可能是由于处理您的消息时出错或远程主机超出接收超时,或者是潜在的网络资源问题造成的。本地套接字超时为“00:00:59.9979996”。

和内部扩展:

现有连接被远程主机强行关闭

运行跟踪会带来更多信息(堆栈跟踪顶部):

System.ServiceModel.Channels.SocketConnection.Write(Byte[] buffer, Int32 offset, Int32 size, Boolean immediate, TimeSpan timeout) 堆栈跟踪内部扩展顶部:System.Net.Sockets.Socket.Send(Byte[] buffer, Int32偏移量,Int32 大小,SocketFlags socketFlags)

堆栈跟踪内部异常的顶部:

System.Net.Sockets.Socket.Send(Byte[] 缓冲区,Int32 偏移量,Int32 大小,SocketFlags socketFlags)

如果我将有效负载设置为 null(不发送 3.2 MB 对象),则消息会毫不费力地通过。

对象来自另一个服务的事实与我的问题有什么关系吗?在我看来,问题在于消息的大小,但到目前为止,增加配置中的任何选项对我没有帮助。

我试图在没有运气的情况下设置客户端。使用流式传输会导致切换到请求/响应或删除所有回调......

有任何想法吗?

0 投票
1 回答
1909 浏览

javascript - Ruby on Rails - 存储和访问大型数据集

我很难在 Ruby on Rails 应用程序中管理大型数据集的存储和访问。简而言之,这是我的应用程序:我正在执行与道路网络有关的 Dijkstra 算法,然后使用 google maps API 显示它访问的节点。我正在使用美国道路网络的开放数据集通过迭代链接中给出的两个 txt 文件来构建图形,但是我无法在我的应用程序中存储这些数据。

我的印象是像这样的大型数据集不是 ActiveRecord 对象 - 我不需要修改这些数据的内容,而是能够访问它并将其缓存在本地哈希中以对其执行 ruby​​ 方法。我已经尝试了一些事情,但我遇到了麻烦。

  1. 我认为解析 txt 文件并将图形以 yml 格式存储是最有意义的。然后,我可以将图形作为种子数据加载到数据库中,并使用 Node.all 或类似的东西来获取图形。不幸的是,yml 文件变得太大,rails 无法处理。运行 Rake 会导致系统以 100% 无限运行...

  2. 接下来我想,既然我不需要修改数据,我可以在每次应用程序加载时创建图表作为其“初始化”的开始。但是我不知道该把这段代码放在哪里,我需要运行一些方法,或者至少是一个数据块。然后将其存储在某种全局/会话变量中,我可以在所有控制器/方法中访问该变量。我不想传递这个大型数据集,只需从任何地方访问它。

  3. 这是我目前正在这样做的方式,但这是不可接受的。我正在解析在控制器操作上创建图形的文本文件,并希望它在服务器超时之前得到计算。

理想情况下,我会将图形存储在数据库中,我可以获取整个内容以在本地使用。或者至少只需要在应用程序加载时解析一次数据,然后我就可以从不同的页面视图等访问它。我觉得这将是最有效的,但我遇到了障碍片刻。

有任何想法吗?

0 投票
7 回答
1143 浏览

database - 收集、维护和确保庞大数据集准确性的最佳实践是什么?

我提出这个问题是为了寻找有关如何设计系统的实用建议。

amazon.com 和 pandora 等网站拥有并维护着庞大的数据集来运行其核心业务。例如,亚马逊(以及所有其他主要电子商务网站)有数百万种产品可供出售,这些产品的图像、定价、规格等等等。

忽略来自第三方卖家的数据和用户生成的内容,所有“东西”都必须来自某个地方并由某人维护。它也非常详细和准确。如何?他们是如何做到的呢?是只有一大群数据录入员,还是他们设计了系统来处理繁重的工作?

我的公司也有类似的情况。我们维护着一个庞大的(10 万条记录)汽车零件目录及其适合的汽车。我们已经有一段时间了,并提出了许多程序和流程来保持我们的目录不断增长和准确;但是,似乎要将目录增加到x项,我们需要将团队增加到y

我需要想出一些方法来提高数据团队的效率,希望我可以从其他人的工作中学习。任何建议都表示赞赏,但更多的是指向我可以花一些时间阅读的内容的链接。

0 投票
2 回答
1235 浏览

mysql - 使用 LOAD DATA INFILE 导入大数据文件时如何保持 MYSQL 性能?

我正在使用一个大型数据库(一些表 500000000+ 行)。每天应该替换 3-10 百万行,每次导入大约 100 万行(因此使用 CRON 每天 3-10 次)使用 LOAD DATA INFILE。问题是,在进行如此大的文件导入时,MySQL 占用了 80% 的 CPU,来自网站的所有常见查询变得非常缓慢或网站性能下降。站点在 Amazon 的 EC2 Windows 2008 服务器下运行。有谁知道如何在一个 EC2 实例中解决这个问题(不拆分数据库)谢谢。

0 投票
2 回答
99 浏览

c - 在 C 中持久化成员资格测试的大列表

每个项目都是 17 个 32 位整数的数组。我可能可以为它们生成 120 位的唯一哈希值。

我有一个算法可以生成 9,731,643,264 个这些项目,并且想看看其中有多少是独一无二的。我推测其中最多 1/36 将是独一无二的,但不能确定。

在这种规模下,我真的无法在内存中执行此操作(因为我只有 4 个演出),所以我需要一种方法来保存这些列表,进行成员资格测试,并添加每个新的,如果它不存在的话。

我在 Linux 上使用 C(gcc) 工作,所以如果该解决方案可以从那里工作,那就太好了。

有任何想法吗?