SlideShare una empresa de Scribd logo
1 de 53
Database Sharding the Right Way:
Easy, Reliable, and Open source.
•
    –
    –

    –
    –
    –
Growing in the Wild. The story by
 CUBRID Database Developers.

             View on Slideshare

         http://profyclub.ru/docs/439
•
•
•

•












•



•
=
Big Business Opportunity
-   Enterprise
        -   Vendor dependency
SQL
        -   Scalability constraints
        -   Common interface




        - Open Source
NoSQL   - Scalable
        - Non-standard API
•
•

•
•

•
•


•
•

•
•

•
•

•
•
SQL

Transactions

NoSQL => NoACID

Standard Interface

Experts
DBMS     Worldwide   21,359       23,252     26,701       11.8%
 Market   Korea       349          395        478          17%
  $MM     Ratio       1.6%         1.7%       1.8%




70%
65%
60%
55%                                                        Korea
50%                                                        Worldwide
45%
40%
          2009              2010            2011


                                                     Source: Gartner, 2012
RDBMS is still the best choice for
    mission-critical data
Database Sharding
Name               Type              Requirements         Interface
                                      DB          ETC
                                      DBMS w/
                                                  - Hibernate
Hibernate shards    AS framework      Hibernate                 Java
                                                  - JVM
                                      support
dbShards            AS & Middleware   MySQL                     Java, C
                    Middleware
Gizzard (Twitter)                     Any storage - JVM         Java

                    Middleware &
Spider for MySQL                      MySQL                     Any
                    Storage Engine
                                      - CUBRID
CUBRID SHARD        Middleware        - MySQL                   Any
                                      - Oracle
•
•
•
•
    –
    –
•
•
•
•

    –
    –
    –
    –
    –
Is there such RDBMS?
CUBRID 9.0

    
    
    

    

    
•
Easy Installation
http://www.cubrid.org/downloads
•
    –
•
    –

•
    –
SHARD_KEY_MODULAR         = 256
SHARD_KEY_LIBRARY_NAME    = ‘’
SHARD_KEY_FUNCTION_NAME   = ‘’
   id
       user_id
=      order_no
       …
int user_get_shard_key(int type, void *val)
{
    int mod = 2;

    if (val == NULL)
    {
           return ERROR_ON_ARGUMENT;
    }

    switch(type)
    {
           case SHARD_U_TYPE_INT:
           {
               int ival;
               ival = (int) (*(int *)val);
               return ival % 2;
           }
               break;
           case SHARD_U_TYPE_STRING:
               return ERROR_ON_MAKE_SHARD_KEY;
           default:
               return ERROR_ON_ARGUMENT;
    }
    return ERROR_ON_MAKE_SHARD_KEY;
}
Configuring CUBRID SHARD is very easy!
•

    $> cubrid createdb shard1
    $> csql -S -u dba shard1 -c "create user
    shard password 'shard123’”
    $> cubrid server start shard1
•

    $> csql -C -u shard -p 'shard123'
    shard1@localhost -c ”CREATE TABLE users
    (id BIGINT PRIMARY KEY, name VARCHAR(20),
    age SMALLINT)”
$> cubrid shard start
@ cubrid shard start ++
cubrid shard start: success
connectionURL   =
"jdbc:cubrid:localhost:45511:shard1:shard:shard123:";
String query = "SELECT name FROM student WHERE student_no = /*+ shard_key */ ?; ";
PrepareStatement query_stmt = connection.prepareStatement(query);
query_stmt.setInt(1,100);
ResultSet rs = query_stmt.executeQuery();
// fetch resultset




                                                 range
                                key_column    (hash result)   shard_id
                                             min        max
                                student_no    0          63      0
                                student_no   64         127      1
                                student_no   128        191      2
                                student_no   192        255      3
SELECT name FROM student WHERE
student_no = /*+ shard_key */ ?;

                               •
                               •
How did we tackle the
 unique ID problem?
•
    –
    –
    –
    –
    –
