WiredTiger

mongodb impossible (?) E11000 duplicate key error dup key when upserting

拥有回忆 提交于 2020-07-16 16:55:13
问题 My understanding is that update with upsert:true on a single document is an atomic operation so this should never result in a duplicate key error, especially not on the primary _id key, when the collection has no unique-ly indexed fields: Order.update({ _id: order._id }, query, { upsert: true }, cb) // with mongoose But this appears in the mongod.log: 2015-03-27T09:39:10.349-0400 I WRITE [conn258236] update xyz.orders query: { _id: "6353f880-c6a7-4260-809f-98e0af27b9a2" } update: { $set: { ..

How to do fuzzy string matching of bigger than memory dictionary in an ordered key-value store?

南笙酒味 提交于 2020-06-29 03:54:07
问题 I am looking for an algorithm and storage schema to do string matching over a bigger than memory dictionary. My initial attempt, inspired from https://swtch.com/~rsc/regexp/regexp4.html, was to store trigams of every word of the dictionary for instance the word apple is split into $ap , app , ppl , ple and le$ at index time. All of those trigram as associated with the word they came from. Then I query time, I do the same for the input string that must be matched. I look up every of those

MongoDB 安装部署需求(官方文档)

不想你离开。 提交于 2020-05-08 02:40:37
生产平台特定注意事项 https://docs.mongodb.com/manual/administration/production-notes/#prod-notes-ram 1、推荐平台 虽然MongoDB支持多种平台,但建议生产使用以下操作系统: 亚马逊Linux 2 Debian 9和10 RHEL/CentOS 6、7和8 SLES 12和15 Ubuntu LTS 16.04和18.04 Windows服务器2016和2019 另见 平台特定注意事项 2、使用最新的稳定包 确保你有最新的稳定版本。 所有MongoDB版本都可以在MongoDB下载中心页面上找到。MongoDB下载中心页面是验证当前稳定版本的好地方,即使您是通过包管理器安装的。 对于其他MongoDB产品,请参阅MongoDB下载中心页面或其各自的文档。 3、并发性 WiredTiger WiredTiger支持读写器对集合中文档的并发访问。客户端可以在进行写操作时读取文档,多个线程可以同时修改集合中的不同文档。 另见 分配足够的RAM和CPU提供有关WiredTiger如何利用多个CPU核心以及如何提高操作吞吐量的信息。 4、数据一致性 日志记录 MongoDB使用磁盘日志的预写日志记录。日志保证MongoDB可以在mongod因崩溃或其他严重故障而终止的情况下

MongoDB的集群模式--Sharding(分片)

大兔子大兔子 提交于 2020-05-02 11:10:12
分片是数据跨多台机器存储,MongoDB使用分片来支持具有非常大的数据集和高吞吐量操作的部署。 具有大型数据集或高吞吐量应用程序的数据库系统可能会挑战单个服务器的容量。 例如,高查询率会耗尽服务器的CPU容量。 工作集大小大于系统的RAM会强调磁盘驱动器的I / O容量。 有两种解决系统增长的方法:垂直和水平缩放。 垂直扩展 涉及增加单个服务器的容量,例如使用更强大的CPU,添加更多RAM或增加存储空间量。 可用技术的局限性可能会限制单个机器对于给定工作负载而言足够强大。 此外,基于云的提供商基于可用的硬件配置具有硬性上限。 结果,垂直缩放有实际的最大值。 水平扩展 涉及划分系统数据集并加载多个服务器,添加其他服务器以根据需要增加容量。 虽然单个机器的总体速度或容量可能不高,但每台机器处理整个工作负载的子集,可能提供比单个高速大容量服务器更高的效率。 扩展部署容量只需要根据需要添加额外的服务器,这可能比单个机器的高端硬件的总体成本更低。 权衡是基础架构和部署维护的复杂性增加。 MongoDB支持 通过 分片进行 水平扩展 。 一、组件 shard :每个分片包含分片数据的子集。每个分片都可以部署为 副本集(replica set )。可以分片,不分片的数据存于主分片服务器上。 部署为3成员副本集 mongos :mongos充当查询路由器,提供客户端应用程序和分片集群之间的接口

009.MongoDB分片群集部署

独自空忆成欢 提交于 2020-05-01 02:42:02
一 前期准备 1.1 组件说明 MongoDB分片群集包含以下组件: shard:每个分片是分片数据的子集。从MongoDB 3.6开始,必须将分片部署为副本集。 mongos:mongos充当查询路由器,提供客户端应用程序和分片集群之间的接口。 config servers:配置服务器存储群集的元数据和配置设置。从MongoDB 3.4开始,必须将配置服务器部署为副本集(CSRS)。 注意:mongos不需创建复制集,config不需指定主副节点及仲裁节点,但是要创建复制集。 1.2 组件规划 本实验基于生产环境考虑,组件规划如下: 将Config Server部署为3成员副本集; 将每个Shard部署为3成员副本集,总共部署三个shard; 部署两个mongos路由器。 提示:部署多个mongos路由器支持高可用性和可伸缩性。常见的模式是mongos在每个应用程序服务器上放置一个,可以减少应用程序和路由器之间的网络延迟。 也可以将mongos路由器放在专用主机上,通过用于大型规模部署。因为它将客户端应用程序服务器的数量与mongos实例数量分离。这样可以更好地控制mongod实例所服务的连接数。 注意:mongos路由器部署的数量没有限制。但是,由于mongos路由器经常与Config Server通信,因此在增加路由器数量时会密切监视配置服务器性能。如果发现性能下降

mongodb分片集群 搭建 + keyFile认证

