MongoDB 單機安裝 及 Python測試

來源:互聯網
上載者:User

1.Mongodb
   版本:mongodb-linux-x86_64-static-legacy-1.8.1.tgz
  :http://www.mongodb.org/downloads

   mongodb提供兩個下載版本: mongodb-linux-x86_64-1.8.1.tgz 和 mongodb-linux-x86_64-static-legacy-1.8.1.tgz
   區別:只有在linux是老系統,mongodb無法啟動時,或者出現浮點數異常,才使用"legacy static“版,
             儘可能使用mongodb-linux-x86_64-1.8.1.tgz

2.簡介
   (以下內容從網上摘抄的,原址:http://hi.baidu.com/moioo/blog/item/8d464a8f05eb37f6513d923e.html)
   MongDB是一個可擴充,高效能、開源、模式自由、面向文檔的資料庫,並不是我們通常用的RDBMS,屬於“NoSql”的範疇。
   它和一般的基於key-value的db還是不大一樣,因為他本身的功能很強大,已經實現了類似於SQL的很多功能,
   如index、limit、skip、group。。。。。
   當應用的資料量達到海量級,傳統的Mysql,Oracle 不能滿足我們的效能需求,而對於資料還有一定的查詢需求時,可以考慮
   MongoDB。

3.安裝:
   由於RHEL4.3使用mongodb-linux-x86_64-1.8.1.tgz 版本,
  會出現錯誤: error while loading shared libraries: requires glibc 2.5 or later dynamic linker
   所以使用版本:mongodb-linux-x86_64-static-legacy-1.8.1.tgz
  1)建立mongodb程式運行目錄及預設的資料存放目錄:
     #mkdir -p /usr/local/mongodb-1.18.1
     #mkdir -p /data/db
  2)解壓縮:
     #tar zxf mongodb-linux-x86_64-static-legacy-1.8.1.tgz -C /usr/local/mongodb
  3)cd到mongodb安裝目錄,運行:
     #./mongod --dbpath=/data/db/ --logpath=/data/db/mongodb.log --logappend

4.python測試
   1)RHEL4.3預設的python版本為 2.3.4.
        升級為python 2.7.1
        (1)下載python2.7.1的源碼包 http://www.python.org/getit/,版本:Python-2.7.1.tgz
              安裝:#tar zxf Python-2.7.1.tgz
                        #cd Python-2.7.1
                        #configure
                        #make
                        #make install
              修改path
                        #mv /usr/bin/python /usr/bin/python_2.3  //將原始的2.3版本重新命名
                        #mv /usr/local/bin/python2.7 /usr/bin/python  //將新產生的2.7版本考到/usr/bin/目錄下
                        #python -V     //查看python新版本是否生效
         (2)安裝python2.7.1版本對應的setuptools
              下載:http://pypi.python.org/pypi/setuptools  版本:setuptools-0.6c11-py2.7.egg
              安裝:#chmod +x setuptools-0.6c11-py2.7.egg
                       #./setuptools-0.6c11-py2.7.egg

     2)下載並安裝mongodb的python驅動包
           下載http://www.mongodb.org/downloads,版本:pymongo-1.11.tar.gz
            安裝:#tar zxf pymongo-1.11.tar.gz
                      #cd pymongo-1.11
                      #python setup.py build
                      #python setup.py install
            測試:#python
                      >>>import pymongo

      3)入庫速度測試
           測試指令碼
           ########################################################
           #!/usr/bin/python
           #-*- coding: utf-8 -*-
           import os,sys
           import random
           import string
           import time
           import pymongo

           insertinfo={}
           valid_letters='ABCDEFGHIJKLMNOPQRSTUVWXYZbcdefghijklmnopqrstuvwxyz1234567890'
           def getrandstring(length):
           return ''.join([random.choice(valid_letters) for i in range(0,length)])

           conn=pymongo.Connection('127.0.0.1',27017)                  //建立資料庫連接
           conn.drop_database('test')                                                 //刪除已有的資料庫 ‘test’
           print 'database_names:%s' % conn.database_names()     //列印當所有的資料庫名
           print 'nodes         :%s' % conn.nodes                                 //列印節點名稱
           print 'port          :%s' % conn.port                                       //列印單口號
           print 'host          :%s' % conn.host                                      //列印host地址
          #print 'serverinfo    :',conn.server_info()                             //列印server資訊

          db=conn.test                                                                     //建立一個資料庫連接
          mycollection=db.test_collection_2                                    //建立一個collection。若test庫和此collection並不存在
                                                                                                     則此時也並未實際建立,直到插入資料時,才產生。
          print 'dbname        :%s\n' % db.name                               //列印當前串連的庫名
          print "test_collection_2 index info:",mycollection.index_information()   //列印collection的索引資訊
          print "connection information ------------------"
          for myconn in db.collection_names():                                                   //列印當前串連的所有colleciton
               print myconn

          #print 'insert data ----------------------'
          print mycollection.count()                                                                    //列印當前collection的資料條數

          begtime=time.time()
          pretime=begtime
          for i in range(0,1000000):                                                                  //產生迴圈的隨機字串
              insertinfo["_id"]=i                                                                            //手動插入“_id”值.
              insertinfo["y"]=str(getrandstring(random.randint(15,30)))
              insertinfo["z"]=str(getrandstring(random.randint(15,30)))
              insertinfo["m"]=str(getrandstring(random.randint(15,30)))
              mycollection.insert(insertinfo,safe=False,check_keys=False)       //向當前的collection插入資料

              if db.error() is not None:                                                                //檢測插入是否成功,否則輸出錯誤資訊
                  print db.error()
                  print insertinfo
                  print mycollection.index_information()

              if i % 10000==0:
                  print i,mycollection.count(),(time.time()-pretime)
                  pretime=time.time()
           endtime=time.time()
           print 'run time: %s' % (endtime-begtime)
           """
           print 'insert finish,outpu insert info------------------'
           for item in mycollection.find():
               for key in item.keys():
                        print key+":",item[key]
             """
           conn.disconnect()                                                                                //關閉資料庫連接
           ########################################################

           測試結果:
               本地vmware虛擬機器:512M記憶體,單cpu。
               100萬資料,插入時間:404.967557907秒。
               產生的資料檔案列表:
               #ls -l /data/db
               ##########################  
               -rw-------  1 root root  64M Jun 13 09:37 test.0
               -rw-------  1 root root 128M Jun 13 09:37 test.1
               -rw-------  1 root root 256M Jun 13 09:40 test.2
               -rw-------  1 root root  16M Jun 13 09:37 test.ns
               ##########################

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.