CUBRID SHARD Performance
Description       Quantity          OS (64bit) / CPU / MEM

Agent to generat
load and                  8       Centos5.3 / xeon 2G-8core / 8G
NDrive App Simulator
CUBRID Shard              1       Centos5.3 / xeon 2.27G-16core / 24G

CUBRID Broker             1       Centos5.3 / xeon 2.27G-16core / 24G

Meta DB                   4       Centos5.x / xeon 2.33G-4core / 8G

User DB                   1       Centos5.3 / xeon 2.5G-8core / 8G
Load Generator Performance
                                                                     100000
                                                                     80000
                                                                     60000




                                                               RPS
                                                                     40000
                                                                     20000
                                                                           0
                                                                               32   64   96 128 160 192 256 320 384 448 512
                                                                                            # of concurrent users


        Performance trend when load is
                 increased
60000                                                                 70
50000                                                                 60
                                                                      50
40000
                                                                      40
30000
                                                                      30
20000
                                                                      20
10000                                                                 10
    0                                                                 0
        64          128     192          256           320

        proxy cpu     RPS   metadb TPS         Mean Time(ms)
-         Similar performance until 128 Vuser
                               - When SHARD is not used, 128 Vuser is
                                   maximum
                   -         In SHARD usage case, when # of Vuser is
                             increase
                               - maximum performance can be achieved
                                   as well as shorter response time and
                                   lower CPU utilization.




64   128   192         256              320
           Vuser
TPC-C Performance Test
•       • AWS Xlarge instance
    –      • 7GB RAM
           • 20 EC2 units
    –
    –   • Ubuntu 12.04 64-bit
    –
        • CUBRID 9.0 (beta) –
    –     no shrading
    –   • MySQL 5.5.28
    –
        • Buffer
    –      • 2.8GB
    –         data_buffer_size
           • 2.8GB
•             innodb_pool_size
        • Default configurations
46
                 44.18
     42.66
42


38                       MySQL 5.5.28
                         CUBRID 9.0

34


30
        TPC-C Index
   

   
       
    

   
        
   

    
•
    –
    –
•
    –
    –
•
    –
What’s next for CUBRID?




www.cubrid.org



Esen Sagynov
CUBRID Project Manager

esen@cubrid.org                     CUBRID Q&A
                                    www.cubrid.org/questions

Más contenido relacionado

La actualidad más candente

ngGoBuilder and collaborative development between San Francisco and Tokyo
ngGoBuilder and collaborative development between San Francisco and TokyongGoBuilder and collaborative development between San Francisco and Tokyo
ngGoBuilder and collaborative development between San Francisco and Tokyo
notolab
 
ModeShape 3 overview
ModeShape 3 overviewModeShape 3 overview
ModeShape 3 overview
Randall Hauch
 
What's New in MySQL 5.6
What's New in MySQL 5.6What's New in MySQL 5.6
What's New in MySQL 5.6
Santo Leto
 
Gear6 Webinar - MySQL Scaling with Memcached
Gear6 Webinar - MySQL Scaling with MemcachedGear6 Webinar - MySQL Scaling with Memcached
Gear6 Webinar - MySQL Scaling with Memcached
Gear6
 
My sql 56_roadmap_april2012_zht2
My sql 56_roadmap_april2012_zht2My sql 56_roadmap_april2012_zht2
My sql 56_roadmap_april2012_zht2
Ivan Tu
 
The Java Content Repository
The Java Content RepositoryThe Java Content Repository
The Java Content Repository
nobby
 

La actualidad más candente (20)

An Overview of ModeShape
An Overview of ModeShapeAn Overview of ModeShape
An Overview of ModeShape
 
MySQL高可用
MySQL高可用MySQL高可用
MySQL高可用
 
ngGoBuilder and collaborative development between San Francisco and Tokyo
ngGoBuilder and collaborative development between San Francisco and TokyongGoBuilder and collaborative development between San Francisco and Tokyo
ngGoBuilder and collaborative development between San Francisco and Tokyo
 
