SlideShare a Scribd company logo
1 of 27
Download to read offline
Not just UNIQUE:
Exclusion Constraints



       Jeff Davis
      Truviso, Inc.




                        1
Schedule Conflict
●   One person can't be in two places at the 
     same time
●   Two people can't use an exclusive 
     resource at the same time
●   Business constraint
●   Just one instance of an interesting class 
      of problems


                                                 2
PERIOD Type
●   Need a concept of a period of time, 
     otherwise the system doesn't know what 
     a “schedule conflict” is
●   PERIOD data type:
       –   http://pgfoundry.org/projects/temporal
●   Definite beginning and end time, e.g., the 
     period of time during which a professor 
     is teaching in a classroom

                                                    3
Constraints
●   Foreign Key
       –   Requires another tuple to exist
●   CHECK Constraint
       –   Only looks inside one tuple, can't compare 
            two tuples
       –   You can subvert the system by using a 
            UDF
               ●   Race conditions


                                                     4
Why is UNIQUE so unique?
●   Only constraint where two tuples can 
     conflict with eachother
       –   If x = 5 in one tuple, there can be no other 
              tuple where x = 5
●   Effectively a predicate lock on a very 
     simple predicate
       –   Transactions wait on other transactions 
             trying to insert the same value
●   Special code path inside Btree to enforce 
     uniqueness (doesn't work for GiST, etc.) 5
                         
Almost...
●   UNIQUE is almost what we need, but not 
     quite.
●   Need something that can understand 
     “overlaps”




                                              6
What's the Point?
●   Very common business constraint known 
     as a “schedule conflict”
●   Claims:
       –   Existing solutions in SQL are bad...




                                                  7
What's the Point?
●   Very common business constraint known 
     as a “schedule conflict”
●   Claims:
       –   Existing solutions in SQL are bad...
       –   ...except Exclusion Constraints in 
              PostgreSQL 9.0.




                                                  8
Non­Overlapping Constraint
●   Let's look at existing solutions for 
     schedule conflicts
●   How do you specify a non­overlapping 
     constraint in an SQL system?
       –   Any SQL system?
●   Ideas?



                                            9
Idea 1: Serialize
●   Only one writer
       –   Exclusive lock
●   Before updating any reservation, search 
     all existing reservations for conflicts
●   Horrible performance, availability 
     problems



                                               10
Idea 2: Quantize
●   Break into time slices, e.g. 1 hour.
●   Use UNIQUE constraint on beginning
●   Imposes unnecessary business constraint
       –   Nobody can reserve 1:30pm – 2:30pm
●   Code is not reusable for other businesses
       –   Hotels reserve by day
●   Not useful when quantum is too small
       –   Security, scientific apps, audit logs, etc.
                                                         11
Idea 3: Procedural Code
●   Triggers
●   Perhaps use dummy rows that exist only 
     for row­level locks
●   Perhaps application code
●   Probably will not perform well
●   Very business­specific, not reusable
●   Error prone
●   Good luck...
                                              12
Idea 4: Delayed Check
●   Record timestamp when reservation was 
     recorded
●   Make extra process check for conflicts 
     and notify victims asynchronously
●   Unhappy customers
●   Adds uncertainty after “commit”
●   Cascading problem

                                              13
Back to the Example
●   If the constraint is not enforced by the 
       DBMS...
●   ...then it will be enforced when two 
       professors each believe they have 
       reserved the same room
●   A duel?
●   Probably a less desirable constraint 
     enforcement mechanism than a friendly 
     error from the DBMS
                                                14
Exclusion Constraints
●   New feature in 9.0
●   Not constraint_exclusion!
●   Offers constraint enforcement mechanism 
     more general than UNIQUE
●   Declarative
●   Scalable
       –   Performance comparable to UNIQUE

                                              15
Example

CREATE TABLE reservation
(
  room      TEXT,
  professor TEXT,
  during    PERIOD,
  EXCLUDE   USING gist
    (room   WITH =,
     during WITH &&)
);
                           16
Example
CREATE TABLE reservation
(
  room      TEXT,
  professor TEXT,
  during    PERIOD,
  EXCLUDE   USING gist
    (room   WITH =,
     during WITH &&)
);

Can be arbitrary expression of fields in table.
                                                  17
Example
CREATE TABLE reservation
(
  room      TEXT,
  professor TEXT,
  during    PERIOD,
  EXCLUDE   USING gist
    (room   WITH =,
     during WITH &&)
);

Exclusion operator. In this case, “overlaps”.
                                                18
Example
CREATE TABLE reservation
(
  room      TEXT,
  professor TEXT,
  during    PERIOD,
  EXCLUDE   USING gist
    (room   WITH =,
     during WITH &&)
);

Type of index to build and use for 
enforcement.                          19
That was Easy
●   3 lines
●   Scalable
●   Flexible
●   Declarative
●   Robust
●   Safe during concurrent INSERTs and 
     UPDATEs

                                          20
Operator Detects Conflicts
●   The operator is used to search for 
     conflicts
●   Should return TRUE when two values 
     conflict
●   For example, the “overlaps” operator 
     (“&&”) would be used to enforce the 
     constraint that no two tuples contain 
     overlapping values

                                              21
Back to UNIQUE
●   If you specify all operators as “=”, the 
       semantics are identical to UNIQUE
●   Performance slightly worse, because one 
     additional index search is required
●   Can be used with GiST or Hash indexes




                                                22
UNUNIQUE
●   If you specify the operator as “<>”, then 
       constraint is the opposite of UNIQUE: all 
       values must be the same!
●   Use case: At the zoo, if you've already put 
     zebras in the cage, you can put more 
     zebras in ­­ but don't put lions in.




                                                23
Multi­Column Constraints
... EXCLUDE USING gist
       (a WITH =,
        b WITH &&) ...
Tuple1 conflicts with Tuple2 if and only if:
  Tuple1.a =  Tuple2.a AND
  Tuple1.b && Tuple2.b
Otherwise, both tuples can appear in the 
 table.

                                               24
Demo



DEMO



       25
Extra Capabilities
●   Support for predicates (WHERE)
    ●   Constraint on a subset of the table
●   Support for arbitrary expressions:
        ... EXCLUDE ((t::circle)
             WITH &&) ...
●   Deferrable
●   Doesn't work with GIN, yet.


                                              26
Conclusion
●   Constraints are always enforced
●   Sometimes by the DBMS (cheap), 
     sometimes by real life (expensive)
●   The very simple, very common “schedule 
     conflict” constraint is almost impossible 
     to enforce with most DBMSs
●   Let's make it easy, scalable, and flexible.
●   “Exclusion Constraints” in 9.0!
                                                  27

More Related Content

What's hot

Linux tuning to improve PostgreSQL performance
Linux tuning to improve PostgreSQL performanceLinux tuning to improve PostgreSQL performance
Linux tuning to improve PostgreSQL performancePostgreSQL-Consulting
 
An Introduction to Redis for Developers.pdf
An Introduction to Redis for Developers.pdfAn Introduction to Redis for Developers.pdf
An Introduction to Redis for Developers.pdfStephen Lorello
 
What is in a Lucene index?
What is in a Lucene index?What is in a Lucene index?
What is in a Lucene index?lucenerevolution
 
ClickHouse Query Performance Tips and Tricks, by Robert Hodges, Altinity CEO
ClickHouse Query Performance Tips and Tricks, by Robert Hodges, Altinity CEOClickHouse Query Performance Tips and Tricks, by Robert Hodges, Altinity CEO
ClickHouse Query Performance Tips and Tricks, by Robert Hodges, Altinity CEOAltinity Ltd
 
The Full MySQL and MariaDB Parallel Replication Tutorial
The Full MySQL and MariaDB Parallel Replication TutorialThe Full MySQL and MariaDB Parallel Replication Tutorial
The Full MySQL and MariaDB Parallel Replication TutorialJean-François Gagné
 
Postgres Vision 2018: WAL: Everything You Want to Know
Postgres Vision 2018: WAL: Everything You Want to KnowPostgres Vision 2018: WAL: Everything You Want to Know
Postgres Vision 2018: WAL: Everything You Want to KnowEDB
 
Deep dive into PostgreSQL statistics.
Deep dive into PostgreSQL statistics.Deep dive into PostgreSQL statistics.
Deep dive into PostgreSQL statistics.Alexey Lesovsky
 
MySQL Space Management
MySQL Space ManagementMySQL Space Management
MySQL Space ManagementMIJIN AN
 
pg_walinspectについて調べてみた!(第37回PostgreSQLアンカンファレンス@オンライン 発表資料)
pg_walinspectについて調べてみた!(第37回PostgreSQLアンカンファレンス@オンライン 発表資料)pg_walinspectについて調べてみた!(第37回PostgreSQLアンカンファレンス@オンライン 発表資料)
pg_walinspectについて調べてみた!(第37回PostgreSQLアンカンファレンス@オンライン 発表資料)NTT DATA Technology & Innovation
 
pg_bigmを触り始めた人に伝えたいこと
pg_bigmを触り始めた人に伝えたいことpg_bigmを触り始めた人に伝えたいこと
pg_bigmを触り始めた人に伝えたいことMasahiko Sawada
 
RocksDB Performance and Reliability Practices
RocksDB Performance and Reliability PracticesRocksDB Performance and Reliability Practices
RocksDB Performance and Reliability PracticesYoshinori Matsunobu
 
あなたの知らないPostgreSQL監視の世界
あなたの知らないPostgreSQL監視の世界あなたの知らないPostgreSQL監視の世界
あなたの知らないPostgreSQL監視の世界Yoshinori Nakanishi
 
Sizing MongoDB Clusters
Sizing MongoDB Clusters Sizing MongoDB Clusters
Sizing MongoDB Clusters MongoDB
 
PostgreSQL WAL for DBAs
PostgreSQL WAL for DBAs PostgreSQL WAL for DBAs
PostgreSQL WAL for DBAs PGConf APAC
 
PostgreSQL 12は ここがスゴイ! ~性能改善やpluggable storage engineなどの新機能を徹底解説~ (NTTデータ テクノ...
PostgreSQL 12は ここがスゴイ! ~性能改善やpluggable storage engineなどの新機能を徹底解説~ (NTTデータ テクノ...PostgreSQL 12は ここがスゴイ! ~性能改善やpluggable storage engineなどの新機能を徹底解説~ (NTTデータ テクノ...
PostgreSQL 12は ここがスゴイ! ~性能改善やpluggable storage engineなどの新機能を徹底解説~ (NTTデータ テクノ...NTT DATA Technology & Innovation
 
Seastore: Next Generation Backing Store for Ceph
Seastore: Next Generation Backing Store for CephSeastore: Next Generation Backing Store for Ceph
Seastore: Next Generation Backing Store for CephScyllaDB
 
Vacuum in PostgreSQL
Vacuum in PostgreSQLVacuum in PostgreSQL
Vacuum in PostgreSQLRafia Sabih
 

What's hot (20)

Linux tuning to improve PostgreSQL performance
Linux tuning to improve PostgreSQL performanceLinux tuning to improve PostgreSQL performance
Linux tuning to improve PostgreSQL performance
 
An Introduction to Redis for Developers.pdf
An Introduction to Redis for Developers.pdfAn Introduction to Redis for Developers.pdf
An Introduction to Redis for Developers.pdf
 
5 Steps to PostgreSQL Performance
5 Steps to PostgreSQL Performance5 Steps to PostgreSQL Performance
5 Steps to PostgreSQL Performance
 
What is in a Lucene index?
What is in a Lucene index?What is in a Lucene index?
What is in a Lucene index?
 
ClickHouse Query Performance Tips and Tricks, by Robert Hodges, Altinity CEO
ClickHouse Query Performance Tips and Tricks, by Robert Hodges, Altinity CEOClickHouse Query Performance Tips and Tricks, by Robert Hodges, Altinity CEO
ClickHouse Query Performance Tips and Tricks, by Robert Hodges, Altinity CEO
 
The Full MySQL and MariaDB Parallel Replication Tutorial
The Full MySQL and MariaDB Parallel Replication TutorialThe Full MySQL and MariaDB Parallel Replication Tutorial
The Full MySQL and MariaDB Parallel Replication Tutorial
 
Postgres Vision 2018: WAL: Everything You Want to Know
Postgres Vision 2018: WAL: Everything You Want to KnowPostgres Vision 2018: WAL: Everything You Want to Know
Postgres Vision 2018: WAL: Everything You Want to Know
 
TiDB Introduction
TiDB IntroductionTiDB Introduction
TiDB Introduction
 
Deep dive into PostgreSQL statistics.
Deep dive into PostgreSQL statistics.Deep dive into PostgreSQL statistics.
Deep dive into PostgreSQL statistics.
 
MySQL Space Management
MySQL Space ManagementMySQL Space Management
MySQL Space Management
 
pg_walinspectについて調べてみた!(第37回PostgreSQLアンカンファレンス@オンライン 発表資料)
pg_walinspectについて調べてみた!(第37回PostgreSQLアンカンファレンス@オンライン 発表資料)pg_walinspectについて調べてみた!(第37回PostgreSQLアンカンファレンス@オンライン 発表資料)
pg_walinspectについて調べてみた!(第37回PostgreSQLアンカンファレンス@オンライン 発表資料)
 
pg_bigmを触り始めた人に伝えたいこと
pg_bigmを触り始めた人に伝えたいことpg_bigmを触り始めた人に伝えたいこと
pg_bigmを触り始めた人に伝えたいこと
 
RocksDB Performance and Reliability Practices
RocksDB Performance and Reliability PracticesRocksDB Performance and Reliability Practices
RocksDB Performance and Reliability Practices
 
Deep Dive on Amazon Aurora
Deep Dive on Amazon AuroraDeep Dive on Amazon Aurora
Deep Dive on Amazon Aurora
 
あなたの知らないPostgreSQL監視の世界
あなたの知らないPostgreSQL監視の世界あなたの知らないPostgreSQL監視の世界
あなたの知らないPostgreSQL監視の世界
 
Sizing MongoDB Clusters
Sizing MongoDB Clusters Sizing MongoDB Clusters
Sizing MongoDB Clusters
 
PostgreSQL WAL for DBAs
PostgreSQL WAL for DBAs PostgreSQL WAL for DBAs
PostgreSQL WAL for DBAs
 
PostgreSQL 12は ここがスゴイ! ~性能改善やpluggable storage engineなどの新機能を徹底解説~ (NTTデータ テクノ...
PostgreSQL 12は ここがスゴイ! ~性能改善やpluggable storage engineなどの新機能を徹底解説~ (NTTデータ テクノ...PostgreSQL 12は ここがスゴイ! ~性能改善やpluggable storage engineなどの新機能を徹底解説~ (NTTデータ テクノ...
PostgreSQL 12は ここがスゴイ! ~性能改善やpluggable storage engineなどの新機能を徹底解説~ (NTTデータ テクノ...
 
Seastore: Next Generation Backing Store for Ceph
Seastore: Next Generation Backing Store for CephSeastore: Next Generation Backing Store for Ceph
Seastore: Next Generation Backing Store for Ceph
 
Vacuum in PostgreSQL
Vacuum in PostgreSQLVacuum in PostgreSQL
Vacuum in PostgreSQL
 

Viewers also liked

Oracle Sandbox
Oracle SandboxOracle Sandbox
Oracle SandboxDatavail
 
The Renaissance of Stable Value: Capital Preservation in Defined Contribution
The Renaissance of Stable Value: Capital Preservation in Defined ContributionThe Renaissance of Stable Value: Capital Preservation in Defined Contribution
The Renaissance of Stable Value: Capital Preservation in Defined ContributionCallan
 
Video 2.2 investment strategies
Video 2.2   investment strategiesVideo 2.2   investment strategies
Video 2.2 investment strategiesJim Pellerin
 
Investment strategies-to-grow-your-assets
Investment strategies-to-grow-your-assetsInvestment strategies-to-grow-your-assets
Investment strategies-to-grow-your-assetsRoger Jirves
 
The Process Of Portfolio Management
The Process Of Portfolio ManagementThe Process Of Portfolio Management
The Process Of Portfolio ManagementHitesh Kukreja
 
Investment strategies-to-grow-your-income
Investment strategies-to-grow-your-incomeInvestment strategies-to-grow-your-income
Investment strategies-to-grow-your-incomeRoger Jirves
 
Investment strategies of famous investment gurus
Investment strategies of famous investment gurusInvestment strategies of famous investment gurus
Investment strategies of famous investment gurusHarish Manchala
 
Investment alternative
Investment alternativeInvestment alternative
Investment alternativeDharmik
 
2015.01.21 ACG cup (M&A case competition)
2015.01.21 ACG cup (M&A case competition)2015.01.21 ACG cup (M&A case competition)
2015.01.21 ACG cup (M&A case competition)Allison Noel
 
ACG Cup 2nd round case competition final presentation
ACG Cup 2nd round case competition final presentationACG Cup 2nd round case competition final presentation
ACG Cup 2nd round case competition final presentationliujingyi
 
Portfolio management process
Portfolio management processPortfolio management process
Portfolio management processNagarjuna Kalluru
 
Investment meaning nature
Investment meaning natureInvestment meaning nature
Investment meaning naturereema21
 
Equality & Equity
Equality & EquityEquality & Equity
Equality & EquitySam walker
 
Project Portfolio Management
Project Portfolio ManagementProject Portfolio Management
Project Portfolio ManagementAnand Subramaniam
 
Theory of constraints
Theory of constraintsTheory of constraints
Theory of constraintsMOHD ARISH
 

Viewers also liked (19)

Microsoft SQL Server Analysis Services Multidimensional
Microsoft SQL Server Analysis Services MultidimensionalMicrosoft SQL Server Analysis Services Multidimensional
Microsoft SQL Server Analysis Services Multidimensional
 
Oracle Sandbox
Oracle SandboxOracle Sandbox
Oracle Sandbox
 
The Renaissance of Stable Value: Capital Preservation in Defined Contribution
The Renaissance of Stable Value: Capital Preservation in Defined ContributionThe Renaissance of Stable Value: Capital Preservation in Defined Contribution
The Renaissance of Stable Value: Capital Preservation in Defined Contribution
 
Video 2.2 investment strategies
Video 2.2   investment strategiesVideo 2.2   investment strategies
Video 2.2 investment strategies
 
Investment strategies-to-grow-your-assets
Investment strategies-to-grow-your-assetsInvestment strategies-to-grow-your-assets
Investment strategies-to-grow-your-assets
 
The Process Of Portfolio Management
The Process Of Portfolio ManagementThe Process Of Portfolio Management
The Process Of Portfolio Management
 
Investment strategies-to-grow-your-income
Investment strategies-to-grow-your-incomeInvestment strategies-to-grow-your-income
Investment strategies-to-grow-your-income
 
Investment strategies of famous investment gurus
Investment strategies of famous investment gurusInvestment strategies of famous investment gurus
Investment strategies of famous investment gurus
 
Investment alternative
Investment alternativeInvestment alternative
Investment alternative
 
2015.01.21 ACG cup (M&A case competition)
2015.01.21 ACG cup (M&A case competition)2015.01.21 ACG cup (M&A case competition)
2015.01.21 ACG cup (M&A case competition)
 
ACG Cup 2nd round case competition final presentation
ACG Cup 2nd round case competition final presentationACG Cup 2nd round case competition final presentation
ACG Cup 2nd round case competition final presentation
 
Portfolio management process
Portfolio management processPortfolio management process
Portfolio management process
 
investment
investmentinvestment
investment
 
Global Marketing
Global MarketingGlobal Marketing
Global Marketing
 
Investment meaning nature
Investment meaning natureInvestment meaning nature
Investment meaning nature
 
Equality & Equity
Equality & EquityEquality & Equity
Equality & Equity
 
Project Portfolio Management
Project Portfolio ManagementProject Portfolio Management
Project Portfolio Management
 
Theory of constraints
Theory of constraintsTheory of constraints
Theory of constraints
 
Types of investment
Types of investmentTypes of investment
Types of investment
 

Similar to Not Just UNIQUE: Exclusion Constraints

Not Just UNIQUE: Generalized Index Constraints
Not Just UNIQUE: Generalized Index ConstraintsNot Just UNIQUE: Generalized Index Constraints
Not Just UNIQUE: Generalized Index ConstraintsCommand Prompt., Inc
 
Concurrency - Why it's hard ?
Concurrency - Why it's hard ?Concurrency - Why it's hard ?
Concurrency - Why it's hard ?Ramith Jayasinghe
 
Modern Java Concurrency
Modern Java ConcurrencyModern Java Concurrency
Modern Java ConcurrencyBen Evans
 
Cassandra in production
Cassandra in productionCassandra in production
Cassandra in productionvalstadsve
 
Elephant grooming: quality with Hadoop
Elephant grooming: quality with HadoopElephant grooming: quality with Hadoop
Elephant grooming: quality with HadoopRoman Nikitchenko
 
Clean Code - Part 2
Clean Code - Part 2Clean Code - Part 2
Clean Code - Part 2Knoldus Inc.
 
The View - Lotusscript coding best practices
The View - Lotusscript coding best practicesThe View - Lotusscript coding best practices
The View - Lotusscript coding best practicesBill Buchan
 
Mongo nyc nyt + mongodb
Mongo nyc nyt + mongodbMongo nyc nyt + mongodb
Mongo nyc nyt + mongodbDeep Kapadia
 
(3) c sharp introduction_basics_part_ii
(3) c sharp introduction_basics_part_ii(3) c sharp introduction_basics_part_ii
(3) c sharp introduction_basics_part_iiNico Ludwig
 
TS 5341 Rethinking the ESB
TS 5341 Rethinking the ESBTS 5341 Rethinking the ESB
TS 5341 Rethinking the ESBaegloff
 
Series of Unfortunate Netflix Container Events - QConNYC17
Series of Unfortunate Netflix Container Events - QConNYC17Series of Unfortunate Netflix Container Events - QConNYC17
Series of Unfortunate Netflix Container Events - QConNYC17aspyker
 
The Future of zHeap
The Future of zHeapThe Future of zHeap
The Future of zHeapEDB
 
Benchmarks, performance, scalability, and capacity what's behind the numbers
Benchmarks, performance, scalability, and capacity what's behind the numbersBenchmarks, performance, scalability, and capacity what's behind the numbers
Benchmarks, performance, scalability, and capacity what's behind the numbersJustin Dorfman
 
Benchmarks, performance, scalability, and capacity what s behind the numbers...
Benchmarks, performance, scalability, and capacity  what s behind the numbers...Benchmarks, performance, scalability, and capacity  what s behind the numbers...
Benchmarks, performance, scalability, and capacity what s behind the numbers...james tong
 
Parallel builds in Eclipse IDE workspace
Parallel builds in Eclipse IDE workspaceParallel builds in Eclipse IDE workspace
Parallel builds in Eclipse IDE workspaceMickael Istria
 
Rules Programming tutorial
Rules Programming tutorialRules Programming tutorial
Rules Programming tutorialSrinath Perera
 

Similar to Not Just UNIQUE: Exclusion Constraints (20)

Not Just UNIQUE: Generalized Index Constraints
Not Just UNIQUE: Generalized Index ConstraintsNot Just UNIQUE: Generalized Index Constraints
Not Just UNIQUE: Generalized Index Constraints
 
Concurrency - Why it's hard ?
Concurrency - Why it's hard ?Concurrency - Why it's hard ?
Concurrency - Why it's hard ?
 
Why Concurrency is hard ?
Why Concurrency is hard ?Why Concurrency is hard ?
Why Concurrency is hard ?
 
Modern Java Concurrency
Modern Java ConcurrencyModern Java Concurrency
Modern Java Concurrency
 
Cassandra in production
Cassandra in productionCassandra in production
Cassandra in production
 
Elephant grooming: quality with Hadoop
Elephant grooming: quality with HadoopElephant grooming: quality with Hadoop
Elephant grooming: quality with Hadoop
 
Clean Code - Part 2
Clean Code - Part 2Clean Code - Part 2
Clean Code - Part 2
 
The View - Lotusscript coding best practices
The View - Lotusscript coding best practicesThe View - Lotusscript coding best practices
The View - Lotusscript coding best practices
 
Mongo nyc nyt + mongodb
Mongo nyc nyt + mongodbMongo nyc nyt + mongodb
Mongo nyc nyt + mongodb
 
(3) c sharp introduction_basics_part_ii
(3) c sharp introduction_basics_part_ii(3) c sharp introduction_basics_part_ii
(3) c sharp introduction_basics_part_ii
 
TS 5341 Rethinking the ESB
TS 5341 Rethinking the ESBTS 5341 Rethinking the ESB
TS 5341 Rethinking the ESB
 
Series of Unfortunate Netflix Container Events - QConNYC17
Series of Unfortunate Netflix Container Events - QConNYC17Series of Unfortunate Netflix Container Events - QConNYC17
Series of Unfortunate Netflix Container Events - QConNYC17
 
The Future of zHeap
The Future of zHeapThe Future of zHeap
The Future of zHeap
 
Cassandra On EC2
Cassandra On EC2Cassandra On EC2
Cassandra On EC2
 
Lect04
Lect04Lect04
Lect04
 
Benchmarks, performance, scalability, and capacity what's behind the numbers
Benchmarks, performance, scalability, and capacity what's behind the numbersBenchmarks, performance, scalability, and capacity what's behind the numbers
Benchmarks, performance, scalability, and capacity what's behind the numbers
 
Benchmarks, performance, scalability, and capacity what s behind the numbers...
Benchmarks, performance, scalability, and capacity  what s behind the numbers...Benchmarks, performance, scalability, and capacity  what s behind the numbers...
Benchmarks, performance, scalability, and capacity what s behind the numbers...
 
Parallel builds in Eclipse IDE workspace
Parallel builds in Eclipse IDE workspaceParallel builds in Eclipse IDE workspace
Parallel builds in Eclipse IDE workspace
 
Making Strongly-typed NETCONF Usable
Making Strongly-typed NETCONF UsableMaking Strongly-typed NETCONF Usable
Making Strongly-typed NETCONF Usable
 
Rules Programming tutorial
Rules Programming tutorialRules Programming tutorial
Rules Programming tutorial
 

More from Command Prompt., Inc

Howdah - An Application using Pylons, PostgreSQL, Simpycity and Exceptable
Howdah - An Application using Pylons, PostgreSQL, Simpycity and ExceptableHowdah - An Application using Pylons, PostgreSQL, Simpycity and Exceptable
Howdah - An Application using Pylons, PostgreSQL, Simpycity and ExceptableCommand Prompt., Inc
 
Mastering PostgreSQL Administration
Mastering PostgreSQL AdministrationMastering PostgreSQL Administration
Mastering PostgreSQL AdministrationCommand Prompt., Inc
 
Replication using PostgreSQL Replicator
Replication using PostgreSQL ReplicatorReplication using PostgreSQL Replicator
Replication using PostgreSQL ReplicatorCommand Prompt., Inc
 
Python utilities for data presentation
Python utilities for data presentationPython utilities for data presentation
Python utilities for data presentationCommand Prompt., Inc
 
PostgreSQL, Extensible to the Nth Degree: Functions, Languages, Types, Rules,...
PostgreSQL, Extensible to the Nth Degree: Functions, Languages, Types, Rules,...PostgreSQL, Extensible to the Nth Degree: Functions, Languages, Types, Rules,...
PostgreSQL, Extensible to the Nth Degree: Functions, Languages, Types, Rules,...Command Prompt., Inc
 
pg_proctab: Accessing System Stats in PostgreSQL
pg_proctab: Accessing System Stats in PostgreSQLpg_proctab: Accessing System Stats in PostgreSQL
pg_proctab: Accessing System Stats in PostgreSQLCommand Prompt., Inc
 
Implementing the Future of PostgreSQL Clustering with Tungsten
Implementing the Future of PostgreSQL Clustering with TungstenImplementing the Future of PostgreSQL Clustering with Tungsten
Implementing the Future of PostgreSQL Clustering with TungstenCommand Prompt., Inc
 
Elephant Roads: a tour of Postgres forks
Elephant Roads: a tour of Postgres forksElephant Roads: a tour of Postgres forks
Elephant Roads: a tour of Postgres forksCommand Prompt., Inc
 
configuring a warm standby, the easy way
configuring a warm standby, the easy wayconfiguring a warm standby, the easy way
configuring a warm standby, the easy wayCommand Prompt., Inc
 
Normalization: A Workshop for Everybody Pt. 2
Normalization: A Workshop for Everybody Pt. 2Normalization: A Workshop for Everybody Pt. 2
Normalization: A Workshop for Everybody Pt. 2Command Prompt., Inc
 
Normalization: A Workshop for Everybody Pt. 1
Normalization: A Workshop for Everybody Pt. 1Normalization: A Workshop for Everybody Pt. 1
Normalization: A Workshop for Everybody Pt. 1Command Prompt., Inc
 
Integrating PostGIS in Web Applications
Integrating PostGIS in Web ApplicationsIntegrating PostGIS in Web Applications
Integrating PostGIS in Web ApplicationsCommand Prompt., Inc
 
PostgreSQL High Availability via SLONY and PG POOL II
PostgreSQL High Availability via SLONY and PG POOL IIPostgreSQL High Availability via SLONY and PG POOL II
PostgreSQL High Availability via SLONY and PG POOL IICommand Prompt., Inc
 

More from Command Prompt., Inc (20)

Howdah - An Application using Pylons, PostgreSQL, Simpycity and Exceptable
Howdah - An Application using Pylons, PostgreSQL, Simpycity and ExceptableHowdah - An Application using Pylons, PostgreSQL, Simpycity and Exceptable
Howdah - An Application using Pylons, PostgreSQL, Simpycity and Exceptable
 
Backup and-recovery2
Backup and-recovery2Backup and-recovery2
Backup and-recovery2
 
Mastering PostgreSQL Administration
Mastering PostgreSQL AdministrationMastering PostgreSQL Administration
Mastering PostgreSQL Administration
 
Temporal Data
Temporal DataTemporal Data
Temporal Data
 
Replication using PostgreSQL Replicator
Replication using PostgreSQL ReplicatorReplication using PostgreSQL Replicator
Replication using PostgreSQL Replicator
 
Go replicator
Go replicatorGo replicator
Go replicator
 
Pg migrator
Pg migratorPg migrator
Pg migrator
 
Python utilities for data presentation
Python utilities for data presentationPython utilities for data presentation
Python utilities for data presentation
 
PostgreSQL, Extensible to the Nth Degree: Functions, Languages, Types, Rules,...
PostgreSQL, Extensible to the Nth Degree: Functions, Languages, Types, Rules,...PostgreSQL, Extensible to the Nth Degree: Functions, Languages, Types, Rules,...
PostgreSQL, Extensible to the Nth Degree: Functions, Languages, Types, Rules,...
 
pg_proctab: Accessing System Stats in PostgreSQL
pg_proctab: Accessing System Stats in PostgreSQLpg_proctab: Accessing System Stats in PostgreSQL
pg_proctab: Accessing System Stats in PostgreSQL
 
Implementing the Future of PostgreSQL Clustering with Tungsten
Implementing the Future of PostgreSQL Clustering with TungstenImplementing the Future of PostgreSQL Clustering with Tungsten
Implementing the Future of PostgreSQL Clustering with Tungsten
 
Elephant Roads: a tour of Postgres forks
Elephant Roads: a tour of Postgres forksElephant Roads: a tour of Postgres forks
Elephant Roads: a tour of Postgres forks
 
configuring a warm standby, the easy way
configuring a warm standby, the easy wayconfiguring a warm standby, the easy way
configuring a warm standby, the easy way
 
Bucardo
BucardoBucardo
Bucardo
 
Basic Query Tuning Primer
Basic Query Tuning PrimerBasic Query Tuning Primer
Basic Query Tuning Primer
 
A Practical Multi-Tenant Cluster
A Practical Multi-Tenant ClusterA Practical Multi-Tenant Cluster
A Practical Multi-Tenant Cluster
 
Normalization: A Workshop for Everybody Pt. 2
Normalization: A Workshop for Everybody Pt. 2Normalization: A Workshop for Everybody Pt. 2
Normalization: A Workshop for Everybody Pt. 2
 
Normalization: A Workshop for Everybody Pt. 1
Normalization: A Workshop for Everybody Pt. 1Normalization: A Workshop for Everybody Pt. 1
Normalization: A Workshop for Everybody Pt. 1
 
Integrating PostGIS in Web Applications
Integrating PostGIS in Web ApplicationsIntegrating PostGIS in Web Applications
Integrating PostGIS in Web Applications
 
PostgreSQL High Availability via SLONY and PG POOL II
PostgreSQL High Availability via SLONY and PG POOL IIPostgreSQL High Availability via SLONY and PG POOL II
PostgreSQL High Availability via SLONY and PG POOL II
 

Not Just UNIQUE: Exclusion Constraints