巧了我就是萌 提交于 2020-04-30 14:05:16
创建mongodb分片集群 + keyFile认证 一、环境准备    1. 服务器节点信息【三台服务器】     x.x.x.159、 x.x.x..160、 x.x.x..161    2. 服务器系统     linux x86_64 GNU/Linux 或者 centos7 或者 redhat   3. mongodb版本     mongodb v4.2.5     下载地址:https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-rhel70-4.2.5.tgz 二、 集群环境设计   1. 三个 分片 复制集合     shard1(x.x.x.159:27017、 x.x.x.160:27017、 x.x.x.161:27017)     shard2(x.x.x.159:27018、 x.x.x.160:27018、 x.x.x.161:27018)     shard3(x.x.x.159:27019、 x.x.x.160:27019、 x.x.x.161:27019)   2. 一个 config 复制集合     (x.x.x.159:28018、 x.x.x.160:28018、 x.x.x.161:28018)   3. 一个 mongos 节点     (x.x.x.159:27000) 三

MongoDB + mongo-express 环境搭建记

我的未来我决定 提交于 2020-04-27 23:12:24
最近项目需要使用 MongoDB,所以不得不搭建 MongoDB 环境,此文记录搭建过程及使用过程中需要了解的问题。 Linux + Windows 混合搭建调试 MongoDB 记录 版本介绍 : windows : win10 64bit linux:ubuntu 14.0.4 nodejs:6.11.2 MongoDB: 4.0.9 MongoDB安装 MongoDB下载地址: https://www.mongodb.com/download-center/community ubuntu安装MongoDB 1. 下载:点击上方链接选择目标 可以直接点击 DownLoad 下载,或者使用上图链接下载 解压提取 将其中内容移动到/usr/local/mongodb 2. 创建用于存储的数据库和日志目录,数据都将存于此地 该路径可配置,配置文件中要相应参数与之对应 mkdir -p /data/db # 默认数据库目录路径,应手动予以创建 mkdir -p /data/logs 3. 配置环境变量 vi ~/.bashrc 在最后一行插入 export PATH=/usr/local/mongodb/bin:$PATH 4. 运行MongoDB 服务 root@qizhuang-virtual-machine:/# mongod 运行结果: root@qizhuang

MongoDB(1)--MongoDB安装及简介

Deadly 提交于 2020-04-24 20:19:41
一、MongoDB的应用场景及实现原理 二、MongoDB的常用命令及配置 三、手写基于MongoDB的ORM框架 四、基于MongoDB实现网络云盘实战 五、MongoDB 4.0新特性 一、 MongoDB 中的应用场景及设计原理 MongoDB 是一个基于分布式文件存储的数据库。由 C++ 语言编写。旨在为 WEB 应用提供可扩展的高性能 数据存储解决方案。 MongoDB 是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。在这里我们有必要先简单介绍一下非关系型数据库(NoSQL) 1.1 、什么是 NoSQL NoSQL,指的是非关系型的数据库。NoSQL 有时也称作 Not Only SQL 的缩写,是对不同于传统的关系型数据库的数据库管理系统的统称。NoSQL 用于超大规模数据的存储。(例如谷歌或Facebook 每天为他们的用户收集万亿比特的数据)。这些类型的数据存储不需要固定的模式,无需多余操作就可以横向扩展。 1.2 、关系型数据库 PK 非关系型数据库 关系型数据库 NoSQL 数据库 高度组织化结构化数据 代表着不仅仅是 SQL 结构化查询语言(SQL) 没有声明性查询语言 数据和关系都存储在单独的表中 没有预定义的模式 数据操作语言,数据定义语言 键-值对存储,列存储,文档存储,图形数据库 严格的一致性 最终一致性

MongoDB DBA 实践4-----创建复制集

北城以北 提交于 2020-04-24 18:03:04
一、复制 复制允许多个数据库服务器共享相同数据的功能,从而确保冗余并促进负载平衡 1、数据冗余及可用性 复制技术提供数据冗余及可用性,在不同的数据库服务器上使用多个数据副本,复制技术防止单个数据库服务器出现数据故障而出现数据丢失。通过设置从库,你能在上面进行灾难切换、数据备份、报表服务等。在某些应用场景下,你还能提高读的能力,客户端通过将读和写请求分发到不同的服务器上面。 2、MongoDB复制技术 副本集: 一组MongoDB服务器,用于实现复制和自动故障转移。 MongoDB推荐的复制策略。 复制集(replica Set) 或者 副本集 ,由一组Mongod实例(进程)组成,包含 一个Primary节点 和 多个Secondary节点 ,Mongodb Driver(客户端)的所有数据都写入Primary,Secondary从Primary同步写入的数据通过上述方式来保持复制集内所有成员存储相同的数据集,提供数据的高可用性。 3、 复制集(replica Set)主要作用: Failover (故障转移,故障切换,故障恢复) Redundancy(数据冗余) 避免单点,用于灾难时恢复,报表处理,提升数据可用性 读写分离,分担读压力 对用户透明的系统维护升级 二、复制集 1、副本集中成员 主要包括三个:主节点、副节点、仲裁节点。 在一个副本集群中,对成员个数的最低要求是

Docker-compose and mongoDB: Failed to start up WiredTiger under any compatibility version?

假如想象 提交于 2020-04-17 21:25:14
问题 I have the following docker-compose file: version: "3" services: # # APIs #---------------------------------------------- pokerstats: image: pokerstats container_name: pokerstats ports: - 8080:8080 depends_on: - db # # Utilities #---------------------------------------------- db: image: mongo container_name: mongo volumes: - ./data/db:/data/db ports: - "27018:27017" environment: MONGO_INITDB_ROOT_USERNAME: admin MONGO_INITDB_ROOT_PASSWORD: admin MONGO_INITDB_DATABASE: pokerStats This was