引言
做这件事情之前,首先
1. 对于MySQL,首先需要改改mysql的默认存储路径,以免因为硬盘分区或者挂载容量的问题,导致数据插入不成功。
两个解决方案:
http://dba.stackexchange.com/questions/24403/change-existing-datadir-path
http://stackoverflow.com/questions/1795176/how-to-change-mysql-data-directory
2. 对于mongodb,只需要改一下启动时命令行的存储路径。
MYSQL
1. 建表 (仅列举三个字段, 实际当中为20+ 字段)
create table device ( id int not null auto_increment, deviceID char(16), createDate TIMESTAMP default current_timestamp, primary key(id) ) ENGINE=MYISAM DEFAULT CHARSET=utf8; CREATE INDEX did_index ON device (deviceID) USING BTREE;
相比于默认的INNODB引擎,MYISAM(非关系型存储)对于批量数据插入效率较高
2. 生成数据的标准格式参照 --- https://dev.mysql.com/doc/refman/5.5/en/loading-tables.html (tab分隔字段)
实际中,用Python脚本生成的数据文件(txt) 大小为10GB左右,索引大小为1.7G左右。
3. 将txt文件导入mysql --- https://dev.mysql.com/doc/refman/5.5/en/loading-tables.html,耗时20--30分钟。 生成数据库大小为12GB -- 13 GB
mysql> LOAD DATA LOCAL INFILE '/path/device.txt' INTO TABLE device;
4. 按索引进行查询(非索引覆盖),普通硬盘的访问时间5秒,SSD在0.3--0.5秒,由此看出,瓶颈在硬盘读写。
MONGODB
参考资料:https://www.khalidalnajjar.com/insert-200-million-rows-into-mongodb-in-minutes/
1. mongodb启动时,关闭journal。
$ mongod --nojounal --dbpath /sandbox/mongo_data --port 27018
2. 访问mongodb
$ mongo localhost:27018/test1
3. 导入数据 (可以去官网查询import的具体参数细节)
$ mongoimport --db test1 --host localhost --port 27018 --collection device --drop --type tsv --headerline --file /sandbox/device_tsv.tsv --numInsertionWorkers 8
note: 为了提高mongodb的插入效率,我们可以采用mongodb推荐的(numInsertionWorkers)多线程操作。本质来说,就是将insert任务,拆分成多个线程来做。
a. mongodb 导入数据文件格式不支持txt, 但是支持tsv --- 数据记录用tab分隔的文件格式
b. 脚本生成的数据大小为10GB -- 11GB (device_tsv.tsv)
c. 在导入数据前,不生成索引。在数据批量插入以后生成,可以大大提高插入效率。
d. 实际导入数据库后,发现指定目录的数据存储为218GB。 导入时间不足一小时。
e. 但是查询效率表现不俗,在普通硬盘上按索引查询,在0.5秒左右。
个人感觉,所谓的数据的插入和查询,相比较而言只不过是空间和时间的相互转化利用。
相关推荐
然而,当需要将这些数据与更复杂的数据库系统集成时,例如关系型数据库(如MySQL、SQL Server、Oracle)或者NoSQL数据库(如MongoDB),Excel的数据导入工具就显得尤为重要。 该工具通常具备以下关键特性: 1. **...
5. **聚合框架**:MongoDB提供了强大的聚合框架,可以进行复杂的数据分析和报告生成,无需将数据导出到其他工具。 6. **备份与恢复**:MongoDB支持多种备份策略,包括oplog tailing、snapshot和云备份,以确保数据...
在你的项目中,有一个名为`cfg_mongo_indb_tool`的文件,这可能是用来从MongoDB数据库导入数据到MySQL数据库的工具或配置文件。如果你需要从MongoDB迁移数据到MySQL,你需要先使用MongoDB的驱动程序(如MongoDB....
Percona Toolkit 是一个由一系列高级命令行工具组成的集合,这些工具主要用于执行那些手动操作起来较为困难或复杂的 MySQL、MongoDB 及系统任务。这些工具作为私有或一次性脚本的理想替代方案,不仅经过了专业开发、...
3. **自动化流程**:为了提高效率,系统可能实现了自动化处理流程,如自动导入、分类和解析财务数据,自动执行匹配任务,并自动生成报告。这样可以减少人为干预,降低错误率,同时释放人力资源进行更复杂的分析工作...
3. 导入工具:可以使用多种工具将Excel数据导入数据库,比如SQL Server Management Studio (SSMS) 的“导入和导出数据”向导,或者MySQL Workbench的“数据导入/导出”功能。此外,还有一些第三方工具,如ETL(提取...
- **导入向导**:支持从 CSV、XML 等格式导入数据。 - **导出向导**:可以将数据导出为多种格式。 #### 十、总结 Navicat 作为一款全面的数据库管理工具,不仅满足了专业开发者的高级需求,还为新手提供了易于上手...
- **导入向导**: 支持从各种文件格式导入数据到数据库。 - **导出向导**: 支持将数据库中的数据导出为不同的文件格式。 - **数据传输**: 在不同类型的数据库之间传输数据。 通过以上详细介绍可以看出,Navicat 16...
- MySQL 安装后会自动生成几个系统数据库,用于存储系统级别的信息。 - **系统数据库**:这些系统数据库包括`information_schema`、`mysql`、`performance_schema`和`sys`等。 - **解析**:本题答案为A、C、D。 ...
用户可以直接将表中的数据复制粘贴到Excel中进行处理,或者从Excel粘贴数据回到数据库表,极大地提高了数据导入导出的效率。 3. **数据差异比较**:A5M2提供了一项实用的功能,即首次执行和再次执行的数据差异比较...
标题中的“数据库抽出脚本并生成代码的工具”是指一类能够帮助用户从数据库中抽取结构化数据,并将其转换为可执行的SQL脚本或者自动生成相应的编程代码的软件工具。这些工具通常用于数据库备份、迁移、同步或者数据...
- 数据库的例子包括关系型数据库(如 MySQL)、文档数据库(如 MongoDB)等。 #### 7. 数据模型描述的内容 - **知识点**: 数据模型所描述的主要内容。 - **详细解释**: - 数据模型描述了数据的结构、操作和约束...
- 存储系统设计:考虑数据库选择(如MySQL、MongoDB)和数据备份策略。 - 部署与监控:设置定时任务,监控爬虫运行状态,及时发现并解决问题。 二.亚马逊美国站爬虫软件设计 1. 类目 - 根据产品类别进行分类...
平台采用数据库管理系统来存储教学数据,如MySQL、PostgreSQL或MongoDB,这些系统能够高效管理和查询大量结构化或非结构化数据。 6. Web开发框架 为了实现用户界面和交互功能,平台可能采用Django或Flask这样的...
4. **存储接口**:`raffiot`可能支持多种数据存储解决方案,如数据库(如SQLite、MySQL、MongoDB)、文件系统或云存储服务(如Amazon S3)。这些接口使开发者能轻松地将物联网数据保存和组织起来。 5. **数据分析与...
- **NoSQL数据库**(如MongoDB、Cassandra):适用于非结构化或半结构化数据的存储,可以提供更高的可扩展性和灵活性。 - **文件存储**(如CSV、Excel):适用于小规模数据的存储和共享,便于导入导出。 ### 3. ...
标题和描述中提到的是一个关于印度尼西亚邮政编码的数据资源,包含了多个格式,如MySQL、PostgreSQL、JSON和Csv,方便在不同环境下使用。这些数据提供了印度尼西亚的邮政编码信息,结合了行政区域级别,如村庄...
Navicat的最新版本不仅增强了用户体验,还引入了多项新功能,旨在提高数据处理的效率和安全性。 **安装** 安装Navicat的过程简单直观,只需按照安装向导的指示进行即可。安装过程中可以选择自定义安装选项,包括...