Pymongo and Mongodb



Pymongo install follow this:

$ git clone git://github.com/mongodb/mongo-python-driver.git pymongo
$ cd pymongo/
$ python setup.py install

Mongodb install follow this:

$sudo apt-key adv --keyserver keyserver.ubuntu.com --recv 7F0CEB10
/etc/apt/sources.list.d

$deb http://downloads-distro.mongodb.org/repo/ubuntu-upstart dist 10gen
现在发出以下命令以重新载入您的存储库。

$sudo apt-get update
$sudo apt-get install mongodb-10gen
启动数据库

$mongod start
使用自带的shell工具来操作数据库

$mongo


MongoDB,一个开放源码、面向文档的数据库,它在类似于 JSON 的文档集合存储数据。存储数据的方式是使用键/值对。

import pymongo
import datetime
#create a Connection to the running MongoDB instance
connection = pymongo.Connection('localhost', 27017)
#A single MongoDB instance can support multiple independent databases
db = connection.test_database#get a database named 'test_database'
#A collection store a group of documents 
collection = db.test_collection#get a collection named 'test_collection'
#Collections and databases are created when the first document is inserted
#In PyMongo we use dictionaries to represent documents.
doc = {'author' : 'hb',
        'text' : 'My first blog !',
        'tags' : ['mongodb', 'python', 'pymongo'],
        'data' : datetime.datetime.utcnow()}
#passing an iterable as the  argument to insert() to achieve bulk insert
docs_list = [{'author' : 'hb',
                'text' : 'My first blog!',
                'tags' : ['mongodb', 'python', 'pymongo'],

               'data' : datetime.datetite(2012, 10, 5, 23, 11},
                {'author' : 'zlm',
                        'text' : 'her first blog!',
                        'title' : 'love',
                        'data' : datetime.datetime(2012, 10, 5, 23, 11}]
#insert document into collection
collection.insert(doc)
collection.insert(docs_list)
#listing all of the collections in our database
db.collection_names()
#querying for More Than One Document
for doc in collection.find():
        print doc
 

在这个信息爆炸的“大数据”时代,关系型数据库遇到了性能方面的瓶颈,面对一个表中上亿条的数据,SQL语句在大数据的查询方面效率欠佳。关系型数据库中的表都是存储一些格式化的数据结构,每个元组字段的组成都一样,即使不是每个元组都需要所有的字段,但数据库会为每个元组分配所有的字段,这样的结构可以便于表与表之间进行连接等操作,但从另一个角度来说它也是关系型数据库性能瓶颈的一个因素。

  非关系型数据库提出另一种理念,他以键值对存储,且结构不固定,每一个元组可以有不一样的字段,每个元组可以根据需要增加一些自己的键值对,这样就不会局限于固定的结构,可以减少一些时间和空间的开销。使用这种方式,用户可以根据需要去添加自己需要的字段,这样,为了获取用户的不同信息,不需要像关系型数据库中,要对多表进行关联查询。仅需要根据id取出相应的value就可以完成查询。但非关系型数据库由于很少的约束,他也不能够提供想SQL所提供的where这种对于字段属性值情况的查询。并且难以体现设计的完整性。他只适合存储一些较为简单的数据,对于需要进行较复杂查询的数据,SQL数据库显得更为合适。

MongoDB基于文档的存储的(而非表),是一个介于关系数据库和非关系数据库之间的产品,

。他支持的数据结构非常松散,是类似jsonbjson格式,因此可以存储比较复杂的数据类型。模式自由(schema-free),意味着对于存储在MongoDB数据库中的文件,我们不需要知道它的任何结构定义。如果需要的话,你完全可以把不同结构的文件存储在同一个数据库里。Mongo最大的特点是他支持的查询语言非常强大,其语法有点类似于面向对象的查询语言,几乎可以实现类似关系数据库单表查询的绝大部分功能,而且还支持对数据建立索引。

       Mongo主要解决的是海量数据的访问效率问题。因为Mongo主要是支持海量数据存储的,所以Mongo还自带了一个出色的分布式文件系统GridFS,可以支持海量的数据存储。由于Mongo可以支持复杂的数据结构,而且带有强大的数据查询功能,因此非常受到欢迎


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值