Maclean’s Oracle Database Tech Blog Archives

  • MongoDB获取命令行启动参数getCmdLineOpts

    MongoDB获取命令行启动参数的方法; 有时候希望知道启动mongd的启动参数,可以使用如下命令获得: use admin db.runCommand(“getCmdLineOpts”) 例如 > use admin switched to db admin > db.runCommand(“getCmdLineOpts”) { “argv” : [ “/usr/local/opt/mongodb/bin/mongod”, “–config”, “/usr/local/etc/mongod.conf” ], “parsed” : { “config” : “/usr/local/etc/mongod.conf”, “net” : { “bindIp” : “127.0.0.1” }, “storage” : { “dbPath” : “/usr/local/var/mongodb” }, “systemLog” : { “destination” : “file”, “logAppend” : true, “path” : “/usr/local/var/log/mongodb/mongo.log”…

  • 如何在Ubuntu上安装MongoDB 3.0.2 WiredTiger

    安装mongodb 3.0.2 操作系统是Ubuntu 14.04.1 LTS \n \l 主要步骤如下: sudo apt-key adv –keyserver hkp://keyserver.ubuntu.com:80 –recv 7F0CEB10 sudo echo “deb http://repo.mongodb.org/apt/ubuntu “$(lsb_release -sc)”/mongodb-org/3.0 multiverse” | sudo tee /etc/apt/sources.list.d/mongodb-org-3.0.list sudo apt-get update sudo apt-get install -y mongodb-org sudo service mongod start 安装详细步骤如下 root@dbdao-Inspiron-560s:~# sudo apt-key adv –keyserver hkp://keyserver.ubuntu.com:80 –recv 7F0CEB10 Executing: gpg –ignore-time-conflict –no-options –no-default-keyring –homedir /tmp/tmp.08FbwQ9cDM –no-auto-check-trustdb…

  • MongoDB示例数据导入Sample Data

    基于github 项目https://github.com/tmcnab/northwind-mongo, 一个简单的MongoDB 示例数据加载方法,步骤很简单。 确保你的系统中已经已经安装mongodb server并在运行中 1、下载示例数据 northwind-mongo-master.zip https://www.askmac.cn/wp-content/uploads/2015/05/northwind-mongo-master.zip 2、解压  unzip northwind-mongo-master.zip 3、切换到对应目录 cd  northwind-mongo-master 运行./mongo-import.sh  会将对应的数据加载到MongoDB northwind DB中   ac:northwind-mongo-master maclean$ ./mongo-import.sh 2015-05-09T21:40:15.956+0800 connected to: localhost 2015-05-09T21:40:16.140+0800 imported 8 documents 2015-05-09T21:40:16.152+0800 connected to: localhost 2015-05-09T21:40:16.160+0800 imported 91 documents 2015-05-09T21:40:16.171+0800 connected to: localhost 2015-05-09T21:40:16.173+0800 imported 49 documents 2015-05-09T21:40:16.186+0800 connected to: localhost 2015-05-09T21:40:16.186+0800 Failed: read error on entry…

  • 2015年的台北之行

    出发:   开会 , APOUC , Thomas Kyte那时还在oracle   国父纪念馆   中正纪念堂   台北故宫门口,当时正式进去后是不让拍照的,所以只有门口的照片     台北101夜景:   101旁边在开复仇者漫展     正好去看了复仇者2的电影: 诚品书店的权游展:     吃了猪油饭   宁夏夜市: 西门町:       元气满满小葭葭      

  • 常见问题解答:MongoDB原理

    常见问题解答 MongoDB原理,翻译基于mongoDB 官方文档 http://docs.mongodb.org/manual/faq/fundamentals/ 本文档主要介绍mongodb使用的基础上层问题以及使用的概略。 如果在本文中没有找到你关心的问题解答,mongoDB官方建议你去mail list提问 ,或者阅读这份更完整的FAQ。   MongoDB是什么类型的数据库?   MongoDB是面向文档的数据库管理系统DBMS(显然mongodb不是oracle那样的RDBMS,而仅仅是DBMS)。 想想一下MySQL中没有任何关系型数据库的表,而由JSON类型的对象组成数据模型的样子会师如何的?   值得注意的是,MongoDB既不支持JOIN(连接)也不支持transaction(事务)。Significantly, MongoDB supports neither joins nor transactions.   但是请注意MongDB有着大量其他优良的特性,如二级索引、功能丰富的查询语言以及对每一个单个文档文件的原子写保证以及完全一致性的读取。 此外,例如master-salve replication 自动故障切换的主从复制技术和通过自动的基于范围的分区来实现的内建的横向扩展。 mongodb的document基于BSON格式,BSON是一种二进制对象格式,内容形式上类似于JSON。   Mongodb数据库中有table表的概念吗?   mongodb中存放数据的集合中没有table,但有很类似于table和column的概念; mongodb中将数据均存放在collections中,collections很类似于RDBMS关系型数据库中的table表。  一个collections存放有一个或多个document,document对应于RDBMS中的一个记录或者一行数据,每一个文档均有一个或者多个field字段,其对应于关系型数据库中的column。 collection与关系型数据库中的表有着几个重大的区别: 一个collection中的每一个document可能都有着不同的field或不同的field顺序,例如: 对于关系型数据库而言 emp表(empno int,empname varchar2(200)),则emp表的每一行数据都是如下的形式  :   empno empname 10 “mike” 20 “tom” 30 “maclean” 如果上述数据有违反emp表结构设计的数据,例如希望多存一个字段salary都是非法的,RDBMS将不允许这类非法操作被执行,会直接报错。   而对于MongoDB数据库而言,并不在意固定的模式设计,collection中可以存放field顺序、结构完全不同的数据:   > db.dbdao_t1.insert({empno:10,enpname:”maclean”,salary:90000}); WriteResult({…

  • MongoDB 配置Sharding Cluster 基于Ubuntu

    本教程基于Ubuntu 14.04.2 LTS \n \l和mongoDB 3.0, 配置了3个 Config Servers(在产品环境中被要求),2个Query Router查询分发(最少1个必要),和3个shard Server(最少2个)。 注意确保在所有上述Server上已经安装了MongoDB 3.0以上版本,否则首先安装MongoDB,要在Ubuntu上安装MongoDB可以按照这个教程,《升级MongoDB到3.0.2并启用wiredTiger存储引擎 基于ubuntu 14.04》,https://www.askmac.cn/archives/upgrade-to-mongodb-302-wiredtiger.html   以下是HOSTNAME 和 IP 列表,注意本文的网络拓扑按照如下配置,如果与之不同则需要相应修改 10.132.24.62 config0.dbdao.com 10.132.24.60 config1.dbdao.com 10.132.24.61 config2.dbdao.com 10.132.24.59 query0.dbdao.com 10.132.24.63 query1.dbdao.com 10.132.24.64 shard0.dbdao.com 10.132.24.65 shard1.dbdao.com 10.132.24.67 shard2.dbdao.com 第一步配置config server   需要在配置query router和shard server前配置3个 mongoDB config server: 以下需要在3个 mongoDB config server上均需以root用户执行 以下在三个config server上配置目录 mkdir -p /m01/mongo-metadata chown mongodb:mongodb…

  • MongoDB中的unique constraint/index

    Mongodb中可以使用ensureIndex/createIndex+unique:true来创建unique index。 The unique constraint on indexes ensures that only one document can have a value for a field in acollection. For sharded collections these unique indexes cannot enforce uniqueness because insert and indexing operations are local to each shard. MongoDB does not support creating new unique indexes in sharded collections and will not allow…

  • MongoDB db.collection. ensureIndex 和 db.collection.createIndex

    注意从mongoDB 3.0开始ensureIndex被废弃,今后都仅仅是db.collection.createIndex的一个别名。 db.collection.createIndex主要分成2部分: KEY和OPTION。 KEY:   > db.dbdao_product.ensureIndex({x:1}); { “createdCollectionAutomatically” : false, “numIndexesBefore” : 1, “numIndexesAfter” : 2, “ok” : 1 } > db.dbdao_product.find({x:200}); { “_id” : ObjectId(“5524face073d738e116afc2c”), “x” : 200, “name” : “askmac.cn”, “name1” : “askmac.cn”, “name2” : “askmac.cn”, “name3” : “askmac.cn” } { “_id” : ObjectId(“5524face073d738e116afc2d”), “x” : 200, “name” : “askmac.cn”, “name1″…

  • 升级MongoDB到3.0.2并启用wiredTiger存储引擎 基于ubuntu 14.04

    升级MongoDB到3.0.2并启用wiredTiger存储引擎 首先对mongodb 3.0之前的数据进行备份:   for (var i = 1; i <= 50000; i++) { db.dbdao.insert( { x : i , name: “dbdao.com” , name1:”dbdao.com”, name2:”dbdao.com”, name3:”dbdao.com”} ) } root@dbdao-Inspiron-560s:~# mongodump –out dbdao connected to: 127.0.0.1 Wed Apr 8 03:41:12.499 all dbs Wed Apr 8 03:41:12.500 DATABASE: test to dbdao/test Wed Apr 8 03:41:12.513 test.system.indexes to…

  • 如何检查当前mongodb是否启用了WiredTiger存储引擎?

      如何检查当前mongodb是否启用了WiredTiger存储引擎? 可以至少通过以下2种方法 验证: 1、在Linux/OSX上执行如下的命令     WIREDTIGER_CONFIGURED=`ps -ef|grep mongod|grep -i storageengine|grep -ic wiredtiger` echo ${WIREDTIGER_CONFIGURED}     如果返回为1则说明当前系统中运行着一个以WiredTiger为存储引擎的mongod   2、在Linux/OSX上执行如下的命令   echo “db.serverStatus()”| mongo|grep wiredTiger 若返回信息中有wiredTiger,则说明该mongo连接到了一个启用了wiredTiger存储引擎的mongod. 注意对于启用了wiredTiger的文件路径–dbpath,无法再使用默认mmapv1存储引擎打开,例如:   ac:mongodata maclean$ mongod –storageEngine wiredTiger –dbpath /Users/maclean/mongodata 2015-05-06T11:35:32.372+0800 I STORAGE [initandlisten] wiredtiger_open config: create,cache_size=4G,session_max=20000,eviction=(threads_max=4),statistics=(fast),log=(enabled=true,archive=true,path=journal,compressor=snappy),checkpoint=(wait=60,log_size=2GB),statistics_log=(wait=0), 2015-05-06T11:35:32.997+0800 I CONTROL [initandlisten] MongoDB starting : pid=16590 port=27017 dbpath=/Users/maclean/mongodata 64-bit host=ac.local…