ModeShape 3 overview
ModeShape 3 overviewModeShape 3 overview
ModeShape 3 overview
 
What's New in MySQL 5.6
What's New in MySQL 5.6What's New in MySQL 5.6
What's New in MySQL 5.6
 
Gear6 Webinar - MySQL Scaling with Memcached
Gear6 Webinar - MySQL Scaling with MemcachedGear6 Webinar - MySQL Scaling with Memcached
Gear6 Webinar - MySQL Scaling with Memcached
 
Developing polyglot persistence applications #javaone 2012
Developing polyglot persistence applications  #javaone 2012Developing polyglot persistence applications  #javaone 2012
Developing polyglot persistence applications #javaone 2012
 
My sql 56_roadmap_april2012_zht2
My sql 56_roadmap_april2012_zht2My sql 56_roadmap_april2012_zht2
My sql 56_roadmap_april2012_zht2
 
MySQL for Large Scale Social Games
MySQL for Large Scale Social GamesMySQL for Large Scale Social Games
MySQL for Large Scale Social Games
 
Mongo DBを半年運用してみた
Mongo DBを半年運用してみたMongo DBを半年運用してみた
Mongo DBを半年運用してみた
 
Introduction to MariaDB
Introduction to MariaDBIntroduction to MariaDB
Introduction to MariaDB
 
Hong Qiangning in QConBeijing
Hong Qiangning in QConBeijingHong Qiangning in QConBeijing
Hong Qiangning in QConBeijing
 
MariaDB: in-depth (hands on training in Seoul)
MariaDB: in-depth (hands on training in Seoul)MariaDB: in-depth (hands on training in Seoul)
MariaDB: in-depth (hands on training in Seoul)
 
A beginners guide to MariaDB
A beginners guide to MariaDBA beginners guide to MariaDB
A beginners guide to MariaDB
 
Unique ID generation in distributed systems
Unique ID generation in distributed systemsUnique ID generation in distributed systems
Unique ID generation in distributed systems
 
Mysteries of the binary log
Mysteries of the binary logMysteries of the binary log
Mysteries of the binary log
 
Why MariaDB?
Why MariaDB?Why MariaDB?
Why MariaDB?
 
The Java Content Repository
The Java Content RepositoryThe Java Content Repository
The Java Content Repository
 
MySQL Advanced Administrator 2021 - 네오클로바
MySQL Advanced Administrator 2021 - 네오클로바MySQL Advanced Administrator 2021 - 네오클로바
MySQL Advanced Administrator 2021 - 네오클로바
 
Extending WildFly
Extending WildFlyExtending WildFly
Extending WildFly
 

Destacado

CUBRID HA - Guaranteed Way to Never-Die Web Services - OSCON 2011
CUBRID HA - Guaranteed Way to Never-Die Web Services - OSCON 2011CUBRID HA - Guaranteed Way to Never-Die Web Services - OSCON 2011
CUBRID HA - Guaranteed Way to Never-Die Web Services - OSCON 2011
CUBRID
 

Destacado (20)

Oracle 12.2 sharded database management
Oracle 12.2 sharded database managementOracle 12.2 sharded database management
Oracle 12.2 sharded database management
 
Oracle Advanced SQL
Oracle Advanced SQLOracle Advanced SQL
Oracle Advanced SQL
 
Быстрый и простой способ шардирования MySQL с помощью CUBRID SHARD - 2013 R...
Быстрый и простой способ шардирования MySQL с помощью CUBRID SHARD - 2013 R...Быстрый и простой способ шардирования MySQL с помощью CUBRID SHARD - 2013 R...
Быстрый и простой способ шардирования MySQL с помощью CUBRID SHARD - 2013 R...
 
CUBRID HA - Guaranteed Way to Never-Die Web Services - OSCON 2011
CUBRID HA - Guaranteed Way to Never-Die Web Services - OSCON 2011CUBRID HA - Guaranteed Way to Never-Die Web Services - OSCON 2011
CUBRID HA - Guaranteed Way to Never-Die Web Services - OSCON 2011
 
