SlideShare ist ein Scribd-Unternehmen logo
1 von 40
mrys@microsoft.com









MySpace: the Business Problem
 223M users

 900 Terabytes of data

 450 SQL Servers
 Required (eventual) data
  consistency across databases
MySpace’s Data Consistency Problem




    1-1000     1001-2000




   2001-3000   3001-4000




   4001-5000   5001-6000
MySpace’s Solution


 Propagate data changes from one DB to
  other DBs using reliable, async Message
  Service (Service Broker)




 And also used for
MySpace’s Service Dispatcher
 Coordination point between all SQL Servers


 Load-balanced across 30 SQL Servers

 Enables multicast/broadcast functionality

 18,000 ~2k msgs/sec per dispatcher SQL
  Server
MySpace Architecture


1-1000          3001-4000
                                               My DB                I change
                                               gets updated          my status
                      Service
          Service
   TX3    Broker
                    TX2                TX1
                    Dispatcher Service                              userId=1024
                                Broker
2001-3000     Service
                                         1001-2000
              Broker


    TX4                 TX5

4001-5000       5001-6000                                     Web Tier
               Data Tier
Many other customers using similar
patterns
 Online electronic stores (cannot give names
  )
 Travel reservation systems (e.g. Choice
  International)







Social
                                                          Social
                                                       Networks
                                                         Network
                     Management                             s
 Ops                   Services


                                  Data Backend
                                    Data Backend
                                    Services
                                      Data Backend
                                       Services
                                         Services
          MSN
 MSN     Games
Games         l
        Web Portal


                                  Front Door
                      GameBar       Router
          WLM                      Services
 WLM     Games
                        Host
Games   Web Portal




          Bing
 Bing                   Auth
         Games                       STS
                                      STS
Games         l
        Web Portal


                                  Azure Data Centers





•

•
•
Partitioned over 100 SQL Azure DBs
                                                                                  Find Friends’ Profiles
                                                                Social            Get my Profile
                                                                  Social
                                                               Services
     User     …     DB                                           Service          Publish feed, read feed
                                 Find Friends’ Profiles


                                     Get Friends highscores

                                                                Gamer             Last Played
                                                                  Gamer
                                                               Services           Favorites
            STS                                                  Services         Game Preferences
              STS
                             Leaderb      …                                       Social Leaderboards
                                                DB
                               oard

                         Partitioned over 298 SQL Azure DBs         Game
                                                                      Game        Disable/Enable
                                                                  Ingestion       Games from
       Front Door             Write user specific game infos        Ingestion
                                                                                  accessing services
         Router
        Services

                                                                   Game
                                                                                  Game binaries
                              User       …     DB                 Catalog
                                                                                  Game metadata
        250 instances

                         Partitioned over 100 SQL Azure DBs       250 instances
• Fanout: Parallel calls to
   multiple database
   partitions

• Quorum: Able to
   tolerate a percentage of
   request failures during
   Fanout

• Retry: Retry on database
   requests error
Statistics per game















































   Federation
                                                              Azure DB with Federation Root
        Represents the data being sharded
   Federation Root
                                                             Federation Directories, Federation Users,
        Database that logically houses federations,
        contains federation meta data                        Federation Distributions, …
   Federation Key
        Value that determines the routing of a piece
        of data (defines a Federation Distribution)
   Federation Member (aka Shard)
                                                              Federation “Orders_Fed”
        A physical container for a set of federated          (Federation Key: CustomerID)
        tables for a specific key range and reference
        tables
                                                                    Member: PK [min, 100)
   Federated Table
        Table that contains only atomic units for the             AU           AU           AU
        member’s key range                                       PK=5         PK=25        PK=35
   Reference Table
        Non-sharded table
   Atomic Unit                                                      Member: PK [100, 488)
        All rows with the same federation
        key value: always together!                                AU           AU           AU
                                                Connection



                                                                 PK=105       PK=235       PK=365
                                                 Gateway




                                                                    Member: PK [488, max)

                                                                   AU          AU            AU
                             Sharded                             PK=555      PK=2545       PK=3565

                            Application                                               24
•
•


•


    http://www.microsoft.com/casestudies/Case_Study_Detail.aspx?CaseSt
    udyID=4000008310

                           http://cacm.acm.org/magazines/2011/6/108663-
       scalable-sql

       http://download.microsoft.com/download/9/E/9/9E9F240D-0EB6-472E-
       B4DE-
       6D9FCBB505DD/Windows%20Azure%20No%20SQL%20White%20Paper.p
       df

       http://blogs.msdn.com/b/cbiyikoglu/archive/2011/03/03/nosql-genes-in-
       sql-azure-federations.aspx

       mrys@microsoft.com

       http://sqlblog.com/blogs/michael_rys/default.aspx
Connection:
     Server=az1cl321.db.windows.net;
     Database=MyDB;
     User=AppUser;
     Passwd=****;



                                   Gateway
                                                                                              CREATE FEDERATION
                                                                          Existing Database


                                             CREATE FEDERATION sales
                                             (customer_id bigint RANGE)




29
Federation with a Single Shard
                                                    Existing Database

                                                                           CREATE FEDERATION sales
                                                                           (customer_id bigint RANGE)

                                                                           Database root contains:
                                                              sales
                                                                           • Federation root = DB level object
                                                                             containing federation scheme
                                          Gateway




                                                                           • Federation users
                                                                           • Federation metadata incl. federation
                            Connection:




                                                                             map
Server=az1cl321.db.windows.net;




                                                        Range: Min...Max
