SlideShare une entreprise Scribd logo
1  sur  75
Télécharger pour lire hors ligne
QCon beijing 2011



                                                                   MongoDB




: http://czone.chinavisual.com/art/4b4501548f47e8ef73699a0c.html
About.me

•         ( nightsailer)

    • @nightsailer //twitter,sina,linkedin,
      github ...
    • nightsailer # gmail.com
    • http://nightsailer.com/
MongoDB

  NoSQL      ?
Auto-shard           ?

• No! 08
                           K/V
    MySQL
App




               MMM
                                                                  • MySQL   Percona
                                           Mysql(Master-Master)
                                                                   Master-Master-Slaves
                                                                  • HA:MMM
Mysql(M1)                      Mysql(M2)




       Slave           Slave
•
•       schema

    •
•
•
MySQL
*                JSON

    • schema
    •
*

    • schema
    •          query
App




            MMM/vdb11




                                                        KV
                                            KV1



                                                  KV2

Mysql(M1)                 Mysql(M2)




       Slave      Slave
Memcached

•
     Memcached

•                KV
•   PHP/Perl

•   Memcached

•
•
•
• Flare
• Repcached
• Redis
• TC/TT
Flare

•      cluster     ,


•      Memcached
1

•
•
    •
    •
    •       ;-(
• Cassandra
 •
• CouchDB
 •
MongoDB
•                Redis

• Document
•            Redis

• MySQL              ,

• MySQL
MySQL   MongoDB

•          MySQL     MongoDB


•        MySQL <=> MongoDB


•
MySQL

• Transaction
• Joins
•
•
•1   1            90%

•     35   table => 10 collection

•            happy!
MongoDB,

           GridFS

•
•
    •   MogileFS
MongoDB,

• SourceForge
•
• 10gen         mailing-list


• NoSQL                MongoDB
1
•
    comments:{

      _id:ObjectId(‘xxx’),

      art_id:2,

      content: ‘           ...’,

      replied_on:    12233

      created_on: 12222

      replies: [{

        _id: ObjectId(‘xxx’),

        content: ‘     ,     ...’,

        replies:[]

      }]}
2
           /       :

•
•
•
               /       /
    ...)

•
2


• db.activity_stream.feed (
• db.activity_stream.user         )

• db.activity_stream(
2

feed

•
    •                follower
        collection
    •                  embed list
3:
    1: Regex

•
    2: Sphinx

•              xml

•
3:
        3:        Array/List      ($all)

•
•            PHP-SCWS

•             :

    •                          oplog
MongoDB

• Scons,         Python

• boost(CentOS)
• static link mongod
• tcmalloc
•                MongoDB( ICC
COMMON_CXXFLAGS='-fp-model source -unroll2   -axSSE4.1,SSE4.2 -xSSE3 -
static-intel -fpic -fno-strict-aliasing'

CXXFLAGS="-O3 -ipo   -static-libgcc $COMMON_CXXFLAGS"

scons --release --static --extrapath=/opt/local --cxx=$CXX --icc --
extralib='tcmalloc_minimal' --icc-cxxflags="$CXXFLAGS" --icc-
cppflags="$CPPFLAGS" -c $BIN_SERVER

scons -j4 --release --static --extrapath=/opt/local --cxx=$CXX --icc
--extralib='tcmalloc_minimal' --icc-cxxflags="$CXXFLAGS" --icc-
cppflags="$CPPFLAGS" $BIN_SERVER
•
•
•            Raid10

•
    • XFS
    • Ext4 (?)
PHP-FPM
                                          2009/6,       0.9/1.0

                                    • 1 Master + 2 slaves
                      Nginx

              Mongod Master)




                  Gearman-workers   • 1m
                                    • 20g
                  Mongod Slave)




