MongoDB学习随笔
关于MongoDB学习过程中的随笔记录
Lestat.Z.
lestatzhang.com
展开
-
在pymongo中如何将数据提取到有序字典OrderedDict里面
前言项目需要在原有的旧表里面添加一个新字段然后插入有一个新表里面,同时需要保持原有其他字段的顺序,如果直接使用pymongo读取的话,每一条document是存到到dict数据类型里面的,不能保证key的顺序。如果想保证key的顺序,就需要将数据存储到有序字典,也就是OrderedDict里面。搜索了一番,发现bson里面有更方便的方法,即使使用SON对象,例子如下:代码范例from bso...原创 2019-06-11 21:04:46 · 1228 阅读 · 0 评论 -
MongoDB常见问题 —— 复制和副本集
前言MongoDB支持哪种复制?MongoDB支持副本集,最多可包含50个节点。MongoDB 4.0删除了对不推荐使用的主从复制的支持。复制是否可以通过Internet和WAN连接工作?是。例如,部署可以在东海岸数据中心维护主要和次要以及在西海岸数据中心进行灾难恢复的次要成员。MongoDB可以通过“noisy”连接进行复制吗?是的,但可能会有连接失败和明显的延迟。该组的成员...原创 2019-05-19 15:46:18 · 319 阅读 · 0 评论 -
关于MongoDB中的oplog
关于MongoDB中的oplog什么是oplogoplog的用处oplog的大小影响Oplog大小设置的工作负载如何查看Oplog状态oplog数据结构什么是oplogThe oplog (operations log) is a special capped collection that keeps a rolling record of all operations that modif...原创 2019-05-08 22:30:47 · 1986 阅读 · 0 评论 -
关于MongoDB连接字符串URI格式
连接字符串格式你可以使用以下任一方法指定MongoDB连接字符串:标准连接字符串格式DNS种子列表连接格式。标准连接字符串格式本节介绍用于连接MongoDB部署的MongoDB连接URI的标准格式:独立,副本集或分片集群。标准URI连接方案具有以下形式:mongodb://[username:password@]host1[:port1][,...hostN[:portN]]]...原创 2019-05-07 22:06:17 · 25170 阅读 · 3 评论 -
关于MongoDB的Write Concern
关于MongoDB的Write Concern什么是写入关注一些注意点在没有wtimeout的情况下在副本集上设置写入关注会导致写入无限期地阻塞即使使用w:majority,也可能会丢失数据设置j:true时将w设为0并不会提高写入性能参考资料什么是写入关注从MongoDB的文档中我们可以看到写入关注(Write Concern) 定义为“从MongoDB请求对standalone mongo...原创 2019-05-06 21:44:47 · 1196 阅读 · 0 评论 -
MongoDB常见问题 —— 并发
前言MongoDB允许多个客户端读取和写入相同的数据。 为了确保一致性,它使用lock和其他并发控制措施来防止多个客户端同时修改同一条数据。 总之,这些机制保证对单个文档同时只可能被一个客户端写入,并且客户端永远不会看到数据的不一致视图。MongoDB使用什么类型的锁?MongoDB使用多粒度锁,允许操作锁定全局,数据库或集合级别,并允许各个存储引擎在集合级别下实现自己的并发控制(例如,在W...原创 2019-05-01 20:51:01 · 7966 阅读 · 0 评论 -
MongoDB常见问题 —— 存储引擎
MongoDB常见问题 —— 存储引擎存储引擎基础知识什么是存储引擎?可以在副本集中混合存储引擎吗?WiredTiger存储引擎我可以将现有部署升级到WiredTiger吗?WiredTiger提供多少压缩?我应该设置WiredTiger内部缓存的大小?WiredTiger写入磁盘的频率如何?CheckpointsJournal Data如何在WiredTiger中回收磁盘空间?MMAPv1 存储...原创 2019-04-28 11:34:28 · 514 阅读 · 0 评论 -
MongoDB常见问题 —— 索引
MongoDB常见问题 —— 索引如何创建索引?索引构建如何影响数据库性能?如何查看集合中存在哪些索引?如何查看查询是否使用索引?如何确定要索引的字段?如何查看索引的大小?写操作如何影响索引?如何创建索引?要在集合上创建索引,请使用db.collection.createIndex()方法。 创建索引是一种管理操作。 通常,应用程序不应定期调用db.collection.createIndex...原创 2019-04-27 20:21:36 · 305 阅读 · 0 评论 -
MongoDB常见问题 —— MongoDB基础知识
MongoDB支持哪些平台?有关支持的平台列表,请参阅[支持的平台]。MongoDB集合与数据库中的表有何不同?MongoDB数据库将其数据存储在集合中,而不是表。 集合包含一个或多个BSON文档。 文档类似于关系数据库表中的记录或行。 每个文档都有一个或多个字段; 字段类似于关系数据库表中的列。如何创建数据库和集合?如果数据库不存在,MongoDB会在你第一次存储该数据库的数据时创建数...原创 2019-04-22 22:17:42 · 317 阅读 · 0 评论 -
关于MongoDB使用regex查询COLLSCAN反而比IXSCAN快的问题
问题描述今天做了一个POC测试,使用regex来查询满足条件的记录。MongoDB中的记录格式如下:{ shoplist: "FAMILY MART:STARTBUCKS:SEVEN ELEVEN:LAWSON" client_id: "1234568789"}使用的查询语句(python)如下:client['my_db']['shop'].find( { "$or": ...原创 2019-04-22 21:30:17 · 2027 阅读 · 0 评论 -
MongoDB索引 —— 全文索引(Text Indexes)
文本索引概述版本支持创建文本索引指定权重通配符文本索引大小写不敏感(Case Insensitivity)变音符不敏感(Diacritic Insensitivity)标记分隔符(Tokenization Delimiters)支持的语言和停用词稀疏属性(sparse Property)限制每个集合只能有一个文本索引文本搜索和提示文本索引和排序复合索引删除文本索引校对选项(Collation Op...原创 2019-04-21 11:46:46 · 8186 阅读 · 0 评论 -
Apache Pig使用MongoLoader产生大量空文件问题
文章目录问题描述原因分析解决方法问题描述项目中需要利用Pig MongoLoader将MongoDB里面的数据每日增量备份到hive的外部分区表中,但是在检查hdfs文件发现分区文件夹下产生了大量的小文件/空文件。原因分析由于MongoDB表没有设置retention,该表中的数据也没有被定期清理,随着该表的体力不断增多。这样导致mongoloader在计算split数目的时候会根据tot...原创 2019-02-16 22:08:10 · 229 阅读 · 0 评论 -
将时间戳(timestamp)转换为MongoDB中的ObjectId
文章目录什么是ObjectIdObjectId的构造方法ObjectId实例方法ObjectId与Timestamp的转换shellpythonjavascript什么是ObjectIdObjectId是MongoDB文档的默认主键,通常位于插入文档的_id字段中。例如:{ "_id": ObjectId("507f1f77bcf86cd799439011")}ObjectI...原创 2019-02-25 10:21:46 · 6734 阅读 · 2 评论 -
Pandas加载含有嵌套(nested)文档的mongodb数据
文章目录读取Mongo数据到Pandas的dataframe中不含嵌套数据含有嵌套数据读取Mongo数据到Pandas的dataframe中我们可以通过pymongo包连接mongodb进行数据处理,然后将数据存储到pandas的dataframe里面。例子中的student表的数据结构如下:{’_id’: ObjectId(‘5c7138f4e0411eb39749fdff’), ‘na...原创 2019-02-23 20:42:04 · 2505 阅读 · 2 评论 -
Mac上安装MongoDB后没有默认用户或密码,需要创建用户
默认情况下,MongoDB没有启用访问控制,因此没有默认用户或密码。要启用访问控制,请使用命令行选项·--auth或security.authorization配置文件设置。具体细节请查看官方文档的启用验证章节以下使我在Mac上测试的具体步骤:打开终端,启动MongoDB Daemonmongod --port 27017 --dbpath /data/db在新的终端标签页中进入...原创 2019-02-23 16:22:58 · 4426 阅读 · 0 评论 -
Mac上安装MongoDB
文章目录什么是MongoDB准备工作安装Homebrew安装概述使用Homebrew安装和运行MongoDB从MongoDB官网下载并手动安装什么是MongoDBMongoDB是一个基于分布式文件存储的数据库。由C++语言编写。旨在为WEB应用提供可扩展的高性能数据存储解决方案。MongoDB是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。它支持...原创 2019-02-23 14:29:10 · 3288 阅读 · 0 评论 -
Pymongo index索引相关操作总结
简单总结一下pymongo中与index操作相关一些函数,。可参考一下代码>>>import pymongo as pm>&am原创 2019-02-21 15:20:45 · 10922 阅读 · 5 评论 -
Pig Mongo 连接串多个host报错
问题描述原来pig作业中的连接器只指定了一个primary host,为了防止mongo服务器主从切换时能够继续使用,于是想利用replica set的特性,将多个host传给mongo连接器:例如 ‘mongodb://user:passwd@host1:port1,host2:port2/’但是出现了如下的语法错误pig script failed to validate: java.l...原创 2019-02-20 12:40:57 · 379 阅读 · 0 评论 -
Hive to Mongo Update性能差
文章目录问题描述解决办法问题描述项目中有一个作业是通过pig来利用hive表的数据来更新mongo表的数据,简而言之就是Hive to Mongo use MongoUpdateStorage. 这种方法的效率很低,在UAT环境里面测试时竟然卡住不动。解决办法因为mongo的更新类似于SCD1,所以可以用 “delete & insert”的方法来代替update操作。具体步骤就是...原创 2019-02-19 22:20:35 · 369 阅读 · 0 评论