Database=MyDB;
User=AppUser;
Passwd=****;




                                                    Federation Member
                                                                                                            30
Introducing Two Connection Modes

 • Filtered Connection
    – Guarantees that any queries or DML will produce the
      same results independent of changes to the physical
      layout of the federation members
    – Scoped to an “Atomic Unit”
 • Unfiltered Connection
    – Scoped to a Federation Member
    – Management Connection




                                                       31
Create Schema on Member: Management Connection
                                                                            Existing Database




                                                                                             sales
                                          Gateway




                                                    USE FEDEDERATION sales (customer_id=0)
                            Connection:




                                                    WITH FILTERING=OFF, RESET;
Server=az1cl321.db.windows.net;




                                                        CREATE TABLE …


                                                                                                     Range: Min...Max


                                                                                 Customer                   Order        Product
Database=MyDB;
User=AppUser;
Passwd=****;




                                                                                                     Federation Member
                                                                © 2011 Microsoft Corporation. Microsoft Materials
                                                                     - Confidential. All rights reserved. CITA #                   32
                                                                                  MSFT101120_A
DDL
 CREATE TABLE customer (
   c_id bigint PRIMARY KEY,
   …
   )
   FEDERATED ON (customer_id=c_id);

 CREATE TABLE order (
   item_num int,
   customer_id bigint,
   date_sold datetime2,
   …,
   CONSTRAINT PK_Order PRIMARY KEY (item_num, customer_id, date_sold),
   CONSTRAINT FK_Cust FOREIGN KEY customer_id REFERENCES
   customer (customer_id)
   )
   FEDERATED ON (customer_id=customer_id);

 CREATE TABLE product (
   product_name varchar(100) NOT NULL,
   unit_price money,
   item_num int PRIMARY KEY,
   …
   );

                                                                         33
More Detail
 • Supported data types for federation key : bigint, int, GUID, and varbinary
   (900)
     – Only range partitioning
 • Federation key must be part of unique index
 • Foreign key constraints only allowed between federated tables and from
   federated table to reference table
 • Not all Azure programmability features supported
     – Sequence, timestamp
 • Additional surface area restrictions
     – Indexed views, drop database (members)
 • Schemas are allowed to diverge over time
     – Furthermore, in v1, schema updates to existing members must be done in each
       member (where the change is needed)
 • USE FEDERATION “rewires a connection”
     – Connection is reestablished
     – All existing settings and context of the connection is lost (sp_reset_connection)
     – Must be in a batch by itself



                                                                                           34
Connect to Atomic Unit: Filtered
                                                                       Existing Database



                                                                                                          When using into a specific key
                                                                                                          value, SELECT will only return
                                                                                       sales
                                                                                                          records from federated tables that
                                                                                                          match that value. It will still return
                                          Gateway




                                                                                                          all records from non-federated
                                                                                                          tables.
                                                    USE FEDEDERATION sales (customer_id=3)
                            Connection:




                                                                                                          Inserts and UPDATES operating
                                                    WITH FILTERING=ON, RESET;
                                                                                                          outside of the value will fail.
Server=az1cl321.db.windows.net;




                                                                                 Range: Min...Max

                                                                       customer        order    product

                                                                                        3
Database=MyDB;




                                            SELECT * from customer           3
User=AppUser;
Passwd=****;




                                                                                                                  SELECT * from product

                                                       SELECT * from order


                                                                       Federation Member
                                                                                                                                          35
More on Connection Filtering

 • Most operations behave differently in filtered vs
   unfiltered connections
 • Connection filtering is a property of the session
    – Filter injected dynamically at runtime
    – Cannot inspect source code to determine how it behaves
       • E.g., running stored proc written for filtered mode on unfiltered
         connection could lead to unintended results
 • There are several operations that will not work in
   filtered connection in v1
    – DDL, DML on reference tables, …
 • Fan-out, bulk operations not efficient in filtered mode
    – For now, filter=off is our best offer


                                                                             36
Support Matrix

                    Connection Type Filtered Unfiltered Named
              Operation                                (unfiltered)
                     Dynamic SELECT     P        P          P
           DML* (federated tables)      P        P          P
           DML* (reference tables)      X        P          P
                                 DDL    X        P          P
                Views (not indexed)     P        P          P
                       UDF - activate   P        P          P
              Stored Proc - activate    P        P          P
       Trigger (all modes) - activate   P        P          P
              CREATE/UPDATE Stats       X        P          P
   Bulk Ops
        openrowset bulk, bcp, bulk
                               insert   X        P          P


   * not including SELECT & modules
    ^ autostats will work on all connections
   System stored procs, intrinsics will be unaffected (run unfiltered)


                                                                         37
Splitting a Member
                                                                          Existing Database



                                                                                                     ALTER FEDERATION sales
                                                                                       sales         SPLIT AT (customer_id=50)
                                          Gateway




                                                    USE FEDERATION ROOT
                            Connection:




                                                    WITH RESET

                                                    Using to the
Server=az1cl321.db.windows.net;




                                                    federation ROOT
                                                    will pop you out of
                                                    a member back                Range: Min...Max
                                                    into the database
                                                    that hosts the        customer     order    product

                                                    federation               3          3
Database=MyDB;
User=AppUser;
Passwd=****;




                                                                            40          58
                                                                            58          58



                                                                          Federation Member
                                                                                                                            38