Installing CUBRID on Linux
Installing CUBRID on LinuxInstalling CUBRID on Linux
Installing CUBRID on Linux
 
CUBRID Inside - Architecture, Source & Management Components
CUBRID Inside - Architecture, Source & Management ComponentsCUBRID Inside - Architecture, Source & Management Components
CUBRID Inside - Architecture, Source & Management Components
 
Installing CUBRID Database and CUBRID Manager on Windows
Installing CUBRID Database and CUBRID Manager on WindowsInstalling CUBRID Database and CUBRID Manager on Windows
Installing CUBRID Database and CUBRID Manager on Windows
 
Oracle database 12c 2 day + real application clusters guide
Oracle database 12c 2 day + real application clusters guideOracle database 12c 2 day + real application clusters guide
Oracle database 12c 2 day + real application clusters guide
 
Oracle ORAchk - An Overview Guide to Oracle Stack Health Checks
Oracle ORAchk - An Overview Guide to Oracle Stack Health ChecksOracle ORAchk - An Overview Guide to Oracle Stack Health Checks
Oracle ORAchk - An Overview Guide to Oracle Stack Health Checks
 
Mac & Oracle
Mac & OracleMac & Oracle
Mac & Oracle
 
Oracle database 12c sql worshop 2 activity guide
Oracle database 12c sql worshop 2 activity guideOracle database 12c sql worshop 2 activity guide
Oracle database 12c sql worshop 2 activity guide
 
EM12c: Capacity Planning with OEM Metrics
EM12c: Capacity Planning with OEM MetricsEM12c: Capacity Planning with OEM Metrics
EM12c: Capacity Planning with OEM Metrics
 
Oracle 12.2 sharding learning more
Oracle 12.2 sharding learning moreOracle 12.2 sharding learning more
Oracle 12.2 sharding learning more
 
Oracle Enterprise Manager 13C and Hybrid Cloud
Oracle Enterprise Manager 13C and Hybrid CloudOracle Enterprise Manager 13C and Hybrid Cloud
Oracle Enterprise Manager 13C and Hybrid Cloud
 
Oracle database 12c sql worshop 2 student guide vol 1
Oracle database 12c sql worshop 2 student guide vol 1Oracle database 12c sql worshop 2 student guide vol 1
Oracle database 12c sql worshop 2 student guide vol 1
 
Oracle sharding : Installation & Configuration
Oracle sharding : Installation & ConfigurationOracle sharding : Installation & Configuration
Oracle sharding : Installation & Configuration
 
OOW16 - Oracle Enterprise Manager 13c Cloud Control for Managing Oracle E-Bus...
OOW16 - Oracle Enterprise Manager 13c Cloud Control for Managing Oracle E-Bus...OOW16 - Oracle Enterprise Manager 13c Cloud Control for Managing Oracle E-Bus...
OOW16 - Oracle Enterprise Manager 13c Cloud Control for Managing Oracle E-Bus...
 
Oracle database 12c sql worshop 2 student guide vol 2
Oracle database 12c sql worshop 2 student guide vol 2Oracle database 12c sql worshop 2 student guide vol 2
Oracle database 12c sql worshop 2 student guide vol 2
 
Oracle RAC 12c (12.1.0.2) Operational Best Practices - A result of true colla...
Oracle RAC 12c (12.1.0.2) Operational Best Practices - A result of true colla...Oracle RAC 12c (12.1.0.2) Operational Best Practices - A result of true colla...
Oracle RAC 12c (12.1.0.2) Operational Best Practices - A result of true colla...
 
Oracle RAC 12c Release 2 - Overview
Oracle RAC 12c Release 2 - OverviewOracle RAC 12c Release 2 - Overview
Oracle RAC 12c Release 2 - Overview
 

Similar a Database Sharding the Right Way: Easy, Reliable, and Open source - HighLoad++ 2012

Database sharding the right way: еasy, reliable, and open source (Esen Sagynov)
Database sharding the right way: еasy, reliable, and open source (Esen Sagynov)Database sharding the right way: еasy, reliable, and open source (Esen Sagynov)
Database sharding the right way: еasy, reliable, and open source (Esen Sagynov)
Ontico
 
