SlideShare una empresa de Scribd logo
1 de 67
Descargar para leer sin conexión
Scaling the Web:
Databases &
NoSQL


Richard Schneeman              Wed Nov 10
@schneems works for @Gowalla         2011
whoami
• @Schneems
• BSME with Honors from Georgia Tech
• 5 + years experience Ruby & Rails
  • Work for @Gowalla
• Rails 3.1 contributor : )
• 3 + years technical teaching
Traffic
Compounding Traffic
          ex. Wikipedia
Compounding Traffic
          ex. Wikipedia
Gowalla
Gowalla
• 50 best websites NYTimes 2010
• Founded 2009 @ SXSW
• 1 million+ Users
  • Undisclosed Visitors
• Loves/highlights/comments/stories/guides
• Facebook/Foursquare/Twitter integration
• iphone/android/web apps
• public API
Gowalla Backend
• Ruby on Rails
  • Uses the Ruby Language
  • Rails is the Framework
The Web is Data
• Username => String
• Birthday => Int/ Int/ Int
• Blog Post => Text
• Image => Binary-file/blob

  Data needs to be stored
  to be useful
Database
Gowalla Database
• PostgreSQL
  • Relational (RDBMS)
  • Open Source
  • Competitor to MySQL
  • ACID compliant
• Running on a Dedicated Managed Server
Need for Speed
• Throughput:
  • The number of operations per minute that
    can be performed


• Pure Speed:
  • How long an individual operation takes.
Potential Problems
• Hardware
  • Slow Network
  • Slow hard-drive
  • Insufficient CPU
  • Insufficient Ram
• Software
  • too many Reads
  • too many Writes
Scaling Up versus Out
• Scale Up:
  • More CPU, Bigger HD, More Ram etc.
• Scale Out:
  • More machines
  • More machines
  • More machines
  • ...
Scale Up
• Bigger faster machine
  • More Ram
  • More CPU
  • Bigger ethernet bus
  • ...
• Moores Law
• Diminishing returns
Scale Out
• Forget Moores law...
• Add more nodes
  • Master/ Slave Database
  • Sharding
Master/Slave
                Write

                Master DB

                 Copy
  Slave DB   Slave DB   Slave DB   Slave DB




                 Read
Master & Slave +/-
• Pro
  • Increased read speed
  • Takes read load off of master
  • Allows us to Join across all tables
• Con
  • Doesn’t buy increased write throughput
  • Single Point of Failure in Master Node
Sharding
                  Write


  Users in   Users in   Users in   Users in
   USA       Europe      Asia       Africa



                  Read
Sharding +/-
• Pro
  • Increased Write & Read throughput
  • No Single Point of failure
    • Individual features can fail
• Con
  • Cannot Join queries between shards
What is a Database?
• Relational Database Managment System
  (RDBMS)
• Stores Data Using Schema
• A.C.I.D. compliant
  • Atomic
  • Consistent
  • Isolated
  • Durable
RDBMS
• Relational
  • Matches data on common characteristics
    in data
  • Enables “Join” & “Union” queries
• Makes data modular
Relational +/-
• Pros
  • Data is modular
  • Highly flexible data layout
• Cons
  • Getting desired data can be tricky
  • Over modularization leads to many join
    queries
  • Trade off performance for search-ability
Schema Storage
• Blueprint for data storage
• Break data into tables/columns/rows
• Give data types to your data
  • Integer
  • String
  • Text
  • Boolean
  • ...
Schema +/-
• Pros
  • Regularize our data
  • Helps keep data consistent
  • Converts to programming “types” easily
• Cons
  • Must seperatly manage schema
  • Adding columns & indexes to existing
    large tables can be painful & slow
ACID
• Properties that guarante a reliably
  transaction are processed
                              database

  • Atomic
  • Consistent
  • Isolated
  • Durable
ACID
• Atomic
• Any database Transaction is all or nothing.
• If one part of the transaction fails it all fails


“An Incomplete Transaction Cannot Exist”
ACID
• Consistent
• Any transaction will take the another
  from one consistent state to
                                database




 “Only Consistent data is allowed to be
                written”
ACID
• Isolated
• No transaction should be able to interfere
  with another transaction

“the same field cannot be updated by two
     sources at the exact same time”



                   }
         a = 0
         a += 1          a = ??
         a += 2
ACID
• Durable
• Onceway
  that
       a transaction Is committed it will stay




      “Save it once, read it forever”
What is a Database?
• RDBMS
  • Relational
  • Flexible
  • Has a schema
  • Most likely ACID compliant
  • Typically fast under low load or when
    optimized
What is SQL?
  • Structured Query Language
  • The language databases speak
  • Based on relational algebra
    • Insert
    • Query
    • Update
    • Delete