Two New Members
                                                                              Existing Database



                                                                                                      ALTER FEDERATION sales
                                                                                              sales   SPLIT AT (customer_id=50)
                                          Gateway




                                                    USE FEDEDERATION ROOT
                                                    WITH RESET
                            Connection:
Server=az1cl321.db.windows.net;




                                                                  Range: Min...50                                 Range: 51...Max

                                                           customer     order       product                customer     order       product

                                                                          3
Database=MyDB;




                                                              3
User=AppUser;




                                                                                                                         58
Passwd=****;




                                                             40                                              58          58




                                                            Federation Member                              Federation Member
                                                                                                                                        39
Two New Members
                                                                                Existing Database




                                                                                                sales
                                            Gateway




                                                      USE FEDEDERATION sales (customer_id=40)
                            Connection:




                                                      WITH FILTERING=ON, RESET;
Server=az1cl321.db.windows.net;




                                                                    Range: Min...50                            Range: 51...Max

                                                             customer     order       product           customer     order       product
Database=MyDB;




                                          SELECT *
User=AppUser;




                                                                                                                      58
Passwd=****;




                                          from customer                    40
                                                               40                                         58          58

                                                SELECT * from order




                                                                                                                                     40

Weitere ähnliche Inhalte

Was ist angesagt?

9sept2009 concept electronics
9sept2009 concept electronics9sept2009 concept electronics
9sept2009 concept electronics
Agora Group
 
Microsoft Unified Communications - Outlook/Exchange Better Together Presentation
Microsoft Unified Communications - Outlook/Exchange Better Together PresentationMicrosoft Unified Communications - Outlook/Exchange Better Together Presentation
Microsoft Unified Communications - Outlook/Exchange Better Together Presentation
Microsoft Private Cloud
 

Was ist angesagt? (14)

TCA/TCO Benefits of Consolidating Databases and x86 Servers on IBM Enterprise...
TCA/TCO Benefits of Consolidating Databases and x86 Servers on IBM Enterprise...TCA/TCO Benefits of Consolidating Databases and x86 Servers on IBM Enterprise...
TCA/TCO Benefits of Consolidating Databases and x86 Servers on IBM Enterprise...
 
Power management: Lenovo ThinkServer Smart Grid Technology
Power management: Lenovo ThinkServer Smart Grid TechnologyPower management: Lenovo ThinkServer Smart Grid Technology
Power management: Lenovo ThinkServer Smart Grid Technology
 
9sept2009 concept electronics
9sept2009 concept electronics9sept2009 concept electronics
9sept2009 concept electronics
 
Microsoft Unified Communications - Outlook/Exchange Better Together Presentation
Microsoft Unified Communications - Outlook/Exchange Better Together PresentationMicrosoft Unified Communications - Outlook/Exchange Better Together Presentation
Microsoft Unified Communications - Outlook/Exchange Better Together Presentation
 
Lucene in the Cloud: Learn how GCE leveraged the power of search and Big Data...
Lucene in the Cloud: Learn how GCE leveraged the power of search and Big Data...Lucene in the Cloud: Learn how GCE leveraged the power of search and Big Data...
Lucene in the Cloud: Learn how GCE leveraged the power of search and Big Data...
 
XenDesktop Presentations 25022010
XenDesktop Presentations 25022010XenDesktop Presentations 25022010
XenDesktop Presentations 25022010
 
VNSISPL_DBMS_Concepts_ch4
VNSISPL_DBMS_Concepts_ch4VNSISPL_DBMS_Concepts_ch4
VNSISPL_DBMS_Concepts_ch4
 
NoSQL Databases for Implementing Data Services – Should I Care?
NoSQL Databases for Implementing Data Services – Should I Care?NoSQL Databases for Implementing Data Services – Should I Care?
NoSQL Databases for Implementing Data Services – Should I Care?
 
distilling the Web of Data drop by drop (with Java)
distilling the Web of Data drop by drop (with Java)distilling the Web of Data drop by drop (with Java)
distilling the Web of Data drop by drop (with Java)
 
SUPPORTING QUERYING ON MULTI-MILLION EVENTS PER SECOND from Structure:Data 2012
SUPPORTING QUERYING ON MULTI-MILLION EVENTS PER SECOND from Structure:Data 2012SUPPORTING QUERYING ON MULTI-MILLION EVENTS PER SECOND from Structure:Data 2012
SUPPORTING QUERYING ON MULTI-MILLION EVENTS PER SECOND from Structure:Data 2012
 
[NHN] 성공적인 소셜게임 런칭과 기술
[NHN] 성공적인 소셜게임 런칭과 기술[NHN] 성공적인 소셜게임 런칭과 기술
[NHN] 성공적인 소셜게임 런칭과 기술
 
Cache-partitioning
Cache-partitioningCache-partitioning
Cache-partitioning
 
Introduction to NoSQL and Couchbase
Introduction to NoSQL and CouchbaseIntroduction to NoSQL and Couchbase
Introduction to NoSQL and Couchbase
 
Dell latitude 2120-specsheet
Dell latitude 2120-specsheetDell latitude 2120-specsheet
Dell latitude 2120-specsheet
 

Ähnlich wie Building Scalable SQL Applications Using NoSQL Paradigms

A Practical Architecture Design for MMO Casual Game
A Practical Architecture Design for MMO Casual GameA Practical Architecture Design for MMO Casual Game
A Practical Architecture Design for MMO Casual Game
action.vn
 
OrientDB the graph database
OrientDB the graph databaseOrientDB the graph database
OrientDB the graph database
artem_orobets
 