HandlerSocket plugin Client for Javaとそれを用いたベンチマーク
HandlerSocket plugin Client for Javaとそれを用いたベンチマークHandlerSocket plugin Client for Javaとそれを用いたベンチマーク
HandlerSocket plugin Client for Javaとそれを用いたベンチマーク
moai kids
 
Varnish, The Good, The Awesome, and the Downright Crazy
Varnish, The Good, The Awesome, and the Downright CrazyVarnish, The Good, The Awesome, and the Downright Crazy
Varnish, The Good, The Awesome, and the Downright Crazy
Mike Willbanks
 
Varnish, The Good, The Awesome, and the Downright Crazy.
Varnish, The Good, The Awesome, and the Downright Crazy.Varnish, The Good, The Awesome, and the Downright Crazy.
Varnish, The Good, The Awesome, and the Downright Crazy.
Mike Willbanks
 
Hadoop & no sql new generation database systems
Hadoop & no sql   new generation database systemsHadoop & no sql   new generation database systems
Hadoop & no sql new generation database systems
ramazan fırın
 
Acceleration for big data, hadoop and memcached it168文库
Acceleration for big data, hadoop and memcached it168文库Acceleration for big data, hadoop and memcached it168文库
Acceleration for big data, hadoop and memcached it168文库
Accenture
 
Acceleration for big data, hadoop and memcached it168文库
Acceleration for big data, hadoop and memcached it168文库Acceleration for big data, hadoop and memcached it168文库
Acceleration for big data, hadoop and memcached it168文库
Accenture
 
MySQL Goes to 8! FOSDEM 2020 Database Track, January 2nd, 2020
MySQL Goes to 8!  FOSDEM 2020 Database Track, January 2nd, 2020MySQL Goes to 8!  FOSDEM 2020 Database Track, January 2nd, 2020
MySQL Goes to 8! FOSDEM 2020 Database Track, January 2nd, 2020
Geir Høydalsvik
 
Tracking Page Changes for Your Database and Bitmap Backups
Tracking Page Changes for Your Database and Bitmap BackupsTracking Page Changes for Your Database and Bitmap Backups
Tracking Page Changes for Your Database and Bitmap Backups
Laurynas Biveinis
 

Similar a Database Sharding the Right Way: Easy, Reliable, and Open source - HighLoad++ 2012 (20)

Database sharding the right way: еasy, reliable, and open source (Esen Sagynov)
Database sharding the right way: еasy, reliable, and open source (Esen Sagynov)Database sharding the right way: еasy, reliable, and open source (Esen Sagynov)
Database sharding the right way: еasy, reliable, and open source (Esen Sagynov)
 
HandlerSocket plugin Client for Javaとそれを用いたベンチマーク
HandlerSocket plugin Client for Javaとそれを用いたベンチマークHandlerSocket plugin Client for Javaとそれを用いたベンチマーク
HandlerSocket plugin Client for Javaとそれを用いたベンチマーク
 
Modernización del manejo de datos con v fabric
Modernización del manejo de datos con v fabricModernización del manejo de datos con v fabric
Modernización del manejo de datos con v fabric
 
Varnish, The Good, The Awesome, and the Downright Crazy
Varnish, The Good, The Awesome, and the Downright CrazyVarnish, The Good, The Awesome, and the Downright Crazy
Varnish, The Good, The Awesome, and the Downright Crazy
 
Varnish, The Good, The Awesome, and the Downright Crazy.
Varnish, The Good, The Awesome, and the Downright Crazy.Varnish, The Good, The Awesome, and the Downright Crazy.
Varnish, The Good, The Awesome, and the Downright Crazy.
 
Hadoop & no sql new generation database systems
Hadoop & no sql   new generation database systemsHadoop & no sql   new generation database systems
Hadoop & no sql new generation database systems
 
