首页 文章 精选 留言 我的

精选列表

搜索[系统],共10012篇文章
优秀的个人博客,低调大师

MongoDB系统

本文基于MongoDB社区版 3.4.21、3.6.12、4.0.11,WT引擎。 一、单节点 单节点启动后会有admin、config、local三个库(3.4没有config库) 1、admin库 当Mongod启用auth选项时,用户需要创建数据库帐号,访问时根据帐号信息来鉴权,而数据库帐号信息就存储在admin数据库下。三个版本单节点都是默认只有 system.version 集合。另外还会有下面两个集合: db.getCollectionNames()[ "system.users", "system.version" ] system.version:authSchema的版本信息 system.users:数据库帐号信息 system.roles:用户创建的自定义的角色 2、config库 单节点只有system.sessions集合(3.6和4.0) db.getCollectionNames()[ "system.sessions" ] > db.system.sessions.find().pretty() { "_id" : { "id" : UUID("d491010e-3998-4256-b17e-86e2ced4c12f"), "uid" : BinData(0,"47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU=") }, "lastUse" : ISODate("2019-07-31T07:56:33.202Z") } 3、local库 单节点只有startup_log集合 { "_id" : "<string>", "hostname" : "<string>", "startTime" : ISODate("<date>"), "startTimeLocal" : "<string>", "cmdLine" : { "dbpath" : "<path>", "<option>" : <value> }, "pid" : <number>, "buildinfo" : { "version" : "<string>", "gitVersion" : "<string>", "sysInfo" : "<string>", "loaderFlags" : "<string>", "compilerFlags" : "<string>", "allocator" : "<string>", "versionArray" : [ <num>, <num>, <...> ], "javascriptEngine" : "<string>", "bits" : <number>, "debug" : <boolean>, "maxBsonObjectSize" : <number> } } 集合里每个字段含义: _id:包含主机名和毫秒记录的启动开始时间 hostname:主机名 startTime:启动时间,ISODate(零时区) startTimeLocal:启动时间,当前时区 cmdLine:mongod运行时的参数和值 pid:进程id buildinfo:有关构建环境和编译mongod的信息 二、副本集 副本集配置启动后会有admin、config、local三个库(3.4没有config库) 1、admin库 和单节点一样,也是有三个集合 system.version:authSchema的版本信息 system.users:数据库帐号信息 system.roles:用户创建的自定义的角色 system.profile:记录慢查询没有新建任意user前,3.4、3.6执行命令show dbs会报错,4.0不显示数据 3.6、4.0还有另外一个集合: system.keys system.profile集合:固定大小,可开启和关闭,有三个级别: 0:分析器关闭,不收集数据,默认级别 1:记录超过slowms值的操作,默认100ms 2:记录所有操作 3.6和4.0可以在每个数据库上开启profile,在哪个库开启就会在哪个库里生成system.profile文件 db.getProfilingStatus() 查看profile状态db.setProfilingLevel(2) 设置级别db.setProfilingLevel(1,200) 设置级别和时间 > db.system.profile.find().sort({$natrual: -1}).pretty() { "op" : "insert", #操作类型 "ns" : "admin.system.keys", #操作集合 "command" : { #如果操作是一个command,则command语句记录在此 "insert" : "system.keys", "bypassDocumentValidation" : false, "ordered" : true, "documents" : [ #操作的文档内容 { "_id" : NumberLong("6720157387556126721"), "purpose" : "HMAC", "key" : BinData(0,"+b1y3EEiAotQVRbepLmbm1rmJd4="), "expiresAt" : Timestamp(1572434570, 0) } ], "writeConcern" : { #写关注 "w" : "majority", "wtimeout" : 60000 }, "$db" : "admin" }, "ninserted" : 1, #此次操作插入的文档数 "keysInserted" : 1, "numYield" : 0, "locks" : { #操作过程中产生的锁 "Global" : { #全局锁 "acquireCount" : { #请求锁的次数 "r" : NumberLong(5), "w" : NumberLong(5) } }, "Database" : { "acquireCount" : { "w" : NumberLong(2), "W" : NumberLong(3) } }, "Collection" : { "acquireCount" : { "w" : NumberLong(2) } }, "oplog" : { "acquireCount" : { "w" : NumberLong(2) } } }, "responseLength" : 214, #结果返回的大小,单位是Bytes "protocol" : "op_msg", "millis" : 1086, "ts" : ISODate("2019-08-01T11:22:51.902Z"), "client" : "", "allUsers" : [ ], "user" : "" } system.keys集合:需要__system角色打开 > db.system.keys.find() { "_id" : NumberLong("6720157387556126721"), "purpose" : "HMAC", "key" : BinData(0,"+b1y3EEiAotQVRbepLmbm1rmJd4="), "expiresAt" : Timestamp(1572434570, 0) } { "_id" : NumberLong("6720157387556126722"), "purpose" : "HMAC", "key" : BinData(0,"OABX4QZU3C6sdOI3EKj2LlQtkyE="), "expiresAt" : Timestamp(1580210570, 0) } 2、config库 3.4没有这个库;3.6和4.0有这两个集合: system.sessions transactionssystem.sessions集合:需要__system角色打开 > db.system.sessions.find() { "_id" : { "id" : UUID("312b809d-f803-4337-9b20-69c4e2210111"), "uid" : BinData(0,"Y5mrDaxi8gv8RmdTsQ+1j7fmkr7JUsabhNmXAheU0fg=") }, "lastUse" : ISODate("2019-08-01T12:46:58.830Z"), "user" : { "name" : "root@admin" } } { "_id" : { "id" : UUID("e506aabc-2e42-4c5c-bf27-ff422acbe821"), "uid" : BinData(0,"+4UbpPFz9hCPjjdCpxi6Q3h1xgS8xiPKP9i/uOd1Z6w=") }, "lastUse" : ISODate("2019-08-01T12:57:21.953Z"), "user" : { "name" : "root1@admin" } } 3、local库 local数据库里的内容不会同步到副本集里其他节点上去;主要存储副本集的配置信息、oplog信息。3.4和3.6都有集合: me oplog.rs replset.election replset.minvalid startup_log system.profile system.replset 3.6还有集合: system.rollback.id 4.0的全部集合: oplog.rs replset.election replset.minvalid replset.oplogTruncateAfterPoint startup_log system.profile system.replset system.rollback.id以下对各个集合进行说明. me集合: > db.me.find() { "_id" : ObjectId("5d42cb567bcca6fdecc4712a"), "host" : "vm1" } oplog.rs:存储oplog的固定大小集合replset.election集合: > db.replset.election.find() { "_id" : ObjectId("5d42cb897bcca6fdecc471bd"), "term" : NumberLong(1), "candidateIndex" : NumberLong(0) } replset.minvalid集合:内部使用,跟踪复制状态 > db.replset.minvalid.find() { "_id" : ObjectId("5d42a86c34683d5c080e38af"), "ts" : Timestamp(0, 0), "t" : NumberLong(-1) } startup_log集合:和单节点一样system.replset集合:副本集的配置信息,和使用rs.conf()命令看到的一样 { _id: <string>, version: <int>, protocolVersion: <number>, writeConcernMajorityJournalDefault: <boolean>, configsvr: <boolean>, members: [ { _id: <int>, host: <string>, arbiterOnly: <boolean>, buildIndexes: <boolean>, hidden: <boolean>, priority: <number>, tags: <document>, slaveDelay: <int>, votes: <number> }, ... ], settings: { chainingAllowed : <boolean>, heartbeatIntervalMillis : <int>, heartbeatTimeoutSecs: <int>, electionTimeoutMillis : <int>, catchUpTimeoutMillis : <int>, getLastErrorModes : <document>, getLastErrorDefaults : <document>, replicaSetId: <ObjectId> } } 各个字段的含义: _id:副本集的名字,无法修改 version:修改迭代次数 configsvr:指示复制集是否用于分片集群的配置server protocolVersion:副本集协议版本,默认为1,3.2及以前为0 writeConcernMajorityJournalDefault:true ifprotocolVersionis 1 and false ifprotocolVersionis 0;跟写关注有关 members:副本集成员信息,存储形式是没有索引的数组。 members[n].arbiterOnly:是否是仲裁节点 members[n].buildIndexes:只能在添加节点时设置此值。有查询就要设置为true。一般只有满足1.只执行mongodump备份2.没有查询3.索引的创建和维护使主机负载过重才会设置为false,设置为false,必须设置members[n].priorityto为0否则添加节点报错。 members[n].hidden:是否是隐藏节点 members[n].priority:优先级,0~1000,数字越大优先级越高。仲裁节点为0。 members[n].slaveDelay:应该滞后的秒数,用于延迟节点 members[n].votes:0或1,仲裁节点总是为1 settings:副本集的配置选项 chainingAllowed:为true,副本集允许secondary节点从其他的副本集节点复制;为false,只能从主复制 getLastErrorDefaults:写关注默认写入设置参数,如cfg.settings.getLastErrorDefaults = { w: "majority", wtimeout: 5000 } heartbeatTimeoutSecs:副本集成员等待彼此成功心跳的秒数,超过此时间则标记为无法访问,仅在protocolVersion为0时使用 electionTimeoutMillis:和heartbeatTimeoutSecs类似,单位毫秒,仅在protocolVersion为1时使用 catchUpTimeoutMillis:默认-1 catchUpTakeoverDelayMillis:默认30000毫秒 heartbeatIntervalMillis:心跳频率,单位毫秒 replicaSetId:初始化副本集时自动创建,无法修改 system.rollback.id集合:需要__system角色才可以打开 > db.system.rollback.id.find() { "_id" : "rollbackId", "rollbackId" : 1 } replset.oplogTruncateAfterPoint集合:When we kill a secondary, we check some invariants in the minValid document. We should extend these to the oplogTruncateAfterPoint. 注意: 重要的数据千万不要存储在local数据库中,否则当一个节点故障时,存储在local里的数据就会丢失

优秀的个人博客,低调大师

JanusGraph系统架构

JanusGraph中文翻译文档 JanusGraph是一个图形数据库引擎。 JanusGraph本身专注于压缩图序列化、丰富图数据建模、高效的查询执行。 此外,JanusGraph利用Hadoop进行图分析和批处理。JanusGraph为数据持久化,数据索引和客户端访问实现了强大的模块化接口。 JanusGraph的模块化架构使其能够与各种存储,索引和客户端技术进行互操作; 这也使得JanusGraph升级对应的组件过程变得更加简单。 在JanusGraph和磁盘之间有一个或多个存储和索引适配器。 JanusGraph标配以下适配器,但JanusGraph的模块化架构支持第三方适配器。 数据存储: Apache Cassandra Apache HBase Oracle Berkeley DB Java企业版 索引,用于加快访问速度并支持更复杂的查询语句: Elasticsearch Apache Solr Apache Lucene 总体来讲,应用程序可以通过两种方式与JanusGraph进行交互: 嵌在应用程序中的JanusGraph在同一个JVM中执行Gremlin语句。 查询任务、JanusGraph缓存和事务处理都在同一个JVM中,而后端数据检索可能是在本地或远程。 通过向服务器提交Gremlin查询语句来与本地或远程JanusGraph实例交互。 JanusGraph本身支持Apache TinkerPop栈的Gremlin Server组件。 图 2.1. 高层JanusGraph架构和上下文

资源下载

更多资源
Mario

Mario

马里奥是站在游戏界顶峰的超人气多面角色。马里奥靠吃蘑菇成长,特征是大鼻子、头戴帽子、身穿背带裤,还留着胡子。与他的双胞胎兄弟路易基一起,长年担任任天堂的招牌角色。

Oracle

Oracle

Oracle Database,又名Oracle RDBMS,或简称Oracle。是甲骨文公司的一款关系数据库管理系统。它是在数据库领域一直处于领先地位的产品。可以说Oracle数据库系统是目前世界上流行的关系数据库管理系统,系统可移植性好、使用方便、功能强,适用于各类大、中、小、微机环境。它是一种高效率、可靠性好的、适应高吞吐量的数据库方案。

Eclipse

Eclipse

Eclipse 是一个开放源代码的、基于Java的可扩展开发平台。就其本身而言,它只是一个框架和一组服务,用于通过插件组件构建开发环境。幸运的是,Eclipse 附带了一个标准的插件集,包括Java开发工具(Java Development Kit,JDK)。

JDK

JDK

JDK是 Java 语言的软件开发工具包,主要用于移动设备、嵌入式设备上的java应用程序。JDK是整个java开发的核心,它包含了JAVA的运行环境(JVM+Java系统类库)和JAVA工具。