Gearman-workers
                                    • Dell 2850/4g(Master)   2*Dell
                                      2950/4g(
*          Slave

•
* lvm snapshot
•
• fsync & lock db
* mongodump

•
• mongostat / vmstat / iostat
• collectd
  •        : json-rest+perl plugin

•         Munion / Nagios ...
MongoDB

                              • CPU
                              •                                        4G

                              •                                   IO


:http://czone.chinavisual.com/art/4c7918b74979590970b80000.html
6




:http://czone.chinavisual.com/art/4b45015496ddabef73f49197.html
0:

* MongoDB

• Out of Memory!
•        v1.3
*       cursor

• Perl driver    bug,
0:
    1:

•
•                          2
    2:

•
              driver

•                 driver
1:50x
                                             502 Bad Gateway
                                             * GridFS

                                                 •      Perl Plack
  Starman/Plack                   Nginx




                  Proxy store




MongoDB
                                Disk Cache
                                             *       GridFS

                                                 • Nginx   proxy_store
                                                  •
1:50x
504 Gateway timeout
    •
    •
    • Perl            nginx_errorlog
             5          mongodb.log

•                                 client
1:50x
    3

•               XFS                      pre-allocation FS

•
        for i in {1..50}
        do
            echo $i
            head -c 2146435072 /dev/zero > $db.$i
        done
2:

• Mongod crash
•                Why?

  •               Map/Reduce   /


 •
•
                      • 10
                      • MongoDB
                       • Repair                                    5

                       •
                       •       10
: http://czone.chinavisual.com/art/4cad0e08497959d621a10000.html
• MongoDB
 •
 • cluster   :   slave

 •
1

•                      --syndelay

    • 60s(default) => 15~30s
    • IO
•                          fsync

    •
2

•          1.6.3,     Master-Slaves RelicaSets

    • 1 Primary + 2 Secondary
•                   4g-8g

•                     w=2

    •
5

•
•
•
•
:http://czone.chinavisual.com/art/4bd19d3b4979593e1a350000.html
4: RS fail-over


• MongoDB
 • Primary             kill   2
     secondary
 •         secondary
4: RS fail-over

•          2   Arbitor
    •   $ mongod --bind_ip 127.0.0.1,192.168.8.10 --
        replSet rs10 --oplogSize 1 ...

    • > rs.addArb(‘192.168.8.10:27020’)
    • ...
4: RS fail-over

    6:             ReplicaSet

• 1 Primary + 2 Secondary + n Arbitor
•
•
•6          “ ”

  •                     ;-(

  •
•          ReplicaSet   fail-over
  secondary

• Primary          ,

 •
1.8

• 1.8
  • journaling file
  • mongod -dur
  • crash            repairDatabase

•
• GridFS
 •
           10mb-500mb

 •
• GridFS
  •           Nginx proxy_store

• MongoDB
•               ,Plack app

  • prefork
• GridFS
  •
•           slaveOK

• Plack app       Twiggy   AnyEvent
Starman workers/PSGI
                              Starman




             RS02
                                                 Nginx




                    Gearman




                      127.0.0.1:9001

                      127.0.0.1:9002

                      127.0.0.1:9003

                      127.0.0.1:9004    Twiggy/PSGI
             RS01




                    (slaveOK)
Sencondary
•
•
•
Primary


                                           •                        Slave only
                               IDC




Secondary1
                                               MongoD
                Secondary2


              ReplicaSet1
                                               • priority       0
                                     VPN

                                           • VPN            2
                         IDC




     Slave1
•               >300ms

    • MongoDB
•       MongoDB

    •   snapshot

•
    •     local.oplog.rs (   tailable cursor)

    •
    •               replay oplog
•        2

• GridFS
•     VPN
•              VPN

•     GridFS

•
    • BSON             HTTP


•                    mongod
7

                                                                   •
                                                                       •
                                                                       •
                                                                   •           unix




: http://czone.chinavisual.com/art/4c05e7be4979596b7e570000.html
Auto-sharding

• 1.6GA   Auto-sharding

 •
•2        1

 •
 •
• Shard_key
 • shard key        chunk

   • 4sq
 • shard_key
• counting
 •          chunk

• balancer
•
    •         shard


    •             shard

•
•       1.8
•
• MongoDB    auto-shard

• GA
  • 2.0+ ?
MongoDB
• MySQL Web
• Schema free
• Geo
• MySQL
• GridFS
•                            sharding

• Auto-sharding shared_key   balancing
             1.8/2.0
• mongostat
 • idx missing, faults,global locked
 • db.serverStatus & rs.status
• Replication
 •            oplogsize //
    slave     clone

  • --fastsync + snapshot
  • --maxConns
  • --replSet=<set_name>/<seed list>
   • seed list          1 arbitor
• Some collections
   • local.oplog.rs/replset.minvalid
   • $cmd
   • system.indexes
• GridFS
 •           :Write once, Read many.

 • fs.files _id ETag
 • file content hash
 • gc
 • * Node.js
• Update/Delete
 •           ,Schema          padding

   • In-place update
 • Mark delete            remove

   •
 • remove() ,          drop
• Group
 • 4Mb              MR

• db.eval & Javascript
 •                           db

 •                       scope


 •
• DBRef
 •
• MR
 •
 •
          MR

   • v8
Question?




      :http://czone.chinavisual.com/art/4b45015461be3def730e6351.html

Contenu connexe

Tendances

232 deview2013 oss를활용한분산아키텍처구현
232 deview2013 oss를활용한분산아키텍처구현232 deview2013 oss를활용한분산아키텍처구현
232 deview2013 oss를활용한분산아키텍처구현
NAVER D2
 
Bh ad-12-stealing-from-thieves-saher-slides
Bh ad-12-stealing-from-thieves-saher-slidesBh ad-12-stealing-from-thieves-saher-slides
Bh ad-12-stealing-from-thieves-saher-slides
Matt Kocubinski
 

Tendances (20)

Gemification for Ruby 2.5/3.0
Gemification for Ruby 2.5/3.0Gemification for Ruby 2.5/3.0
Gemification for Ruby 2.5/3.0
 
OSS Security the hard way
OSS Security the hard wayOSS Security the hard way
OSS Security the hard way
 
MySQL Replication Troubleshooting for Oracle DBAs
MySQL Replication Troubleshooting for Oracle DBAsMySQL Replication Troubleshooting for Oracle DBAs
MySQL Replication Troubleshooting for Oracle DBAs
 
Toster - Understanding the Rails Web Model and Scalability Options
Toster - Understanding the Rails Web Model and Scalability OptionsToster - Understanding the Rails Web Model and Scalability Options
Toster - Understanding the Rails Web Model and Scalability Options
 
What's new in RubyGems3
What's new in RubyGems3What's new in RubyGems3
What's new in RubyGems3
 
Dependency Resolution with Standard Libraries
Dependency Resolution with Standard LibrariesDependency Resolution with Standard Libraries
Dependency Resolution with Standard Libraries
 
Large-scaled Deploy Over 100 Servers in 3 Minutes
Large-scaled Deploy Over 100 Servers in 3 MinutesLarge-scaled Deploy Over 100 Servers in 3 Minutes
Large-scaled Deploy Over 100 Servers in 3 Minutes
 
Gemification plan of Standard Library on Ruby
Gemification plan of Standard Library on RubyGemification plan of Standard Library on Ruby
Gemification plan of Standard Library on Ruby
 
The secret of programming language development and future
The secret of programming  language development and futureThe secret of programming  language development and future
The secret of programming language development and future
 
232 deview2013 oss를활용한분산아키텍처구현
232 deview2013 oss를활용한분산아키텍처구현232 deview2013 oss를활용한분산아키텍처구현
232 deview2013 oss를활용한분산아키텍처구현
 
The Future of library dependency manageement of Ruby
The Future of library dependency manageement of RubyThe Future of library dependency manageement of Ruby
The Future of library dependency manageement of Ruby
 
How to Begin Developing Ruby Core
How to Begin Developing Ruby CoreHow to Begin Developing Ruby Core
How to Begin Developing Ruby Core
 
The Art of JVM Profiling
The Art of JVM ProfilingThe Art of JVM Profiling
The Art of JVM Profiling
 
mruby で mackerel のプラグインを作るはなし
mruby で mackerel のプラグインを作るはなしmruby で mackerel のプラグインを作るはなし
mruby で mackerel のプラグインを作るはなし
 
Dissecting the rabbit: RabbitMQ Internal Architecture
Dissecting the rabbit: RabbitMQ Internal ArchitectureDissecting the rabbit: RabbitMQ Internal Architecture
Dissecting the rabbit: RabbitMQ Internal Architecture
 
Gems on Ruby
Gems on RubyGems on Ruby
Gems on Ruby
 
Bh ad-12-stealing-from-thieves-saher-slides
Bh ad-12-stealing-from-thieves-saher-slidesBh ad-12-stealing-from-thieves-saher-slides
Bh ad-12-stealing-from-thieves-saher-slides
 
How to distribute Ruby to the world
How to distribute Ruby to the worldHow to distribute Ruby to the world
How to distribute Ruby to the world
 
Redis And python at pycon_2011
Redis And python at pycon_2011Redis And python at pycon_2011
Redis And python at pycon_2011
 
Node.js - async for the rest of us.
Node.js - async for the rest of us.Node.js - async for the rest of us.
Node.js - async for the rest of us.
 

Similaire à 视觉中国的MongoDB应用实践(QConBeijing2011)

Node js quick tour v2
Node js quick tour v2Node js quick tour v2
Node js quick tour v2
Wyatt Fang
 
The Architecture of PicCollage Server
The Architecture of PicCollage ServerThe Architecture of PicCollage Server
The Architecture of PicCollage Server
Lin Jen-Shin
 
Gotszling mogo db-membase
Gotszling mogo db-membaseGotszling mogo db-membase
Gotszling mogo db-membase
GiltTech
 
豆瓣技术架构的发展历程
豆瓣技术架构的发展历程豆瓣技术架构的发展历程
豆瓣技术架构的发展历程
George Ang
 
豆瓣 Qcon2009 Beijing
豆瓣 Qcon2009 Beijing豆瓣 Qcon2009 Beijing
豆瓣 Qcon2009 Beijing
yiditushe
 

Similaire à 视觉中国的MongoDB应用实践(QConBeijing2011) (20)

High Performance Weibo QCon Beijing 2011
High Performance Weibo QCon Beijing 2011High Performance Weibo QCon Beijing 2011
High Performance Weibo QCon Beijing 2011
 
Novalug 07142012
Novalug 07142012Novalug 07142012
Novalug 07142012
 
Using Spring with NoSQL databases (SpringOne China 2012)
Using Spring with NoSQL databases (SpringOne China 2012)Using Spring with NoSQL databases (SpringOne China 2012)
Using Spring with NoSQL databases (SpringOne China 2012)
 
Node js quick-tour_v2
Node js quick-tour_v2Node js quick-tour_v2
Node js quick-tour_v2
 
Node js quick-tour_v2
Node js quick-tour_v2Node js quick-tour_v2
Node js quick-tour_v2
 
Node js quick tour v2
Node js quick tour v2Node js quick tour v2
Node js quick tour v2
 
The Architecture of PicCollage Server
The Architecture of PicCollage ServerThe Architecture of PicCollage Server
The Architecture of PicCollage Server
 
SCALE 10x Build a Cloud Day
SCALE 10x Build a Cloud DaySCALE 10x Build a Cloud Day
SCALE 10x Build a Cloud Day
 
Why MariaDB?
Why MariaDB?Why MariaDB?
Why MariaDB?
 
Gotszling mogo db-membase
Gotszling mogo db-membaseGotszling mogo db-membase
Gotszling mogo db-membase
 
豆瓣技术架构的发展历程
豆瓣技术架构的发展历程豆瓣技术架构的发展历程
豆瓣技术架构的发展历程
 
豆瓣 Qcon2009 Beijing
豆瓣 Qcon2009 Beijing豆瓣 Qcon2009 Beijing
豆瓣 Qcon2009 Beijing
 
MongoDB: Optimising for Performance, Scale & Analytics
MongoDB: Optimising for Performance, Scale & AnalyticsMongoDB: Optimising for Performance, Scale & Analytics
MongoDB: Optimising for Performance, Scale & Analytics
 
Mongo db roma replication and sharding
Mongo db roma replication and shardingMongo db roma replication and sharding
Mongo db roma replication and sharding
 
KeyValue Stores
KeyValue StoresKeyValue Stores
KeyValue Stores
 
Replatforming Legacy Packaged Applications: Block-by-Block with Minecraft
Replatforming Legacy Packaged Applications: Block-by-Block with MinecraftReplatforming Legacy Packaged Applications: Block-by-Block with Minecraft
Replatforming Legacy Packaged Applications: Block-by-Block with Minecraft
 
Achieving Infrastructure Portability with Chef
Achieving Infrastructure Portability with ChefAchieving Infrastructure Portability with Chef
Achieving Infrastructure Portability with Chef
 
Impression of Rails 3
Impression of Rails 3Impression of Rails 3
Impression of Rails 3
 
Chef for OpenStack - OpenStack Fall 2012 Summit
Chef for OpenStack  - OpenStack Fall 2012 SummitChef for OpenStack  - OpenStack Fall 2012 Summit
Chef for OpenStack - OpenStack Fall 2012 Summit
 
Chef for OpenStack- Fall 2012.pdf
Chef for OpenStack- Fall 2012.pdfChef for OpenStack- Fall 2012.pdf
Chef for OpenStack- Fall 2012.pdf
 

Dernier

+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
?#DUbAI#??##{{(☎️+971_581248768%)**%*]'#abortion pills for sale in dubai@
 

Dernier (20)

presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century education
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
 
Mcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Mcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot ModelMcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Mcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot Model
 
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
 
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, AdobeApidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
 
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
 
Six Myths about Ontologies: The Basics of Formal Ontology
Six Myths about Ontologies: The Basics of Formal OntologySix Myths about Ontologies: The Basics of Formal Ontology
Six Myths about Ontologies: The Basics of Formal Ontology
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a Fresher
 
[BuildWithAI] Introduction to Gemini.pdf
[BuildWithAI] Introduction to Gemini.pdf[BuildWithAI] Introduction to Gemini.pdf
[BuildWithAI] Introduction to Gemini.pdf
 
WSO2's API Vision: Unifying Control, Empowering Developers
WSO2's API Vision: Unifying Control, Empowering DevelopersWSO2's API Vision: Unifying Control, Empowering Developers
WSO2's API Vision: Unifying Control, Empowering Developers
 
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
 
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWEREMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
 
Vector Search -An Introduction in Oracle Database 23ai.pptx
Vector Search -An Introduction in Oracle Database 23ai.pptxVector Search -An Introduction in Oracle Database 23ai.pptx
Vector Search -An Introduction in Oracle Database 23ai.pptx
 
CNIC Information System with Pakdata Cf In Pakistan
CNIC Information System with Pakdata Cf In PakistanCNIC Information System with Pakdata Cf In Pakistan
CNIC Information System with Pakdata Cf In Pakistan
 
MS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectorsMS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectors
 
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost SavingRepurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
 
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...
 
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
 
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
 

视觉中国的MongoDB应用实践(QConBeijing2011)

  • 1. QCon beijing 2011 MongoDB : http://czone.chinavisual.com/art/4b4501548f47e8ef73699a0c.html
  • 2. About.me • ( nightsailer) • @nightsailer //twitter,sina,linkedin, github ... • nightsailer # gmail.com • http://nightsailer.com/
  • 3. MongoDB NoSQL ? Auto-shard ? • No! 08 K/V MySQL
  • 4. App MMM • MySQL Percona Mysql(Master-Master) Master-Master-Slaves • HA:MMM Mysql(M1) Mysql(M2) Slave Slave
  • 5. • • schema • • •
  • 6. MySQL * JSON • schema • * • schema • query
  • 7. App MMM/vdb11 KV KV1 KV2 Mysql(M1) Mysql(M2) Slave Slave
  • 8. Memcached • Memcached • KV
  • 9. PHP/Perl • Memcached • • •
  • 10. • Flare • Repcached • Redis • TC/TT
  • 11. Flare • cluster , • Memcached
  • 12. 1 • • • • • ;-(
  • 13. • Cassandra • • CouchDB •
  • 14. MongoDB • Redis • Document • Redis • MySQL , • MySQL
  • 15. MySQL MongoDB • MySQL MongoDB • MySQL <=> MongoDB •
  • 17. • •1 1 90% • 35 table => 10 collection • happy!
  • 18. MongoDB, GridFS • • • MogileFS
  • 19. MongoDB, • SourceForge • • 10gen mailing-list • NoSQL MongoDB
  • 20. 1 • comments:{ _id:ObjectId(‘xxx’), art_id:2, content: ‘ ...’, replied_on: 12233 created_on: 12222 replies: [{ _id: ObjectId(‘xxx’), content: ‘ , ...’, replies:[] }]}
  • 21. 2 / : • • • / / ...) •
  • 22. 2 • db.activity_stream.feed ( • db.activity_stream.user ) • db.activity_stream(
  • 23. 2 feed • • follower collection • embed list
  • 24. 3: 1: Regex • 2: Sphinx • xml •
  • 25. 3: 3: Array/List ($all) • • PHP-SCWS • : • oplog
  • 26. MongoDB • Scons, Python • boost(CentOS) • static link mongod • tcmalloc
  • 27. MongoDB( ICC COMMON_CXXFLAGS='-fp-model source -unroll2 -axSSE4.1,SSE4.2 -xSSE3 - static-intel -fpic -fno-strict-aliasing' CXXFLAGS="-O3 -ipo -static-libgcc $COMMON_CXXFLAGS" scons --release --static --extrapath=/opt/local --cxx=$CXX --icc -- extralib='tcmalloc_minimal' --icc-cxxflags="$CXXFLAGS" --icc- cppflags="$CPPFLAGS" -c $BIN_SERVER scons -j4 --release --static --extrapath=/opt/local --cxx=$CXX --icc --extralib='tcmalloc_minimal' --icc-cxxflags="$CXXFLAGS" --icc- cppflags="$CPPFLAGS" $BIN_SERVER
  • 29. Raid10 • • XFS • Ext4 (?)
  • 30. PHP-FPM 2009/6, 0.9/1.0 • 1 Master + 2 slaves Nginx Mongod Master) Gearman-workers • 1m • 20g Mongod Slave) Gearman-workers • Dell 2850/4g(Master) 2*Dell 2950/4g(
  • 31. * Slave • * lvm snapshot • • fsync & lock db * mongodump •
  • 32. • mongostat / vmstat / iostat • collectd • : json-rest+perl plugin • Munion / Nagios ...
  • 33. MongoDB • CPU • 4G • IO :http://czone.chinavisual.com/art/4c7918b74979590970b80000.html
  • 35. 0: * MongoDB • Out of Memory! • v1.3 * cursor • Perl driver bug,
  • 36. 0: 1: • • 2 2: • driver • driver
  • 37. 1:50x 502 Bad Gateway * GridFS • Perl Plack Starman/Plack Nginx Proxy store MongoDB Disk Cache * GridFS • Nginx proxy_store •
  • 38. 1:50x 504 Gateway timeout • • • Perl nginx_errorlog 5 mongodb.log • client
  • 39. 1:50x 3 • XFS pre-allocation FS • for i in {1..50} do echo $i head -c 2146435072 /dev/zero > $db.$i done
  • 40. 2: • Mongod crash • Why? • Map/Reduce / •
  • 41. • 10 • MongoDB • Repair 5 • • 10 : http://czone.chinavisual.com/art/4cad0e08497959d621a10000.html
  • 42. • MongoDB • • cluster : slave •
  • 43. 1 • --syndelay • 60s(default) => 15~30s • IO • fsync •
  • 44. 2 • 1.6.3, Master-Slaves RelicaSets • 1 Primary + 2 Secondary • 4g-8g • w=2 •
  • 47. 4: RS fail-over • MongoDB • Primary kill 2 secondary • secondary
  • 48. 4: RS fail-over • 2 Arbitor • $ mongod --bind_ip 127.0.0.1,192.168.8.10 -- replSet rs10 --oplogSize 1 ... • > rs.addArb(‘192.168.8.10:27020’) • ...
  • 49. 4: RS fail-over 6: ReplicaSet • 1 Primary + 2 Secondary + n Arbitor • •
  • 50. •6 “ ” • ;-( • • ReplicaSet fail-over secondary • Primary , •
  • 51. 1.8 • 1.8 • journaling file • mongod -dur • crash repairDatabase •
  • 52. • GridFS • 10mb-500mb •
  • 53. • GridFS • Nginx proxy_store • MongoDB • ,Plack app • prefork
  • 54. • GridFS • • slaveOK • Plack app Twiggy AnyEvent
  • 55. Starman workers/PSGI Starman RS02 Nginx Gearman 127.0.0.1:9001 127.0.0.1:9002 127.0.0.1:9003 127.0.0.1:9004 Twiggy/PSGI RS01 (slaveOK) Sencondary
  • 57. Primary • Slave only IDC Secondary1 MongoD Secondary2 ReplicaSet1 • priority 0 VPN • VPN 2 IDC Slave1
  • 58. >300ms • MongoDB
  • 59. MongoDB • snapshot • • local.oplog.rs ( tailable cursor) • • replay oplog
  • 60. 2 • GridFS • VPN
  • 61. VPN • GridFS • • BSON HTTP • mongod
  • 62. 7 • • • • unix : http://czone.chinavisual.com/art/4c05e7be4979596b7e570000.html
  • 63. Auto-sharding • 1.6GA Auto-sharding • •2 1 • •
  • 64. • Shard_key • shard key chunk • 4sq • shard_key • counting • chunk • balancer
  • 65. • shard • shard • • 1.8
  • 66. • • MongoDB auto-shard • GA • 2.0+ ?
  • 67. MongoDB • MySQL Web • Schema free • Geo • MySQL • GridFS • sharding • Auto-sharding shared_key balancing 1.8/2.0
  • 68. • mongostat • idx missing, faults,global locked • db.serverStatus & rs.status
  • 69. • Replication • oplogsize // slave clone • --fastsync + snapshot • --maxConns • --replSet=<set_name>/<seed list> • seed list 1 arbitor
  • 70. • Some collections • local.oplog.rs/replset.minvalid • $cmd • system.indexes
  • 71. • GridFS • :Write once, Read many. • fs.files _id ETag • file content hash • gc • * Node.js
  • 72. • Update/Delete • ,Schema padding • In-place update • Mark delete remove • • remove() , drop
  • 73. • Group • 4Mb MR • db.eval & Javascript • db • scope •
  • 74. • DBRef • • MR • • MR • v8
  • 75. Question? :http://czone.chinavisual.com/art/4b45015461be3def730e6351.html