OrientDB the graph database
OrientDB the graph databaseOrientDB the graph database
OrientDB the graph database
Artem Orobets
 
SQL Server Developer 70-433
SQL Server Developer 70-433SQL Server Developer 70-433
SQL Server Developer 70-433
jasonyousef
 
Windows Azure Platform
Windows Azure PlatformWindows Azure Platform
Windows Azure Platform
AsmTrash
 

Ähnlich wie Building Scalable SQL Applications Using NoSQL Paradigms (20)

SQLBits X Scaling out with SQL Azure Federations
SQLBits X Scaling out with SQL Azure FederationsSQLBits X Scaling out with SQL Azure Federations
SQLBits X Scaling out with SQL Azure Federations
 
A Practical Architecture Design for MMO Casual Game
A Practical Architecture Design for MMO Casual GameA Practical Architecture Design for MMO Casual Game
A Practical Architecture Design for MMO Casual Game
 
Take the spaghetti out of windows azure – an insight for it pro techies part 1
Take the spaghetti out of windows azure – an insight for it pro techies part 1Take the spaghetti out of windows azure – an insight for it pro techies part 1
Take the spaghetti out of windows azure – an insight for it pro techies part 1
 
Office 365 Identity Management options
Office 365 Identity Management options Office 365 Identity Management options
Office 365 Identity Management options
 
Windows Azure Uzerinden Alinabilen Hizmetler
Windows Azure Uzerinden Alinabilen HizmetlerWindows Azure Uzerinden Alinabilen Hizmetler
Windows Azure Uzerinden Alinabilen Hizmetler
 
Windows Azure Üzerinden Alınabilecek Hizmetler
Windows Azure Üzerinden Alınabilecek HizmetlerWindows Azure Üzerinden Alınabilecek Hizmetler
Windows Azure Üzerinden Alınabilecek Hizmetler
 
End-to-End Integrated Management with System Center 2012
End-to-End Integrated Management with System Center 2012End-to-End Integrated Management with System Center 2012
End-to-End Integrated Management with System Center 2012
 
Introducing SQL Server Data Services
Introducing SQL Server Data ServicesIntroducing SQL Server Data Services
Introducing SQL Server Data Services
 
Introducing SQL Server Data Services
Introducing SQL Server Data ServicesIntroducing SQL Server Data Services
Introducing SQL Server Data Services
 
線上遊戲與雲端運算
線上遊戲與雲端運算線上遊戲與雲端運算
線上遊戲與雲端運算
 
Introduction to AWS tools
Introduction to AWS toolsIntroduction to AWS tools
Introduction to AWS tools
 
OrientDB the graph database
OrientDB the graph databaseOrientDB the graph database
OrientDB the graph database
 
OrientDB the graph database
OrientDB the graph databaseOrientDB the graph database
OrientDB the graph database
 
SQL Server Developer 70-433
SQL Server Developer 70-433SQL Server Developer 70-433
SQL Server Developer 70-433
 
Office 365: Planning and Automating for Hybrid Identity Scenarios in the Clou...
Office 365: Planning and Automating for Hybrid Identity Scenarios in the Clou...Office 365: Planning and Automating for Hybrid Identity Scenarios in the Clou...
Office 365: Planning and Automating for Hybrid Identity Scenarios in the Clou...
 
6425 c 01
6425 c 016425 c 01
6425 c 01
 
Peering through the Clouds - Cloud Architectures You Need to Master
Peering through the Clouds - Cloud Architectures You Need to MasterPeering through the Clouds - Cloud Architectures You Need to Master
Peering through the Clouds - Cloud Architectures You Need to Master
 
Intro To Live Framework
Intro To Live FrameworkIntro To Live Framework
Intro To Live Framework
 
My cloud + Windows Phone app experience
My cloud + Windows Phone app experienceMy cloud + Windows Phone app experience
My cloud + Windows Phone app experience
 
Windows Azure Platform
Windows Azure PlatformWindows Azure Platform
Windows Azure Platform
 

Mehr von Michael Rys

Mehr von Michael Rys (20)