“SELECT Company, Country FROM Customers
         WHERE Country = 'USA' ”
Why people <3 SQL
• Relational algebra is powerful
• SQL is proven
  • well understood
  • well documented
Why people </3 SQL
• Relational algebra Is hard
• Different databases support different SQL
  syntax
• Yet another programming language to learn
SQL != Database
• SQL is used to talk to a RDBMS (database)
• SQL is not a RDBMS
What is NoSQL?

  Not A
  Relational
  Database
RDBMS
Types of NoSQL
• Distributed Systems
• Document Store
• Graph Database
• Key-Value Store
• Eventually Consistent Systems

             Mix And Match ↑
Key Value Stores
• Non Relational
• Typically No Schema
• Map one Key (a string) to a Value (some
  object)




         Example: Redis
Key Value Example
redis = Redis.new

redis.set(“foo”, “bar”)

redis.get(“foo”)

>> “bar”
Key Value Example
redis = Redis.new
           Key      Value
redis.set(“foo”, “bar”)
           Key
redis.get(“foo”)
   Value
>> “bar”
Key Value
  • Like a databse that can only ever use
    primary Key (id)

YES
select * from users where id = ‘3’;

NO
select * from users where name = ‘schneems’;
NoSQL @ Gowalla
• Redis (key-value store)
  • Store “Likes” & Analytics
• Memcache (key-value store)
  • Cache Database results
• Cassandra
  • (eventually consistent, with-schema, key
    value store)
  • Store “feeds” or “timelines”
• Solr (search index)
Memcache
• Key-Value Store
• Open Source
• Distributed
• In memory (ram) only
  • fast, but volatile
  • Not ACID
• Memory object caching system
Memcache Example
memcache = Memcache.new

memcache.set(“foo”, “bar”)

memcache.get(“foo”)

>> “bar”
Memcache
  • Can store whole objects
memcache = Memcache.new
user = User.where(:username => “schneems”)
memcache.set(“user:3”, user)

user_from_cache = memcache.get(“user:3”)
user_from_cache == user
>> true
user_from_cache.username
>> “Schneems”
Memcache @ Gowalla
• Cache Common Queries
  • Decreases Load on DB (postgres)
    • Enables higher throughput from DB
  • Faster response than DB
    • Users see quicker page load time
What to Cache?
• Objects that change infrequently
  • users
  • spots (places)
  • etc.
• Expensive(ish) sql queries
  • Friend ids for users
  • User ids for people visiting spots
  • etc.
Memcache Distributed

              A




                   C
          B
Memcache Distributed
          Easily add more nodes


          A          D




          B         C
Memcache <3’s DB
• We use them Together
• If memcache doesn’t have a value
  • Fetch from the database
  • Set the key from database