Acceleration for big data, hadoop and memcached it168文库
Acceleration for big data, hadoop and memcached it168文库Acceleration for big data, hadoop and memcached it168文库
Acceleration for big data, hadoop and memcached it168文库
 
Acceleration for big data, hadoop and memcached it168文库
Acceleration for big data, hadoop and memcached it168文库Acceleration for big data, hadoop and memcached it168文库
Acceleration for big data, hadoop and memcached it168文库
 
Starfish: A Self-tuning System for Big Data Analytics
Starfish: A Self-tuning System for Big Data AnalyticsStarfish: A Self-tuning System for Big Data Analytics
Starfish: A Self-tuning System for Big Data Analytics
 
NoSQL with MySQL
NoSQL with MySQLNoSQL with MySQL
NoSQL with MySQL
 
NPW2009 - my.opera.com scalability v2.0
NPW2009 - my.opera.com scalability v2.0NPW2009 - my.opera.com scalability v2.0
NPW2009 - my.opera.com scalability v2.0
 
Dirty - How simple is your database?
Dirty - How simple is your database?Dirty - How simple is your database?
Dirty - How simple is your database?
 
MariaDB for developers
MariaDB for developersMariaDB for developers
MariaDB for developers
 
Fotolog.Com.Mashraqi Scaling
Fotolog.Com.Mashraqi ScalingFotolog.Com.Mashraqi Scaling
Fotolog.Com.Mashraqi Scaling
 
MySQL Goes to 8! FOSDEM 2020 Database Track, January 2nd, 2020
MySQL Goes to 8!  FOSDEM 2020 Database Track, January 2nd, 2020MySQL Goes to 8!  FOSDEM 2020 Database Track, January 2nd, 2020
MySQL Goes to 8! FOSDEM 2020 Database Track, January 2nd, 2020
 
Four Problems You Run into When DIY-ing a “Big Data” Analytics System
Four Problems You Run into When DIY-ing a “Big Data” Analytics SystemFour Problems You Run into When DIY-ing a “Big Data” Analytics System
Four Problems You Run into When DIY-ing a “Big Data” Analytics System
 
Varnish Cache
Varnish CacheVarnish Cache
Varnish Cache
 
RADOS for Eucalyptus
RADOS for EucalyptusRADOS for Eucalyptus
RADOS for Eucalyptus
 
Tracking Page Changes for Your Database and Bitmap Backups
Tracking Page Changes for Your Database and Bitmap BackupsTracking Page Changes for Your Database and Bitmap Backups
Tracking Page Changes for Your Database and Bitmap Backups
 
DEF CON 27 - XILING GONG PETER PI - exploiting qualcom wlan and modem over th...
DEF CON 27 - XILING GONG PETER PI - exploiting qualcom wlan and modem over th...DEF CON 27 - XILING GONG PETER PI - exploiting qualcom wlan and modem over th...
DEF CON 27 - XILING GONG PETER PI - exploiting qualcom wlan and modem over th...
 

Más de CUBRID (6)

CUBRID Developer's Course
CUBRID Developer's CourseCUBRID Developer's Course
CUBRID Developer's Course
 
The Architecture of CUBRID
The Architecture of CUBRIDThe Architecture of CUBRID
The Architecture of CUBRID
 
Installing CUBRID on Windows
Installing CUBRID on WindowsInstalling CUBRID on Windows
Installing CUBRID on Windows
 
Cubrid Inside 5th Session 4 Replication
Cubrid Inside 5th Session 4 ReplicationCubrid Inside 5th Session 4 Replication
Cubrid Inside 5th Session 4 Replication
 
Cubrid Inside 5th Session 3 Migration
Cubrid Inside 5th Session 3 MigrationCubrid Inside 5th Session 3 Migration
Cubrid Inside 5th Session 3 Migration
 
Cubrid Inside 5th Session 2 Ha Implementation
Cubrid Inside 5th Session 2 Ha ImplementationCubrid Inside 5th Session 2 Ha Implementation
Cubrid Inside 5th Session 2 Ha Implementation
 

