如何将 2000 万条记录插入 NoSQL 数据库

已发表: 2022-11-24

有多种方法可以将 2000 万条记录插入 NoSQL 数据库。 一种方法是使用数据库的批量加载功能。 这将要求数据采用数据库可以理解的特定格式,这将是加载数据的最有效方式。 另一种方法是使用脚本或应用程序一次一条记录地插入数据。 这将是一个较慢的过程,但不需要数据采用特定格式。

Mongodb 可以处理数百万条记录吗?

图片来源:freecodecamp.org

要实时处理数百万条记录,您应该使用 MongoDB 和 ElasticSearch。 在大型数据集中使用这些结构和概念也将是有利的。

通过优化大量 MongoDB 插入,我们可以将 5000 万条记录的加载速度提高 33%! Github 设置页面是您可以找到所有这些程序的代码的地方。 我以 25-35 Mbps 的上行链路速度和 25-35 Mbps 的连接速度测试了我的 Macbook Pro。 在此实验中,结果可能与在产品就绪 EC2 上获得的结果不同。 Kaggle数据测试平台是测试数据的绝佳选择,因为它已经准备好了数据集。 yelp_academic_dataset_review.json 是一个 5 GB 的文件,包含 690 万条记录。 节点读取文件后,Mongo 写入 100 万条记录用时 2.5 小时。

建议使用此工具生成不超过 200 万个数据点。 一个Node.js 缓冲区实体不能包含超过 2GB 的文件。 在这里使用 Streams 是完全合理的。 我们可以在这个例子中插入 100k 顺序数据,稍有延迟。 插入插入物需要 29 分钟。 因为在所有流上都使用了 EventEmitter,所以是这样的。 此 CPU 使用率已增加到 40%,比按顺序插入 100k 多 10%。

IOPS 几乎翻了一番,从 50 增加到 100,连接数从 40 增加到 60。它应该遍历每个文件夹,读取文件,并在那里保存 reviews 数组长度的计数器。 如果以后这种方式效果好,可以应用到后面的插入; 花点时间看看它是如何工作的。 在本节中,我们查看了读取 51936 个文件夹并插入 6300 万条记录需要多长时间。 我们必须知道为了达到下一个百万记录读取了多少文件夹,因为数据插入可以在以后并行化。 该系统大约需要一个半小时来插入 6300 万条记录。 我们之前曾预测它会比这快 33%!

我们在一个半小时内加载了近 45GB 的数据。 整个期间的 IOPS 为 125,大部分时间连接数保持在 100 左右。 现在结果出来了,我想我可以开始为未来做计划了。 InsertMany 允许您在不到一分钟的时间内插入 100 万条记录。 对于 1 到 10 米之间的加载,很可能需要 Stream API 来并行化插入。 由于集群 CPU 和 IOPS 非常重,应用程序性能会受到很大影响。 运行调度脚本以确定可以同时执行多少个操作/进程。

MongoDB 除了是大文件的绝佳选择外,还具有许多优于其他文件存储系统的优势。 首先,大文件可以很容易地存储在数据库中。 此外,数据库具有处理大量对象的能力。 最后,数据库可水平扩展,使其能够处理更大量的数据而不会变得不堪重负。 如果你想在数据库中存储海量文件,MongoDB 是一个很好的选择。 与其他存储和可扩展性选项相比,使用它有很多优势。

Mongodb 文档的最大大小是多少?

图片来源:brain-mentors.com

MongoDB 文档的最大大小为 16 兆字节。

如何在 Mongodb 中插入数百万条记录

假设您有一个正在运行的 MongoDB 服务器并创建了一个数据库和集合,您可以使用 insert() 方法插入记录。 此方法可以采用文档数组或单个文档。
要插入单个文档,请使用以下语法:
数据库.collection.insert(
{
姓名:“约翰·多伊”
}
)
要插入多个文档,请使用以下语法:
数据库.collection.insert([
{
姓名:“约翰·多伊”
},
{
名称:“Jane Doe”
}
])

你有几个选择。 可以为每个设备 ID 创建一个单独的集合,然后分别查询该 ID。 如果您有很多设备,这可能会很昂贵。 如果要搜索集合中的所有文档,您可以对所有设备的同一个集合执行相同的操作。 如果您拥有大量设备,这项服务的费用可能会高得令人望而却步。 第三个选项是创建一个分片集合。 负载将分布在 Mongo 上,从而加快查询处理速度。 如果要使用分片集合选项创建集合,请确保将分片选项设置为 true。

Mongodb:Nosql 数据库管理系统

MongoDB 是一种 NoSQL 数据库管理系统,用于处理文档。 它可以处理范围广泛的数据文件,每个文档的默认限制为 100,000 个索引键。 因此,MongoDB 平台能够存储大量数据而不会变得负担过重。 批量插入是 MongoDB 中的一项便利功能。 如果您要添加大量数据,它会很有用,因为它可以一次插入多个文档。

Mongodb 批量插入限制

MongoDB 3.6 版本目前产量为 100,000。

批量插入方法允许将多个文档一次插入到 MongoDB 中。 作为参数,insert 方法生成一个文档数组。 用户不需要在他们的查询中包含所有字段。 在这个例子中,让我们使用命令行使用 MongoDB 批量插入来插入多个文档。 批量插入数字是使用 Bulk.insert() 方法完成的。 这个方法是2.6版本之后引入的,类似于unordered bulk insert。 我们首先创建一个名称为 carbulk1 的有序汽车列表,然后通过对它们执行 execute 方法来插入文档。 此 Java 程序首次演示了如何使用 shell 命令运行各种批量操作

Mongodb 有限制吗?

MongoDB 支持 100 层的嵌套深度,因此文档的大小可以达到 16MB。 MongoDB 数据库最多只能包含 20GB 的数据。