问题标签 [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 投票
1 回答
1191 浏览

hbase - 如何存储和查询非常大的数据集(除了关系数据库)

我们目前面临的问题是如何有效地从非常大的数据集(数十亿)中存储和检索数据。我们一直在使用 mysql 并优化了系统、操作系统、raid、查询、索引等,现在正在寻求继续前进。

我需要就采用何种技术来解决我们的数据问题做出明智的决定。我一直在研究使用 HDFS 的 map/reduce,但也听说过有关 HBase 的好消息。我不禁想到还有其他选择。是否对可用的技术进行了很好的比较,以及每种技术的权衡是什么?

如果您有每个链接可以分享,我也将不胜感激。

0 投票
6 回答
391 浏览

c++ - 如何使用包含大型数据数组的类元素来处理 STL 容器

我正在寻找一种方法将大型数据数组(存储在具有基本功能的类中,例如检查数据、大小等)放入任何 STL 容器中,例如向量或队列(FIFO 队列是最好的,因为我有一个生产者和消费者)。

问题是我必须实现复制构造函数并且..好吧..我不想做一个深拷贝(因为它需要太多时间,所以我坚持一个浅拷贝),但是我又一次有了不知道何时删除析构函数中的数据数组的问题(因为我两次调用析构函数并且只有一次数据,另外,对析构函数的第一次调用可能来自在容器中插入/移动元素,所以我此时仍然需要数组数据)。

我考虑过对数据数组使用像 std::shared_ptr 这样的智能指针,但是从我读到的内容来看,它们不调用 delete [] 而是调用 delete - 这是一种耻辱,因为我有一个普通的数组 []。

现在我有一个解决方案,可以在将其从容器中删除之前手动调用类上的“DeleteArray”函数。它工作得很好但是.. 它不是很好。

有任何想法吗?

0 投票
5 回答
20283 浏览

c# - 处理非常大的数据集并及时加载

我有一个用 C# (.NET 4.0) 编写的 .NET 应用程序。在这个应用程序中,我们必须从文件中读取一个大型数据集,并以类似网格的结构显示内容。因此,为了实现这一点,我在表单上放置了一个 DataGridView。它有 3 列,所有列数据都来自文件。最初,该文件有大约 600.000 条记录,对应于 DataGridView 中的 600.000 行。

我很快发现,DataGridView 在这么大的数据集下崩溃了,所以我不得不切换到虚拟模式。为此,我首先将文件完全读入 3 个不同的数组(对应于 3 列),然后触发 CellValueNeeded 事件,我从数组中提供正确的值。

但是,正如我们很快发现的那样,该文件中可能有大量(大量!)记录。当记录大小非常大时,将所有数据读入数组或 List<> 等似乎是不可行的。我们很快就会遇到内存分配错误。(内存不足异常)。

我们被困在那里,但后来意识到,为什么要先将数据全部读入数组,为什么不在 CellValueNeeded 事件触发时按需读取文件?这就是我们现在要做的:我们打开文件,但不读取任何内容,并且随着 CellValueNeeded 事件的触发,我们首先将 Seek() 到文件中的正确位置,然后读取相应的数据。

这是我们能想到的最好的方法,但是,首先这很慢,这使得应用程序迟缓并且对用户不友好。其次,我们不禁认为必须有更好的方法来实现这一点。例如,一些二进制编辑器(如 HXD)对于任何文件大小都非常快,所以我想知道如何实现这一点。

哦,为了增加我们的问题,在 DataGridView 的虚拟模式下,当我们将 RowCount 设置为文件中可用的行数(比如 16.000.000)时,DataGridView 甚至需要一段时间才能初始化自身。对此“问题”的任何评论也将不胜感激。

谢谢

0 投票
2 回答
1595 浏览

mysql - 在 MySQL 中对大表进行 UPDATE 查询

我有一个包含 21M 记录的 MySQL 数据库,我正在尝试对大约 1M 记录进行更新,但查询失败ERROR 1206 (HY000): The total number of locks exceeds the lock table size.

是否可以在不获取锁的情况下更新表?

我无权更改 MySQL 配置参数,例如innodb_buffer_pool_size. 有没有不同的方法来实现相同的目标?

谢谢

编辑

  1. 我已经分批尝试了 5000 个,它工作了几次,但我得到了同样的错误
  2. 我试过 LOCK TABLES 来锁定整个表,但它仍然不起作用。
0 投票
2 回答
1633 浏览

android - 下载大型应用程序数据模式

我正在为 Android 开发地图渲染应用程序。地图数据相当大,大约 1.1 Gb。由于 .apk 大小在市场和手机中都有限制,因此建议在应用程序启动时下载它。

这是我现在使用的模式:
1. 主要活动(用于渲染地图)检查数据是否可用,如果没有,我启动下载活动
2. 下载活动启动本地服务
3. 服务下载 zip 文件并解压地图数据
4. 服务向下载活动和通知发送事件

我生成了一项服务,因为整个过程可能需要 30 分钟到几个小时,具体取决于电话和网络。

但是我无法确保只有一个程序实例正在运行,我尝试了所有的 launchmode 属性组合都没有帮助。

正如您可能理解的那样,运行的两个实例会使下载/解压缩崩溃。

这真是令人沮丧!现在我正在对 sdcard 文件锁进行一些丑陋的读/写操作,并且它大部分时间都在工作以确保只有一个实例正在运行。

我的目标是 Android 1.6 及更高版本。

0 投票
1 回答
2455 浏览

mysql - MYSQL - 拆分一个非常大的表 - 请提供建议

我有一个 InnoDB 表,它有大约 17 个规范化列和大约 600 万条记录。表的大小约为 15GB。表中的查询开始花费太长时间,有时会超时/崩溃。我正在考虑拆分桌子,但很困惑哪种方式会更好。我是否将列拆分为相同/不同数据库上的不同表?或者我是否将表的行拆分到另一个数据库中,但是我怎么知道哪一行在数据库中的位置。

有人提到了一些关于 Map/Reduce 的事情,但让我更加困惑。对此的任何帮助将不胜感激。

谢谢。

0 投票
2 回答
238 浏览

mysql - 哪个数据库引擎适合 10^10 条记录?

我打算使用 mysql 来存储我的数据集。我有大约 10^8(亿)条记录: ID(int), x(float), y(float), z(float), property(float).

哪种数据库引擎适合这种数据集 InnoDB 或 MyISAM?或者也许是 ndb (我不知道可扩展性或性能)?

我打算用以下问题查询静态数据集:

选择getRectagularRegiongetPointsInSphere

0 投票
3 回答
32431 浏览

jquery - 处理选择框中的大量数据

您好我正在使用 jQuery 并从我的一个 mySQL 表中检索“项目”。我在该表中有大约 20,000 个“项目”,它将在我的表单中用作搜索参数。所以基本上他们可以搜索包含该“项目”的“购买”。

现在我需要他们能够从下拉列表中选择“项目”,但是用 20,000 个“项目”填充下拉列表需要很长时间。我想知道是否有任何支持自动完成下拉框分页的 jQuery 插件。

这样,用户可以开始输入前几个字母并过滤列表,或者只需单击箭头并查看可能 20 个项目,最后一个是“请单击更多”。

对于处理庞大的数据集和使用所述数据集填充 HTML 选择框,我愿意接受任何其他建议。

此搜索页面上可能有多个选择框,用户可以在其中选择“项目”或“客户”或任何类似的内容,然后单击“搜索”。

0 投票
1 回答
767 浏览

svn - SVN结帐项目没有标签的主干和分支

我在 SVN 中有一个具有经典结构的大型项目:

我想从主干创建一个新分支,据我所知,我应该将存储库签出到我的计算机。我可以只签出主干和分支文件夹吗?我必须为此做些什么?

0 投票
3 回答
113 浏览

php - 你能让我的生活更轻松吗?(大型代码库和补丁问题)

所以我正在处理一个非常大的代码库,超过 3000 个文件,超过 100 万行代码和 500 多个表。

虽然这不是真正的问题。这里的问题是,当需要一个新功能时,我会在我的机器上本地处理它,而当需要更新/修补我们的实时生产时:

  1. 我 ssh 到我们的产品服务器
  2. 我导航到目录,然后打开要修补的文件
  3. 我复制粘贴???我的天啊

无论如何,这是我的看法,请建议你们是否有其他选择或更愿意这样做

  1. 首先,我们迁移到 GIT。(我们在 SVN 中)

  2. 每次发布时,我们在 git repo 中进行分支,然后在我们的 prod 服务器中克隆一个新副本(现在我们在 svn 中创建一个分支,然后进行 svn 导出,然后将其复制到目标目录

  3. 当用新功能修补服务器时,我可以简单地转到目标 repo/release,然后执行 git pull?? 还是我应该使用 git 补丁?

这就是我对更简单生活的设想。

你们会想出比这更容易的东西吗?