Último

IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI Solutions
Enterprise Knowledge
 

Último (20)

Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUnderstanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
 
A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI Solutions
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day Presentation
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path Mount
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivity
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonets
 

Database Sharding the Right Way: Easy, Reliable, and Open source - HighLoad++ 2012

  • 1. Database Sharding the Right Way: Easy, Reliable, and Open source.
  • 2. – – – – –
  • 3. Growing in the Wild. The story by CUBRID Database Developers. View on Slideshare http://profyclub.ru/docs/439
  • 8. - Enterprise - Vendor dependency SQL - Scalability constraints - Common interface - Open Source NoSQL - Scalable - Non-standard API
  • 11. DBMS Worldwide 21,359 23,252 26,701 11.8% Market Korea 349 395 478 17% $MM Ratio 1.6% 1.7% 1.8% 70% 65% 60% 55% Korea 50% Worldwide 45% 40% 2009 2010 2011 Source: Gartner, 2012
  • 12. RDBMS is still the best choice for mission-critical data
  • 14.
  • 15. Name Type Requirements Interface DB ETC DBMS w/ - Hibernate Hibernate shards AS framework Hibernate Java - JVM support dbShards AS & Middleware MySQL Java, C Middleware Gizzard (Twitter) Any storage - JVM Java Middleware & Spider for MySQL MySQL Any Storage Engine - CUBRID CUBRID SHARD Middleware - MySQL Any - Oracle
  • 16. • • • • – – • • •
  • 17. – – – – –
  • 18. Is there such RDBMS?
  • 20.       
  • 21.
  • 22.
  • 25. – • – • –
  • 26. SHARD_KEY_MODULAR = 256 SHARD_KEY_LIBRARY_NAME = ‘’ SHARD_KEY_FUNCTION_NAME = ‘’
  • 27.
  • 28. id  user_id =  order_no  …
  • 29. int user_get_shard_key(int type, void *val) { int mod = 2; if (val == NULL) { return ERROR_ON_ARGUMENT; } switch(type) { case SHARD_U_TYPE_INT: { int ival; ival = (int) (*(int *)val); return ival % 2; } break; case SHARD_U_TYPE_STRING: return ERROR_ON_MAKE_SHARD_KEY; default: return ERROR_ON_ARGUMENT; } return ERROR_ON_MAKE_SHARD_KEY; }
  • 30. Configuring CUBRID SHARD is very easy!
  • 31. $> cubrid createdb shard1 $> csql -S -u dba shard1 -c "create user shard password 'shard123’” $> cubrid server start shard1
  • 32. $> csql -C -u shard -p 'shard123' shard1@localhost -c ”CREATE TABLE users (id BIGINT PRIMARY KEY, name VARCHAR(20), age SMALLINT)”
  • 33. $> cubrid shard start @ cubrid shard start ++ cubrid shard start: success
  • 34. connectionURL = "jdbc:cubrid:localhost:45511:shard1:shard:shard123:";
  • 35. String query = "SELECT name FROM student WHERE student_no = /*+ shard_key */ ?; "; PrepareStatement query_stmt = connection.prepareStatement(query); query_stmt.setInt(1,100); ResultSet rs = query_stmt.executeQuery(); // fetch resultset range key_column (hash result) shard_id min max student_no 0 63 0 student_no 64 127 1 student_no 128 191 2 student_no 192 255 3
  • 36. SELECT name FROM student WHERE student_no = /*+ shard_key */ ?; • •
  • 37.
  • 38. How did we tackle the unique ID problem?
  • 39. – – – – –
  • 40.
  • 42. Description Quantity OS (64bit) / CPU / MEM Agent to generat load and 8 Centos5.3 / xeon 2G-8core / 8G NDrive App Simulator CUBRID Shard 1 Centos5.3 / xeon 2.27G-16core / 24G CUBRID Broker 1 Centos5.3 / xeon 2.27G-16core / 24G Meta DB 4 Centos5.x / xeon 2.33G-4core / 8G User DB 1 Centos5.3 / xeon 2.5G-8core / 8G
  • 43. Load Generator Performance 100000 80000 60000 RPS 40000 20000 0 32 64 96 128 160 192 256 320 384 448 512 # of concurrent users Performance trend when load is increased 60000 70 50000 60 50 40000 40 30000 30 20000 20 10000 10 0 0 64 128 192 256 320 proxy cpu RPS metadb TPS Mean Time(ms)
  • 44. - Similar performance until 128 Vuser - When SHARD is not used, 128 Vuser is maximum - In SHARD usage case, when # of Vuser is increase - maximum performance can be achieved as well as shorter response time and lower CPU utilization. 64 128 192 256 320 Vuser
  • 46. • AWS Xlarge instance – • 7GB RAM • 20 EC2 units – – • Ubuntu 12.04 64-bit – • CUBRID 9.0 (beta) – – no shrading – • MySQL 5.5.28 – • Buffer – • 2.8GB – data_buffer_size • 2.8GB • innodb_pool_size • Default configurations
  • 47. 46 44.18 42.66 42 38 MySQL 5.5.28 CUBRID 9.0 34 30 TPC-C Index
  • 48.              
  • 49. – – • – – • –
  • 50. What’s next for CUBRID?
  • 52.
  • 53. www.cubrid.org Esen Sagynov CUBRID Project Manager esen@cubrid.org CUBRID Q&A www.cubrid.org/questions