Big Data and Data Warehousing Together with Azure Synapse Analytics (SQLBits ...
Big Data and Data Warehousing Together with Azure Synapse Analytics (SQLBits ...Big Data and Data Warehousing Together with Azure Synapse Analytics (SQLBits ...
Big Data and Data Warehousing Together with Azure Synapse Analytics (SQLBits ...
 
Big Data Processing with .NET and Spark (SQLBits 2020)
Big Data Processing with .NET and Spark (SQLBits 2020)Big Data Processing with .NET and Spark (SQLBits 2020)
Big Data Processing with .NET and Spark (SQLBits 2020)
 
Running cost effective big data workloads with Azure Synapse and ADLS (MS Ign...
Running cost effective big data workloads with Azure Synapse and ADLS (MS Ign...Running cost effective big data workloads with Azure Synapse and ADLS (MS Ign...
Running cost effective big data workloads with Azure Synapse and ADLS (MS Ign...
 
Running cost effective big data workloads with Azure Synapse and Azure Data L...
Running cost effective big data workloads with Azure Synapse and Azure Data L...Running cost effective big data workloads with Azure Synapse and Azure Data L...
Running cost effective big data workloads with Azure Synapse and Azure Data L...
 
Big Data Processing with Spark and .NET - Microsoft Ignite 2019
Big Data Processing with Spark and .NET - Microsoft Ignite 2019Big Data Processing with Spark and .NET - Microsoft Ignite 2019
Big Data Processing with Spark and .NET - Microsoft Ignite 2019
 
Bringing the Power and Familiarity of .NET, C# and F# to Big Data Processing ...
Bringing the Power and Familiarity of .NET, C# and F# to Big Data Processing ...Bringing the Power and Familiarity of .NET, C# and F# to Big Data Processing ...
Bringing the Power and Familiarity of .NET, C# and F# to Big Data Processing ...
 
Building data pipelines for modern data warehouse with Apache® Spark™ and .NE...
Building data pipelines for modern data warehouse with Apache® Spark™ and .NE...Building data pipelines for modern data warehouse with Apache® Spark™ and .NE...
Building data pipelines for modern data warehouse with Apache® Spark™ and .NE...
 
Modernizing ETL with Azure Data Lake: Hyperscale, multi-format, multi-platfor...
Modernizing ETL with Azure Data Lake: Hyperscale, multi-format, multi-platfor...Modernizing ETL with Azure Data Lake: Hyperscale, multi-format, multi-platfor...
Modernizing ETL with Azure Data Lake: Hyperscale, multi-format, multi-platfor...
 
Best Practices and Performance Tuning of U-SQL in Azure Data Lake (SQL Konfer...
Best Practices and Performance Tuning of U-SQL in Azure Data Lake (SQL Konfer...Best Practices and Performance Tuning of U-SQL in Azure Data Lake (SQL Konfer...
Best Practices and Performance Tuning of U-SQL in Azure Data Lake (SQL Konfer...
 
Bring your code to explore the Azure Data Lake: Execute your .NET/Python/R co...
Bring your code to explore the Azure Data Lake: Execute your .NET/Python/R co...Bring your code to explore the Azure Data Lake: Execute your .NET/Python/R co...
Bring your code to explore the Azure Data Lake: Execute your .NET/Python/R co...
 
Best practices on Building a Big Data Analytics Solution (SQLBits 2018 Traini...
Best practices on Building a Big Data Analytics Solution (SQLBits 2018 Traini...Best practices on Building a Big Data Analytics Solution (SQLBits 2018 Traini...
Best practices on Building a Big Data Analytics Solution (SQLBits 2018 Traini...
 
U-SQL Killer Scenarios: Custom Processing, Big Cognition, Image and JSON Proc...
U-SQL Killer Scenarios: Custom Processing, Big Cognition, Image and JSON Proc...U-SQL Killer Scenarios: Custom Processing, Big Cognition, Image and JSON Proc...
U-SQL Killer Scenarios: Custom Processing, Big Cognition, Image and JSON Proc...
 
Introduction to Azure Data Lake and U-SQL for SQL users (SQL Saturday 635)
Introduction to Azure Data Lake and U-SQL for SQL users (SQL Saturday 635)Introduction to Azure Data Lake and U-SQL for SQL users (SQL Saturday 635)
Introduction to Azure Data Lake and U-SQL for SQL users (SQL Saturday 635)
 
U-SQL Killer Scenarios: Taming the Data Science Monster with U-SQL and Big Co...
U-SQL Killer Scenarios: Taming the Data Science Monster with U-SQL and Big Co...U-SQL Killer Scenarios: Taming the Data Science Monster with U-SQL and Big Co...
U-SQL Killer Scenarios: Taming the Data Science Monster with U-SQL and Big Co...
 
The Road to U-SQL: Experiences in Language Design (SQL Konferenz 2017 Keynote)
The Road to U-SQL: Experiences in Language Design (SQL Konferenz 2017 Keynote)The Road to U-SQL: Experiences in Language Design (SQL Konferenz 2017 Keynote)
The Road to U-SQL: Experiences in Language Design (SQL Konferenz 2017 Keynote)
 
Introducing U-SQL (SQLPASS 2016)
Introducing U-SQL (SQLPASS 2016)Introducing U-SQL (SQLPASS 2016)
Introducing U-SQL (SQLPASS 2016)
 
Tuning and Optimizing U-SQL Queries (SQLPASS 2016)
Tuning and Optimizing U-SQL Queries (SQLPASS 2016)Tuning and Optimizing U-SQL Queries (SQLPASS 2016)
Tuning and Optimizing U-SQL Queries (SQLPASS 2016)
 
Taming the Data Science Monster with A New ‘Sword’ – U-SQL
Taming the Data Science Monster with A New ‘Sword’ – U-SQLTaming the Data Science Monster with A New ‘Sword’ – U-SQL
Taming the Data Science Monster with A New ‘Sword’ – U-SQL
 
Killer Scenarios with Data Lake in Azure with U-SQL
Killer Scenarios with Data Lake in Azure with U-SQLKiller Scenarios with Data Lake in Azure with U-SQL
Killer Scenarios with Data Lake in Azure with U-SQL
 
ADL/U-SQL Introduction (SQLBits 2016)
ADL/U-SQL Introduction (SQLBits 2016)ADL/U-SQL Introduction (SQLBits 2016)
ADL/U-SQL Introduction (SQLBits 2016)
 

Kürzlich hochgeladen

The basics of sentences session 3pptx.pptx
The basics of sentences session 3pptx.pptxThe basics of sentences session 3pptx.pptx
The basics of sentences session 3pptx.pptx
heathfieldcps1
 
Jual Obat Aborsi Hongkong ( Asli No.1 ) 085657271886 Obat Penggugur Kandungan...
Jual Obat Aborsi Hongkong ( Asli No.1 ) 085657271886 Obat Penggugur Kandungan...Jual Obat Aborsi Hongkong ( Asli No.1 ) 085657271886 Obat Penggugur Kandungan...
Jual Obat Aborsi Hongkong ( Asli No.1 ) 085657271886 Obat Penggugur Kandungan...
ZurliaSoop
 

Kürzlich hochgeladen (20)

How to Give a Domain for a Field in Odoo 17
How to Give a Domain for a Field in Odoo 17How to Give a Domain for a Field in Odoo 17
How to Give a Domain for a Field in Odoo 17
 
Understanding Accommodations and Modifications
Understanding  Accommodations and ModificationsUnderstanding  Accommodations and Modifications
Understanding Accommodations and Modifications
 
Unit-IV; Professional Sales Representative (PSR).pptx
Unit-IV; Professional Sales Representative (PSR).pptxUnit-IV; Professional Sales Representative (PSR).pptx
Unit-IV; Professional Sales Representative (PSR).pptx
 
Kodo Millet PPT made by Ghanshyam bairwa college of Agriculture kumher bhara...
Kodo Millet  PPT made by Ghanshyam bairwa college of Agriculture kumher bhara...Kodo Millet  PPT made by Ghanshyam bairwa college of Agriculture kumher bhara...
Kodo Millet PPT made by Ghanshyam bairwa college of Agriculture kumher bhara...
 
UGC NET Paper 1 Mathematical Reasoning & Aptitude.pdf
UGC NET Paper 1 Mathematical Reasoning & Aptitude.pdfUGC NET Paper 1 Mathematical Reasoning & Aptitude.pdf
UGC NET Paper 1 Mathematical Reasoning & Aptitude.pdf
 
Unit-V; Pricing (Pharma Marketing Management).pptx
Unit-V; Pricing (Pharma Marketing Management).pptxUnit-V; Pricing (Pharma Marketing Management).pptx
Unit-V; Pricing (Pharma Marketing Management).pptx
 
Holdier Curriculum Vitae (April 2024).pdf
Holdier Curriculum Vitae (April 2024).pdfHoldier Curriculum Vitae (April 2024).pdf
Holdier Curriculum Vitae (April 2024).pdf
 
Unit-IV- Pharma. Marketing Channels.pptx
Unit-IV- Pharma. Marketing Channels.pptxUnit-IV- Pharma. Marketing Channels.pptx
Unit-IV- Pharma. Marketing Channels.pptx
 
This PowerPoint helps students to consider the concept of infinity.
This PowerPoint helps students to consider the concept of infinity.This PowerPoint helps students to consider the concept of infinity.
This PowerPoint helps students to consider the concept of infinity.
 
The basics of sentences session 3pptx.pptx
The basics of sentences session 3pptx.pptxThe basics of sentences session 3pptx.pptx
The basics of sentences session 3pptx.pptx
 
ComPTIA Overview | Comptia Security+ Book SY0-701
ComPTIA Overview | Comptia Security+ Book SY0-701ComPTIA Overview | Comptia Security+ Book SY0-701
ComPTIA Overview | Comptia Security+ Book SY0-701
 
Application orientated numerical on hev.ppt
Application orientated numerical on hev.pptApplication orientated numerical on hev.ppt
Application orientated numerical on hev.ppt
 
Food safety_Challenges food safety laboratories_.pdf
Food safety_Challenges food safety laboratories_.pdfFood safety_Challenges food safety laboratories_.pdf
Food safety_Challenges food safety laboratories_.pdf
 
SKILL OF INTRODUCING THE LESSON MICRO SKILLS.pptx
SKILL OF INTRODUCING THE LESSON MICRO SKILLS.pptxSKILL OF INTRODUCING THE LESSON MICRO SKILLS.pptx
SKILL OF INTRODUCING THE LESSON MICRO SKILLS.pptx
 
Jual Obat Aborsi Hongkong ( Asli No.1 ) 085657271886 Obat Penggugur Kandungan...
Jual Obat Aborsi Hongkong ( Asli No.1 ) 085657271886 Obat Penggugur Kandungan...Jual Obat Aborsi Hongkong ( Asli No.1 ) 085657271886 Obat Penggugur Kandungan...
Jual Obat Aborsi Hongkong ( Asli No.1 ) 085657271886 Obat Penggugur Kandungan...
 
Graduate Outcomes Presentation Slides - English
Graduate Outcomes Presentation Slides - EnglishGraduate Outcomes Presentation Slides - English
Graduate Outcomes Presentation Slides - English
 
Mehran University Newsletter Vol-X, Issue-I, 2024
Mehran University Newsletter Vol-X, Issue-I, 2024Mehran University Newsletter Vol-X, Issue-I, 2024
Mehran University Newsletter Vol-X, Issue-I, 2024
 
Explore beautiful and ugly buildings. Mathematics helps us create beautiful d...
Explore beautiful and ugly buildings. Mathematics helps us create beautiful d...Explore beautiful and ugly buildings. Mathematics helps us create beautiful d...
Explore beautiful and ugly buildings. Mathematics helps us create beautiful d...
 
Dyslexia AI Workshop for Slideshare.pptx
Dyslexia AI Workshop for Slideshare.pptxDyslexia AI Workshop for Slideshare.pptx
Dyslexia AI Workshop for Slideshare.pptx
 
General Principles of Intellectual Property: Concepts of Intellectual Proper...
General Principles of Intellectual Property: Concepts of Intellectual  Proper...General Principles of Intellectual Property: Concepts of Intellectual  Proper...
General Principles of Intellectual Property: Concepts of Intellectual Proper...
 

Building Scalable SQL Applications Using NoSQL Paradigms

  • 3. MySpace: the Business Problem  223M users  900 Terabytes of data  450 SQL Servers  Required (eventual) data consistency across databases
  • 4. MySpace’s Data Consistency Problem 1-1000 1001-2000 2001-3000 3001-4000 4001-5000 5001-6000
  • 5. MySpace’s Solution  Propagate data changes from one DB to other DBs using reliable, async Message Service (Service Broker)  And also used for
  • 6. MySpace’s Service Dispatcher  Coordination point between all SQL Servers  Load-balanced across 30 SQL Servers  Enables multicast/broadcast functionality  18,000 ~2k msgs/sec per dispatcher SQL Server
  • 7. MySpace Architecture 1-1000 3001-4000 My DB I change gets updated my status Service Service TX3 Broker TX2 TX1 Dispatcher Service userId=1024 Broker 2001-3000 Service 1001-2000 Broker TX4 TX5 4001-5000 5001-6000 Web Tier Data Tier
  • 8. Many other customers using similar patterns  Online electronic stores (cannot give names )  Travel reservation systems (e.g. Choice International)
  • 9.
  • 11. Social Social Networks Network Management s Ops Services Data Backend Data Backend Services Data Backend Services Services MSN MSN Games Games l Web Portal Front Door GameBar Router WLM Services WLM Games Host Games Web Portal Bing Bing Auth Games STS STS Games l Web Portal Azure Data Centers
  • 13.
  • 15. Partitioned over 100 SQL Azure DBs Find Friends’ Profiles Social Get my Profile Social Services User … DB Service Publish feed, read feed Find Friends’ Profiles Get Friends highscores Gamer Last Played Gamer Services Favorites STS Services Game Preferences STS Leaderb … Social Leaderboards DB oard Partitioned over 298 SQL Azure DBs Game Game Disable/Enable Ingestion Games from Front Door Write user specific game infos Ingestion accessing services Router Services Game Game binaries User … DB Catalog Game metadata 250 instances Partitioned over 100 SQL Azure DBs 250 instances
  • 16. • Fanout: Parallel calls to multiple database partitions • Quorum: Able to tolerate a percentage of request failures during Fanout • Retry: Retry on database requests error
  • 24. Federation Azure DB with Federation Root Represents the data being sharded  Federation Root Federation Directories, Federation Users, Database that logically houses federations, contains federation meta data Federation Distributions, …  Federation Key Value that determines the routing of a piece of data (defines a Federation Distribution)  Federation Member (aka Shard) Federation “Orders_Fed” A physical container for a set of federated (Federation Key: CustomerID) tables for a specific key range and reference tables Member: PK [min, 100)  Federated Table Table that contains only atomic units for the AU AU AU member’s key range PK=5 PK=25 PK=35  Reference Table Non-sharded table  Atomic Unit Member: PK [100, 488) All rows with the same federation key value: always together! AU AU AU Connection PK=105 PK=235 PK=365 Gateway Member: PK [488, max) AU AU AU Sharded PK=555 PK=2545 PK=3565 Application 24
  • 26.
  • 27. http://www.microsoft.com/casestudies/Case_Study_Detail.aspx?CaseSt udyID=4000008310  http://cacm.acm.org/magazines/2011/6/108663- scalable-sql http://download.microsoft.com/download/9/E/9/9E9F240D-0EB6-472E- B4DE- 6D9FCBB505DD/Windows%20Azure%20No%20SQL%20White%20Paper.p df http://blogs.msdn.com/b/cbiyikoglu/archive/2011/03/03/nosql-genes-in- sql-azure-federations.aspx  mrys@microsoft.com http://sqlblog.com/blogs/michael_rys/default.aspx
  • 28.
  • 29. Connection: Server=az1cl321.db.windows.net; Database=MyDB; User=AppUser; Passwd=****; Gateway CREATE FEDERATION Existing Database CREATE FEDERATION sales (customer_id bigint RANGE) 29
  • 30. Federation with a Single Shard Existing Database CREATE FEDERATION sales (customer_id bigint RANGE) Database root contains: sales • Federation root = DB level object containing federation scheme Gateway • Federation users • Federation metadata incl. federation Connection: map Server=az1cl321.db.windows.net; Range: Min...Max Database=MyDB; User=AppUser; Passwd=****; Federation Member 30
  • 31. Introducing Two Connection Modes • Filtered Connection – Guarantees that any queries or DML will produce the same results independent of changes to the physical layout of the federation members – Scoped to an “Atomic Unit” • Unfiltered Connection – Scoped to a Federation Member – Management Connection 31
  • 32. Create Schema on Member: Management Connection Existing Database sales Gateway USE FEDEDERATION sales (customer_id=0) Connection: WITH FILTERING=OFF, RESET; Server=az1cl321.db.windows.net; CREATE TABLE … Range: Min...Max Customer Order Product Database=MyDB; User=AppUser; Passwd=****; Federation Member © 2011 Microsoft Corporation. Microsoft Materials - Confidential. All rights reserved. CITA # 32 MSFT101120_A
  • 33. DDL CREATE TABLE customer ( c_id bigint PRIMARY KEY, … ) FEDERATED ON (customer_id=c_id); CREATE TABLE order ( item_num int, customer_id bigint, date_sold datetime2, …, CONSTRAINT PK_Order PRIMARY KEY (item_num, customer_id, date_sold), CONSTRAINT FK_Cust FOREIGN KEY customer_id REFERENCES customer (customer_id) ) FEDERATED ON (customer_id=customer_id); CREATE TABLE product ( product_name varchar(100) NOT NULL, unit_price money, item_num int PRIMARY KEY, … ); 33
  • 34. More Detail • Supported data types for federation key : bigint, int, GUID, and varbinary (900) – Only range partitioning • Federation key must be part of unique index • Foreign key constraints only allowed between federated tables and from federated table to reference table • Not all Azure programmability features supported – Sequence, timestamp • Additional surface area restrictions – Indexed views, drop database (members) • Schemas are allowed to diverge over time – Furthermore, in v1, schema updates to existing members must be done in each member (where the change is needed) • USE FEDERATION “rewires a connection” – Connection is reestablished – All existing settings and context of the connection is lost (sp_reset_connection) – Must be in a batch by itself 34
  • 35. Connect to Atomic Unit: Filtered Existing Database When using into a specific key value, SELECT will only return sales records from federated tables that match that value. It will still return Gateway all records from non-federated tables. USE FEDEDERATION sales (customer_id=3) Connection: Inserts and UPDATES operating WITH FILTERING=ON, RESET; outside of the value will fail. Server=az1cl321.db.windows.net; Range: Min...Max customer order product 3 Database=MyDB; SELECT * from customer 3 User=AppUser; Passwd=****; SELECT * from product SELECT * from order Federation Member 35
  • 36. More on Connection Filtering • Most operations behave differently in filtered vs unfiltered connections • Connection filtering is a property of the session – Filter injected dynamically at runtime – Cannot inspect source code to determine how it behaves • E.g., running stored proc written for filtered mode on unfiltered connection could lead to unintended results • There are several operations that will not work in filtered connection in v1 – DDL, DML on reference tables, … • Fan-out, bulk operations not efficient in filtered mode – For now, filter=off is our best offer 36
  • 37. Support Matrix Connection Type Filtered Unfiltered Named Operation (unfiltered) Dynamic SELECT P P P DML* (federated tables) P P P DML* (reference tables) X P P DDL X P P Views (not indexed) P P P UDF - activate P P P Stored Proc - activate P P P Trigger (all modes) - activate P P P CREATE/UPDATE Stats X P P Bulk Ops openrowset bulk, bcp, bulk insert X P P * not including SELECT & modules ^ autostats will work on all connections System stored procs, intrinsics will be unaffected (run unfiltered) 37
  • 38. Splitting a Member Existing Database ALTER FEDERATION sales sales SPLIT AT (customer_id=50) Gateway USE FEDERATION ROOT Connection: WITH RESET Using to the Server=az1cl321.db.windows.net; federation ROOT will pop you out of a member back Range: Min...Max into the database that hosts the customer order product federation 3 3 Database=MyDB; User=AppUser; Passwd=****; 40 58 58 58 Federation Member 38
  • 39. Two New Members Existing Database ALTER FEDERATION sales sales SPLIT AT (customer_id=50) Gateway USE FEDEDERATION ROOT WITH RESET Connection: Server=az1cl321.db.windows.net; Range: Min...50 Range: 51...Max customer order product customer order product 3 Database=MyDB; 3 User=AppUser; 58 Passwd=****; 40 58 58 Federation Member Federation Member 39
  • 40. Two New Members Existing Database sales Gateway USE FEDEDERATION sales (customer_id=40) Connection: WITH FILTERING=ON, RESET; Server=az1cl321.db.windows.net; Range: Min...50 Range: 51...Max customer order product customer order product Database=MyDB; SELECT * User=AppUser; 58 Passwd=****; from customer 40 40 58 58 SELECT * from order 40

Hinweis der Redaktion

  1. 3000 web servers WS2003 IISThere is an app tier between the data and the web tier (not shown to focus on the partitioning aspect).A component in the app tier uses the partitioning function to connect to the relevant database in the data tier
  2. For multicast/broadcast and feedback functionality: messages include a header (as part of the payload) that contains the target list and the initiator database
  3. MyDB sends a message with my status change and a target list specifying the DBs that store my friends data.The Service Dispatcher forwards the message these DBs.Each DB processes the message updating my status in a partitioned tableTalk about other MySpace scenarios: Clean state (e.g. on account close) Deploy business logic (stored procedures)
  4. 250 Router Services
  5. Note: Big-sized companies invest resources in building these platforms instead of using existing relational platforms!
  6. Note: Big-sized companies invest resources in building these platforms instead of using existing relational platforms!
  7. Performance and Scale:Map/Reduce PatternsEventual consistency (trade-off due to CAP)ShardingCachingAutomate management Lifecycle:Elastic Scale on demand (no need to pay for resources until needed)Automatic Fail-overScalable Schema version rolloutPerf troubleshootingAuto alertingAuto loadbalancingAuto resourcing (e.g., auto splits based on policies)Declarative policy-based management
  8. Code First and revise quicklyWorking software over comprehensive documentationResponding to change over following a planApplication-model first (before database) Dictates the data model and queriesFlexible data modelsNo a priori modeling: Data first, schema later/Open SchemaKey/Value storesReduced impedance mismatch: JSON, XML, YAMLYou don’t know exactly what you are looking forMap/Reduce for adhoc analysisProvide Search across all your data instead of just queryLower Pain of adoption and maintenance From code to deployment & “monetization” of data, services, apps and tenantsRich Services out of the BoxData and services mashupEasy troubleshooting of deployed appsNo DB or OS Admin telling me what to do
  9. Update syntax