• Hard
  • Cache Invalidation : (
Redis
• Key Value Store
• Open Source
• Not Distributed (yet)
• Extremely Quick
• “Data structure server”
Redis Example, again
redis = Redis.new

redis.set(“foo”, “bar”)

redis.get(“foo”)

>> “bar”
Redis - Has Data Types
• Strings
• Hashes
• Lists
• Sets
• Sorted Sets
Redis Example, sets
redis = Redis.new
redis.sadd(“foo”, “bar”)
redis.members(“foo”)
>> [“bar”]
redis.sadd(“foo”, “fly”)
redis.members(“foo”)
>> [“bar”, “fly”]
Redis => Likeable
• Very Fast response
• ~ 50 queries per page view
  • ~ 1 ms per query
• http://github.com/Gowalla/likeable
Cassandra
• Open Source
• Distributed
• Key Value Store
• Eventually Consistent
  • Sortof not ACID
• Uses A Schema
  • ColumnFamilies
Cassandra Distributed
           Eventual Consistency


           A          D
                          Copied To
                          Extra
                          Nodes ...
                          Eventually
 Data In   B         C
Cassandra




            {
@ Gowalla

 Activity
 Feeds
Cassandra @ Gowalla
• Chronologic
• http://github.com/Gowalla/chronologic
Should I use
NoSQL?
Which One?
Pick the
right tool
Tradeoffs
• Every Data store has them
• Know your data store
  • Strengths
  • Weaknesses
NoSQL vs. RDBMS
• No Magic Bullet
• Use Both!!!
• Model data in a datastore you understand
  • Switch to when/if you need to
• Understand Your Options
Questions?




Richard Schneeman
@schneems works for @Gowalla

Más contenido relacionado

La actualidad más candente

Azure DocumentDB 101
Azure DocumentDB 101Azure DocumentDB 101
Azure DocumentDB 101Ike Ellis
 
NoSQL: Why, When, and How
NoSQL: Why, When, and HowNoSQL: Why, When, and How
NoSQL: Why, When, and HowBigBlueHat
 
Dropping ACID: Wrapping Your Mind Around NoSQL Databases
Dropping ACID: Wrapping Your Mind Around NoSQL DatabasesDropping ACID: Wrapping Your Mind Around NoSQL Databases
Dropping ACID: Wrapping Your Mind Around NoSQL DatabasesKyle Banerjee
 
Plmce2012 scaling pinterest
Plmce2012 scaling pinterestPlmce2012 scaling pinterest
Plmce2012 scaling pinterestMohit Jain
 
Microsoft's Big Play for Big Data
Microsoft's Big Play for Big DataMicrosoft's Big Play for Big Data
Microsoft's Big Play for Big DataAndrew Brust
 
Compare DynamoDB vs. MongoDB
Compare DynamoDB vs. MongoDBCompare DynamoDB vs. MongoDB
Compare DynamoDB vs. MongoDBAmar Das
 
NoSql Data Management
NoSql Data ManagementNoSql Data Management
NoSql Data Managementsameerfaizan
 
How & When to Use NoSQL at Websummit Dublin
How & When to Use NoSQL at Websummit DublinHow & When to Use NoSQL at Websummit Dublin
How & When to Use NoSQL at Websummit DublinAmazon Web Services
 
Introduction to Hadoop - ACCU2010
Introduction to Hadoop - ACCU2010Introduction to Hadoop - ACCU2010
Introduction to Hadoop - ACCU2010Gavin Heavyside
 
SQL vs. NoSQL. It's always a hard choice.
SQL vs. NoSQL. It's always a hard choice.SQL vs. NoSQL. It's always a hard choice.
SQL vs. NoSQL. It's always a hard choice.Denis Reznik
 
Introduction to NoSQL Databases
Introduction to NoSQL DatabasesIntroduction to NoSQL Databases
Introduction to NoSQL DatabasesDerek Stainer
 
Introduction to Azure DocumentDB
Introduction to Azure DocumentDBIntroduction to Azure DocumentDB
Introduction to Azure DocumentDBIke Ellis
 

La actualidad más candente (20)

Azure DocumentDB 101
Azure DocumentDB 101Azure DocumentDB 101
Azure DocumentDB 101
 
NoSql
NoSqlNoSql
NoSql
 
NoSQL
NoSQLNoSQL
NoSQL
 
NoSQL: Why, When, and How
NoSQL: Why, When, and HowNoSQL: Why, When, and How
NoSQL: Why, When, and How
 
Dropping ACID: Wrapping Your Mind Around NoSQL Databases
Dropping ACID: Wrapping Your Mind Around NoSQL DatabasesDropping ACID: Wrapping Your Mind Around NoSQL Databases
Dropping ACID: Wrapping Your Mind Around NoSQL Databases
 
Selecting best NoSQL
Selecting best NoSQL Selecting best NoSQL
Selecting best NoSQL
 
Plmce2012 scaling pinterest
Plmce2012 scaling pinterestPlmce2012 scaling pinterest
Plmce2012 scaling pinterest
 
Microsoft's Big Play for Big Data
Microsoft's Big Play for Big DataMicrosoft's Big Play for Big Data
Microsoft's Big Play for Big Data
 
Compare DynamoDB vs. MongoDB
Compare DynamoDB vs. MongoDBCompare DynamoDB vs. MongoDB
Compare DynamoDB vs. MongoDB
 
NoSQL_Night
NoSQL_NightNoSQL_Night
NoSQL_Night
 
NoSql Data Management
NoSql Data ManagementNoSql Data Management
NoSql Data Management
 
NoSQL databases
NoSQL databasesNoSQL databases
NoSQL databases
 
Rdbms vs. no sql
Rdbms vs. no sqlRdbms vs. no sql
Rdbms vs. no sql
 
How & When to Use NoSQL at Websummit Dublin
How & When to Use NoSQL at Websummit DublinHow & When to Use NoSQL at Websummit Dublin
How & When to Use NoSQL at Websummit Dublin
 
Introduction to Hadoop - ACCU2010
Introduction to Hadoop - ACCU2010Introduction to Hadoop - ACCU2010
Introduction to Hadoop - ACCU2010
 
SQL vs. NoSQL. It's always a hard choice.
SQL vs. NoSQL. It's always a hard choice.SQL vs. NoSQL. It's always a hard choice.
SQL vs. NoSQL. It's always a hard choice.
 
Introduction to NoSQL Databases
Introduction to NoSQL DatabasesIntroduction to NoSQL Databases
Introduction to NoSQL Databases
 
Relational vs. Non-Relational
Relational vs. Non-RelationalRelational vs. Non-Relational
Relational vs. Non-Relational
 
Cassandra Core Concepts
Cassandra Core ConceptsCassandra Core Concepts
Cassandra Core Concepts
 
Introduction to Azure DocumentDB
Introduction to Azure DocumentDBIntroduction to Azure DocumentDB
Introduction to Azure DocumentDB
 

Destacado

Making sense of the Graph Revolution
Making sense of the Graph RevolutionMaking sense of the Graph Revolution
Making sense of the Graph RevolutionInfiniteGraph
 
Benchmarking, Load Testing, and Preventing Terrible Disasters
Benchmarking, Load Testing, and Preventing Terrible DisastersBenchmarking, Load Testing, and Preventing Terrible Disasters
Benchmarking, Load Testing, and Preventing Terrible DisastersMongoDB
 
SQL vs. NoSQL Databases
SQL vs. NoSQL DatabasesSQL vs. NoSQL Databases
SQL vs. NoSQL DatabasesOsama Jomaa
 
Sql vs NoSQL
Sql vs NoSQLSql vs NoSQL
Sql vs NoSQLRTigger
 
NoSQL Databases: Why, what and when
NoSQL Databases: Why, what and whenNoSQL Databases: Why, what and when
NoSQL Databases: Why, what and whenLorenzo Alberton
 
A Beginners Guide to noSQL
A Beginners Guide to noSQLA Beginners Guide to noSQL
A Beginners Guide to noSQLMike Crabb
 

Destacado (10)

Making sense of the Graph Revolution
Making sense of the Graph RevolutionMaking sense of the Graph Revolution
Making sense of the Graph Revolution
 
Benchmarking, Load Testing, and Preventing Terrible Disasters
Benchmarking, Load Testing, and Preventing Terrible DisastersBenchmarking, Load Testing, and Preventing Terrible Disasters
Benchmarking, Load Testing, and Preventing Terrible Disasters
 
SQL vs. NoSQL Databases
SQL vs. NoSQL DatabasesSQL vs. NoSQL Databases
SQL vs. NoSQL Databases
 
SQL vs. NoSQL
SQL vs. NoSQLSQL vs. NoSQL
SQL vs. NoSQL
 
Big Data
Big DataBig Data
Big Data
 
Sql vs NoSQL
Sql vs NoSQLSql vs NoSQL
Sql vs NoSQL
 
NoSQL Databases: Why, what and when
NoSQL Databases: Why, what and whenNoSQL Databases: Why, what and when
NoSQL Databases: Why, what and when
 
A Beginners Guide to noSQL
A Beginners Guide to noSQLA Beginners Guide to noSQL
A Beginners Guide to noSQL
 
Big data ppt
Big data pptBig data ppt
Big data ppt
 
Big data ppt
Big  data pptBig  data ppt
Big data ppt
 

Similar a Scaling the Web: Databases & NoSQL

Big Data (NJ SQL Server User Group)
Big Data (NJ SQL Server User Group)Big Data (NJ SQL Server User Group)
Big Data (NJ SQL Server User Group)Don Demcsak
 
UNIT I Introduction to NoSQL.pptx
UNIT I Introduction to NoSQL.pptxUNIT I Introduction to NoSQL.pptx
UNIT I Introduction to NoSQL.pptxRahul Borate
 
UNIT I Introduction to NoSQL.pptx
UNIT I Introduction to NoSQL.pptxUNIT I Introduction to NoSQL.pptx
UNIT I Introduction to NoSQL.pptxRahul Borate
 
Oracle Week 2016 - Modern Data Architecture
Oracle Week 2016 - Modern Data ArchitectureOracle Week 2016 - Modern Data Architecture
Oracle Week 2016 - Modern Data ArchitectureArthur Gimpel
 
SQL, NoSQL, Distributed SQL: Choose your DataStore carefully
SQL, NoSQL, Distributed SQL: Choose your DataStore carefullySQL, NoSQL, Distributed SQL: Choose your DataStore carefully
SQL, NoSQL, Distributed SQL: Choose your DataStore carefullyMd Kamaruzzaman
 
Survey of the Microsoft Azure Data Landscape
Survey of the Microsoft Azure Data LandscapeSurvey of the Microsoft Azure Data Landscape
Survey of the Microsoft Azure Data LandscapeIke Ellis
 
Build a modern data platform.pptx
Build a modern data platform.pptxBuild a modern data platform.pptx
Build a modern data platform.pptxIke Ellis
 
HBase in Practice
HBase in PracticeHBase in Practice
HBase in Practicelarsgeorge
 
Scaing databases on the cloud
Scaing databases on the cloudScaing databases on the cloud
Scaing databases on the cloudImaginea
 
Scaling Databases On The Cloud
Scaling Databases On The CloudScaling Databases On The Cloud
Scaling Databases On The CloudImaginea
 
Austin NoSQL 2011-07-06
Austin NoSQL 2011-07-06Austin NoSQL 2011-07-06
Austin NoSQL 2011-07-06jimbojsb
 
Виталий Бондаренко "Fast Data Platform for Real-Time Analytics. Architecture ...
Виталий Бондаренко "Fast Data Platform for Real-Time Analytics. Architecture ...Виталий Бондаренко "Fast Data Platform for Real-Time Analytics. Architecture ...
Виталий Бондаренко "Fast Data Platform for Real-Time Analytics. Architecture ...Fwdays
 
SQL To NoSQL - Top 6 Questions Before Making The Move
SQL To NoSQL - Top 6 Questions Before Making The MoveSQL To NoSQL - Top 6 Questions Before Making The Move
SQL To NoSQL - Top 6 Questions Before Making The MoveIBM Cloud Data Services
 
Technologies for Data Analytics Platform
Technologies for Data Analytics PlatformTechnologies for Data Analytics Platform
Technologies for Data Analytics PlatformN Masahiro
 

Similar a Scaling the Web: Databases & NoSQL (20)

Revision
RevisionRevision
Revision
 
Big Data (NJ SQL Server User Group)
Big Data (NJ SQL Server User Group)Big Data (NJ SQL Server User Group)
Big Data (NJ SQL Server User Group)
 
UNIT I Introduction to NoSQL.pptx
UNIT I Introduction to NoSQL.pptxUNIT I Introduction to NoSQL.pptx
UNIT I Introduction to NoSQL.pptx
 
UNIT I Introduction to NoSQL.pptx
UNIT I Introduction to NoSQL.pptxUNIT I Introduction to NoSQL.pptx
UNIT I Introduction to NoSQL.pptx
 
Oracle Week 2016 - Modern Data Architecture
Oracle Week 2016 - Modern Data ArchitectureOracle Week 2016 - Modern Data Architecture
Oracle Week 2016 - Modern Data Architecture
 
KeyValue Stores
KeyValue StoresKeyValue Stores
KeyValue Stores
 
SQL, NoSQL, Distributed SQL: Choose your DataStore carefully
SQL, NoSQL, Distributed SQL: Choose your DataStore carefullySQL, NoSQL, Distributed SQL: Choose your DataStore carefully
SQL, NoSQL, Distributed SQL: Choose your DataStore carefully
 
Survey of the Microsoft Azure Data Landscape
Survey of the Microsoft Azure Data LandscapeSurvey of the Microsoft Azure Data Landscape
Survey of the Microsoft Azure Data Landscape
 
Build a modern data platform.pptx
Build a modern data platform.pptxBuild a modern data platform.pptx
Build a modern data platform.pptx
 
HBase in Practice
HBase in Practice HBase in Practice
HBase in Practice
 
HBase in Practice
HBase in PracticeHBase in Practice
HBase in Practice
 
MongoDB SF Ruby
MongoDB SF RubyMongoDB SF Ruby
MongoDB SF Ruby
 
Scaing databases on the cloud
Scaing databases on the cloudScaing databases on the cloud
Scaing databases on the cloud
 
Scaling Databases On The Cloud
Scaling Databases On The CloudScaling Databases On The Cloud
Scaling Databases On The Cloud
 
Voldemort Nosql
Voldemort NosqlVoldemort Nosql
Voldemort Nosql
 
Database Technologies
Database TechnologiesDatabase Technologies
Database Technologies
 
Austin NoSQL 2011-07-06
Austin NoSQL 2011-07-06Austin NoSQL 2011-07-06
Austin NoSQL 2011-07-06
 
Виталий Бондаренко "Fast Data Platform for Real-Time Analytics. Architecture ...
Виталий Бондаренко "Fast Data Platform for Real-Time Analytics. Architecture ...Виталий Бондаренко "Fast Data Platform for Real-Time Analytics. Architecture ...
Виталий Бондаренко "Fast Data Platform for Real-Time Analytics. Architecture ...
 
SQL To NoSQL - Top 6 Questions Before Making The Move
SQL To NoSQL - Top 6 Questions Before Making The MoveSQL To NoSQL - Top 6 Questions Before Making The Move
SQL To NoSQL - Top 6 Questions Before Making The Move
 
Technologies for Data Analytics Platform
Technologies for Data Analytics PlatformTechnologies for Data Analytics Platform
Technologies for Data Analytics Platform
 

Más de Richard Schneeman

Rails 3 Beginner to Builder 2011 Week 8
Rails 3 Beginner to Builder 2011 Week 8Rails 3 Beginner to Builder 2011 Week 8
Rails 3 Beginner to Builder 2011 Week 8Richard Schneeman
 
Rails 3 Beginner to Builder 2011 Week 6
Rails 3 Beginner to Builder 2011 Week 6Rails 3 Beginner to Builder 2011 Week 6
Rails 3 Beginner to Builder 2011 Week 6Richard Schneeman
 
Rails 3 Beginner to Builder 2011 Week 5
Rails 3 Beginner to Builder 2011 Week 5Rails 3 Beginner to Builder 2011 Week 5
Rails 3 Beginner to Builder 2011 Week 5Richard Schneeman
 
Rails 3 Beginner to Builder 2011 Week 4
Rails 3 Beginner to Builder 2011 Week 4Rails 3 Beginner to Builder 2011 Week 4
Rails 3 Beginner to Builder 2011 Week 4Richard Schneeman
 
Rails 3 Beginner to Builder 2011 Week 3
Rails 3 Beginner to Builder 2011 Week 3Rails 3 Beginner to Builder 2011 Week 3
Rails 3 Beginner to Builder 2011 Week 3Richard Schneeman
 
Rails 3 Beginner to Builder 2011 Week 2
Rails 3 Beginner to Builder 2011 Week 2Rails 3 Beginner to Builder 2011 Week 2
Rails 3 Beginner to Builder 2011 Week 2Richard Schneeman
 
Rails 3 Beginner to Builder 2011 Week 1
Rails 3 Beginner to Builder 2011 Week 1Rails 3 Beginner to Builder 2011 Week 1
Rails 3 Beginner to Builder 2011 Week 1Richard Schneeman
 
Rails3 Summer of Code 2010 - Week 6
Rails3 Summer of Code 2010 - Week 6Rails3 Summer of Code 2010 - Week 6
Rails3 Summer of Code 2010 - Week 6Richard Schneeman
 
Rails3 Summer of Code 2010- Week 5
Rails3 Summer of Code 2010- Week 5Rails3 Summer of Code 2010- Week 5
Rails3 Summer of Code 2010- Week 5Richard Schneeman
 

Más de Richard Schneeman (13)

Rails 3 Beginner to Builder 2011 Week 8
Rails 3 Beginner to Builder 2011 Week 8Rails 3 Beginner to Builder 2011 Week 8
Rails 3 Beginner to Builder 2011 Week 8
 
Rails 3 Beginner to Builder 2011 Week 6
Rails 3 Beginner to Builder 2011 Week 6Rails 3 Beginner to Builder 2011 Week 6
Rails 3 Beginner to Builder 2011 Week 6
 
Rails 3 Beginner to Builder 2011 Week 5
Rails 3 Beginner to Builder 2011 Week 5Rails 3 Beginner to Builder 2011 Week 5
Rails 3 Beginner to Builder 2011 Week 5
 
Rails 3 Beginner to Builder 2011 Week 4
Rails 3 Beginner to Builder 2011 Week 4Rails 3 Beginner to Builder 2011 Week 4
Rails 3 Beginner to Builder 2011 Week 4
 
Rails 3 Beginner to Builder 2011 Week 3
Rails 3 Beginner to Builder 2011 Week 3Rails 3 Beginner to Builder 2011 Week 3
Rails 3 Beginner to Builder 2011 Week 3
 
Rails 3 Beginner to Builder 2011 Week 2
Rails 3 Beginner to Builder 2011 Week 2Rails 3 Beginner to Builder 2011 Week 2
Rails 3 Beginner to Builder 2011 Week 2
 
Rails 3 Beginner to Builder 2011 Week 1
Rails 3 Beginner to Builder 2011 Week 1Rails 3 Beginner to Builder 2011 Week 1
Rails 3 Beginner to Builder 2011 Week 1
 
Potential Friend Finder
Potential Friend FinderPotential Friend Finder
Potential Friend Finder
 
Rails3 Summer of Code 2010 - Week 6
Rails3 Summer of Code 2010 - Week 6Rails3 Summer of Code 2010 - Week 6
Rails3 Summer of Code 2010 - Week 6
 
Rails3 Summer of Code 2010- Week 5
Rails3 Summer of Code 2010- Week 5Rails3 Summer of Code 2010- Week 5
Rails3 Summer of Code 2010- Week 5
 
UT on Rails3 2010- Week 4
UT on Rails3 2010- Week 4 UT on Rails3 2010- Week 4
UT on Rails3 2010- Week 4
 
UT on Rails3 2010- Week 2
UT on Rails3 2010- Week 2UT on Rails3 2010- Week 2
UT on Rails3 2010- Week 2
 
UT on Rails3 2010- Week 1
UT on Rails3 2010- Week 1UT on Rails3 2010- Week 1
UT on Rails3 2010- Week 1
 

Último

DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenHervé Boutemy
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 3652toLead Limited
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek SchlawackFwdays
 
Time Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directionsTime Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directionsNathaniel Shimoni
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLScyllaDB
 
What is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdfWhat is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdfMounikaPolabathina
 
TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024Lonnie McRorey
 
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
How to write a Business Continuity Plan
How to write a Business Continuity PlanHow to write a Business Continuity Plan
How to write a Business Continuity PlanDatabarracks
 
Take control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteTake control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteDianaGray10
 
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxUse of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxLoriGlavin3
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr BaganFwdays
 
From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .Alan Dix
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebUiPathCommunity
 
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxThe Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxLoriGlavin3
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsSergiu Bodiu
 
DSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine TuningDSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine TuningLars Bell
 
Artificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxArtificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxhariprasad279825
 
Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Manik S Magar
 
Moving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfMoving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfLoriGlavin3
 

Último (20)

DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache Maven
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
 
Time Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directionsTime Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directions
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQL
 
What is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdfWhat is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdf
 
TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024
 
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
How to write a Business Continuity Plan
How to write a Business Continuity PlanHow to write a Business Continuity Plan
How to write a Business Continuity Plan
 
Take control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteTake control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test Suite
 
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxUse of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan
 
From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio Web
 
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxThe Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platforms
 
DSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine TuningDSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine Tuning
 
Artificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxArtificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptx
 
Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!
 
Moving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfMoving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdf
 

Scaling the Web: Databases & NoSQL

  • 1. Scaling the Web: Databases & NoSQL Richard Schneeman Wed Nov 10 @schneems works for @Gowalla 2011
  • 2. whoami • @Schneems • BSME with Honors from Georgia Tech • 5 + years experience Ruby & Rails • Work for @Gowalla • Rails 3.1 contributor : ) • 3 + years technical teaching
  • 4. Compounding Traffic ex. Wikipedia
  • 5. Compounding Traffic ex. Wikipedia
  • 7. Gowalla • 50 best websites NYTimes 2010 • Founded 2009 @ SXSW • 1 million+ Users • Undisclosed Visitors • Loves/highlights/comments/stories/guides • Facebook/Foursquare/Twitter integration • iphone/android/web apps • public API
  • 8.
  • 9. Gowalla Backend • Ruby on Rails • Uses the Ruby Language • Rails is the Framework
  • 10. The Web is Data • Username => String • Birthday => Int/ Int/ Int • Blog Post => Text • Image => Binary-file/blob Data needs to be stored to be useful
  • 12. Gowalla Database • PostgreSQL • Relational (RDBMS) • Open Source • Competitor to MySQL • ACID compliant • Running on a Dedicated Managed Server
  • 13. Need for Speed • Throughput: • The number of operations per minute that can be performed • Pure Speed: • How long an individual operation takes.
  • 14. Potential Problems • Hardware • Slow Network • Slow hard-drive • Insufficient CPU • Insufficient Ram • Software • too many Reads • too many Writes
  • 15. Scaling Up versus Out • Scale Up: • More CPU, Bigger HD, More Ram etc. • Scale Out: • More machines • More machines • More machines • ...
  • 16. Scale Up • Bigger faster machine • More Ram • More CPU • Bigger ethernet bus • ... • Moores Law • Diminishing returns
  • 17. Scale Out • Forget Moores law... • Add more nodes • Master/ Slave Database • Sharding
  • 18. Master/Slave Write Master DB Copy Slave DB Slave DB Slave DB Slave DB Read
  • 19. Master & Slave +/- • Pro • Increased read speed • Takes read load off of master • Allows us to Join across all tables • Con • Doesn’t buy increased write throughput • Single Point of Failure in Master Node
  • 20. Sharding Write Users in Users in Users in Users in USA Europe Asia Africa Read
  • 21. Sharding +/- • Pro • Increased Write & Read throughput • No Single Point of failure • Individual features can fail • Con • Cannot Join queries between shards
  • 22. What is a Database? • Relational Database Managment System (RDBMS) • Stores Data Using Schema • A.C.I.D. compliant • Atomic • Consistent • Isolated • Durable
  • 23. RDBMS • Relational • Matches data on common characteristics in data • Enables “Join” & “Union” queries • Makes data modular
  • 24. Relational +/- • Pros • Data is modular • Highly flexible data layout • Cons • Getting desired data can be tricky • Over modularization leads to many join queries • Trade off performance for search-ability
  • 25. Schema Storage • Blueprint for data storage • Break data into tables/columns/rows • Give data types to your data • Integer • String • Text • Boolean • ...
  • 26. Schema +/- • Pros • Regularize our data • Helps keep data consistent • Converts to programming “types” easily • Cons • Must seperatly manage schema • Adding columns & indexes to existing large tables can be painful & slow
  • 27. ACID • Properties that guarante a reliably transaction are processed database • Atomic • Consistent • Isolated • Durable
  • 28. ACID • Atomic • Any database Transaction is all or nothing. • If one part of the transaction fails it all fails “An Incomplete Transaction Cannot Exist”
  • 29. ACID • Consistent • Any transaction will take the another from one consistent state to database “Only Consistent data is allowed to be written”
  • 30. ACID • Isolated • No transaction should be able to interfere with another transaction “the same field cannot be updated by two sources at the exact same time” } a = 0 a += 1 a = ?? a += 2
  • 31. ACID • Durable • Onceway that a transaction Is committed it will stay “Save it once, read it forever”
  • 32. What is a Database? • RDBMS • Relational • Flexible • Has a schema • Most likely ACID compliant • Typically fast under low load or when optimized
  • 33. What is SQL? • Structured Query Language • The language databases speak • Based on relational algebra • Insert • Query • Update • Delete “SELECT Company, Country FROM Customers WHERE Country = 'USA' ”
  • 34. Why people <3 SQL • Relational algebra is powerful • SQL is proven • well understood • well documented
  • 35. Why people </3 SQL • Relational algebra Is hard • Different databases support different SQL syntax • Yet another programming language to learn
  • 36. SQL != Database • SQL is used to talk to a RDBMS (database) • SQL is not a RDBMS
  • 37. What is NoSQL? Not A Relational Database
  • 38. RDBMS
  • 39. Types of NoSQL • Distributed Systems • Document Store • Graph Database • Key-Value Store • Eventually Consistent Systems Mix And Match ↑
  • 40. Key Value Stores • Non Relational • Typically No Schema • Map one Key (a string) to a Value (some object) Example: Redis
  • 41. Key Value Example redis = Redis.new redis.set(“foo”, “bar”) redis.get(“foo”) >> “bar”
  • 42. Key Value Example redis = Redis.new Key Value redis.set(“foo”, “bar”) Key redis.get(“foo”) Value >> “bar”
  • 43. Key Value • Like a databse that can only ever use primary Key (id) YES select * from users where id = ‘3’; NO select * from users where name = ‘schneems’;
  • 44. NoSQL @ Gowalla • Redis (key-value store) • Store “Likes” & Analytics • Memcache (key-value store) • Cache Database results • Cassandra • (eventually consistent, with-schema, key value store) • Store “feeds” or “timelines” • Solr (search index)
  • 45. Memcache • Key-Value Store • Open Source • Distributed • In memory (ram) only • fast, but volatile • Not ACID • Memory object caching system
  • 46. Memcache Example memcache = Memcache.new memcache.set(“foo”, “bar”) memcache.get(“foo”) >> “bar”
  • 47. Memcache • Can store whole objects memcache = Memcache.new user = User.where(:username => “schneems”) memcache.set(“user:3”, user) user_from_cache = memcache.get(“user:3”) user_from_cache == user >> true user_from_cache.username >> “Schneems”
  • 48. Memcache @ Gowalla • Cache Common Queries • Decreases Load on DB (postgres) • Enables higher throughput from DB • Faster response than DB • Users see quicker page load time
  • 49. What to Cache? • Objects that change infrequently • users • spots (places) • etc. • Expensive(ish) sql queries • Friend ids for users • User ids for people visiting spots • etc.
  • 51. Memcache Distributed Easily add more nodes A D B C
  • 52. Memcache <3’s DB • We use them Together • If memcache doesn’t have a value • Fetch from the database • Set the key from database • Hard • Cache Invalidation : (
  • 53. Redis • Key Value Store • Open Source • Not Distributed (yet) • Extremely Quick • “Data structure server”
  • 54. Redis Example, again redis = Redis.new redis.set(“foo”, “bar”) redis.get(“foo”) >> “bar”
  • 55. Redis - Has Data Types • Strings • Hashes • Lists • Sets • Sorted Sets
  • 56. Redis Example, sets redis = Redis.new redis.sadd(“foo”, “bar”) redis.members(“foo”) >> [“bar”] redis.sadd(“foo”, “fly”) redis.members(“foo”) >> [“bar”, “fly”]
  • 57. Redis => Likeable • Very Fast response • ~ 50 queries per page view • ~ 1 ms per query • http://github.com/Gowalla/likeable
  • 58. Cassandra • Open Source • Distributed • Key Value Store • Eventually Consistent • Sortof not ACID • Uses A Schema • ColumnFamilies
  • 59. Cassandra Distributed Eventual Consistency A D Copied To Extra Nodes ... Eventually Data In B C
  • 60. Cassandra { @ Gowalla Activity Feeds
  • 61. Cassandra @ Gowalla • Chronologic • http://github.com/Gowalla/chronologic
  • 65. Tradeoffs • Every Data store has them • Know your data store • Strengths • Weaknesses
  • 66. NoSQL vs. RDBMS • No Magic Bullet • Use Both!!! • Model data in a datastore you understand • Switch to when/if you need to • Understand Your Options