Notas del editor

  1. Self introduction.
  2. CUBRID is a fully-feature Relational Database Management System.CUBRID is not a usual open source project backed by a community, but it’s actually backed by the largest IT corporation in South Korea.
  3. Today I want to talk about the importance of relational database systems.
  4. Nice NoSQL vs. RDBMS discussion on one of the Russian forums http://it-talk.org/post80487.html#p80487
  5. In South Korea, Enterprise Business is even more dependent on Oracle database.
  6. If you ask companies who operate mission-critical services, they will tell:1) that a relational database system is still the best choice for mission-critical data;2) that service availability is more important than performance;3) that high performance is good, but predictable performance is the king.The fellows at Box.com cloud storage platform also say they choose RDBMS for mission-critical data.
  7. We’ve developed Database Sharding in CUBRID!The difference between partitioning and sharding is that with partitioning you can divide the data between multiple tables within one database which have identical schema.But with sharding you divide data between tables located in different databases. Sometimes the database gets so big that mere tables partitioning is not enough, in fact, it will hinder the performance of the entire system. So we’d better add new databases otherwise called Shards.If HA is for READ distribution, Sharding is for WRITE distribution as you can write to different databases simultaneously.This feature is something mostdevelopers dream to have it on Database side rather than on the application layer. Database Sharding doesn’t just simplify the developers’ life, but also improves both the application and database performance.The Application gets rid of the sharding logic.The Database reduces the index size.Win-win!
  8. - Talking about the open source RDBMS solutions, MySQL doesn’t provide database sharding out of the box.- Google had to significantly change MySQL replication to make it work similarly. But at the time Sun, the former owner of MySQL didn’t accept Google’s changes, resulting in a fork form mainstream without mainstream support.- Twitter has recently opened their MySQL fork.http://www.oracle.com/technetwork/database/features/availability/300461-132370.pdf
  9. SHARD_KEY_MODULAR = 256SHARD_KEY_LIBRARY_NAME = stringSHARD_KEY_FUNCTION_NAME = string
  10. No additional SQL parsing because of HINT.
  11. Eugen:When I started thinking about this presentation, this is the outcome that I wanted from it:For the experienced guys in the audience this are the thoughtswhat I want you to have at the end of this presentation. I want you to think that:Some guys talked about some cool stuff they encountered in applications (don't remember what)There's a database that they use for this type of applications, it's open source and saves a lot of trouble (don't remember what trouble exactly)They're really keen on doing things rightThis is what I remember from every presentation that I’ve attended. Not the details.So I don’t expect you to remember the technical details. What I want is to grasp the concept of what we will talk about.