elosztott, skálázódó adatbázis-kezelő rendszer - sztaki · elosztott, skálázódó...

43
Elosztott, skálázódó adatbázis-kezelő rendszer 2012. július 13. péntek Molnár András ([email protected]) Garzó András ([email protected]) http://cassandra.apache.org/

Upload: others

Post on 17-Sep-2019

7 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Elosztott, skálázódó adatbázis-kezelő rendszer - SZTAKI · Elosztott, skálázódó adatbázis-kezelő rendszer 2012. július 13. péntek Molnár András (modras@ilab.sztaki.hu)

Elosztott, skálázódóadatbázis-kezelő rendszer

2012. július 13. péntek

Molnár András ([email protected])Garzó András ([email protected])

http://cassandra.apache.org/

Page 2: Elosztott, skálázódó adatbázis-kezelő rendszer - SZTAKI · Elosztott, skálázódó adatbázis-kezelő rendszer 2012. július 13. péntek Molnár András (modras@ilab.sztaki.hu)

Eredet

● “In Greek mythology, ...

Page 3: Elosztott, skálázódó adatbázis-kezelő rendszer - SZTAKI · Elosztott, skálázódó adatbázis-kezelő rendszer 2012. július 13. péntek Molnár András (modras@ilab.sztaki.hu)

Eredet

● “In Greek mythology, Cassandra was the daughter of King Priam and Queen Hecuba of Troy. Cassandra was so beautiful that the god Apollo gave her the ability to see the future. But when she refused his amorous advances, he cursed her such that she would still be able to accurately predict everything that would happen—but no one would believe her. Cassandra foresaw the destruction of her city of Troy, but was powerless to stop it. The Cassandra distributed database is named for her. I speculate that it is also named as kind of a joke on the Oracle at Delphi, another seer for whom a database is named.“

(Cassandra: The Definitive Guide)

Page 4: Elosztott, skálázódó adatbázis-kezelő rendszer - SZTAKI · Elosztott, skálázódó adatbázis-kezelő rendszer 2012. július 13. péntek Molnár András (modras@ilab.sztaki.hu)

CAP

Page 5: Elosztott, skálázódó adatbázis-kezelő rendszer - SZTAKI · Elosztott, skálázódó adatbázis-kezelő rendszer 2012. július 13. péntek Molnár András (modras@ilab.sztaki.hu)

CAP

● RDBMS's

Page 6: Elosztott, skálázódó adatbázis-kezelő rendszer - SZTAKI · Elosztott, skálázódó adatbázis-kezelő rendszer 2012. július 13. péntek Molnár András (modras@ilab.sztaki.hu)

CAP

● Bigtable

● HBase

● RDBMS's

Page 7: Elosztott, skálázódó adatbázis-kezelő rendszer - SZTAKI · Elosztott, skálázódó adatbázis-kezelő rendszer 2012. július 13. péntek Molnár András (modras@ilab.sztaki.hu)

CAP

● Bigtable

● HBase

● Voldemort● Cassandra● RDBMS's

Page 8: Elosztott, skálázódó adatbázis-kezelő rendszer - SZTAKI · Elosztott, skálázódó adatbázis-kezelő rendszer 2012. július 13. péntek Molnár András (modras@ilab.sztaki.hu)

CAP

(Cassandra: The Definitive Guide)

Page 9: Elosztott, skálázódó adatbázis-kezelő rendszer - SZTAKI · Elosztott, skálázódó adatbázis-kezelő rendszer 2012. július 13. péntek Molnár András (modras@ilab.sztaki.hu)

“Tuneable consistency”

set consistency level ...

(Cassandra: The Definitive Guide)

Page 10: Elosztott, skálázódó adatbázis-kezelő rendszer - SZTAKI · Elosztott, skálázódó adatbázis-kezelő rendszer 2012. július 13. péntek Molnár András (modras@ilab.sztaki.hu)

Mit mond magáról?● “Apache Cassandra is an

open source, distributed, decentralized, elastically scalable, highly available, fault-tolerant, tuneably consistent, column-oriented database that bases its distribution design on Amazon’s Dynamo and its data model on Google’s Bigtable. Created at Facebook, it is now used at some of the most popular sites on the Web.”

● “That’s exactly 50 words. Of course, if you were to recite that to your boss in the elevator, you'd probably get a blank look in return.”

(Cassandra: The Definitive Guide)

Page 11: Elosztott, skálázódó adatbázis-kezelő rendszer - SZTAKI · Elosztott, skálázódó adatbázis-kezelő rendszer 2012. július 13. péntek Molnár András (modras@ilab.sztaki.hu)

Mit mond magáról?● “Apache Cassandra is an

open source, distributed, decentralized, elastically scalable, highly available, fault-tolerant, tuneably consistent, column-oriented database that bases its distribution design on Amazon’s Dynamo and its data model on Google’s Bigtable. Created at Facebook, it is now used at some of the most popular sites on the Web.”

● “That’s exactly 50 words. Of course, if you were to recite that to your boss in the elevator, you'd probably get a blank look in return.”

(Cassandra: The Definitive Guide)

Indexed, schema-free, row-oriented store

Page 12: Elosztott, skálázódó adatbázis-kezelő rendszer - SZTAKI · Elosztott, skálázódó adatbázis-kezelő rendszer 2012. július 13. péntek Molnár András (modras@ilab.sztaki.hu)

Mikor érdemes használni? (pl.)

● Cassandra vs RDBMS– nagy adatmennyiség, szerver klaszter

– ...

● Cassandra vs HBase– always writable

– ...

● Cassandra vs Voldemort– dozens or hundreds of columns

– ...

Page 13: Elosztott, skálázódó adatbázis-kezelő rendszer - SZTAKI · Elosztott, skálázódó adatbázis-kezelő rendszer 2012. július 13. péntek Molnár András (modras@ilab.sztaki.hu)

Use case examples● Large deployments

– many nodes

● Lots of writes, statistics & analysis– always writable

● Geographical distribution– data locality

● Evolving applications– no strict schema

(Cassandra: The Definitive Guide)

Page 14: Elosztott, skálázódó adatbázis-kezelő rendszer - SZTAKI · Elosztott, skálázódó adatbázis-kezelő rendszer 2012. július 13. péntek Molnár András (modras@ilab.sztaki.hu)

Fejlesztés állása

● aktuális verzió: 1.1.2, ● released 2012-07-02

● [v1.1.1 released: 2012-06-04]

Page 15: Elosztott, skálázódó adatbázis-kezelő rendszer - SZTAKI · Elosztott, skálázódó adatbázis-kezelő rendszer 2012. július 13. péntek Molnár András (modras@ilab.sztaki.hu)

Kik supportálják?● Third-party solution provides e.g.

Cassandra wiki

Page 16: Elosztott, skálázódó adatbázis-kezelő rendszer - SZTAKI · Elosztott, skálázódó adatbázis-kezelő rendszer 2012. július 13. péntek Molnár András (modras@ilab.sztaki.hu)

Kik használják?● “Twitter is using Cassandra for analytics: for real-time analytics, for

geolocation and places of interest data, and for data mining over the entire user store.

● Mahalo uses it for its primary near-time data store.

● Facebook still uses it for inbox search, though they are using a proprietary fork.

● Digg uses it for its primary near-time data store.

● Rackspace uses it for its cloud service, monitoring, and logging.

● Reddit uses it as a persistent cache.

● Cloudkick uses it for monitoring statistics and analytics.

● Ooyala uses it to store and serve near real-time video analytics data.

● SimpleGeo uses it as the main data store for its real-time location infrastructure.

● Onespot uses it for a subset of its main data store.” (Cassandra: The Definitive Guide)

Page 17: Elosztott, skálázódó adatbázis-kezelő rendszer - SZTAKI · Elosztott, skálázódó adatbázis-kezelő rendszer 2012. július 13. péntek Molnár András (modras@ilab.sztaki.hu)

Kik használják?

● “Cassandra is in use at Netflix, Twitter, Urban Airship, Constant Contact, Reddit, Cisco, OpenX, Digg, CloudKick, Ooyala, and more companies that have large, active data sets.”

● “The largest known Cassandra cluster has over 300 TB of data in over 400 machines.”

● More: http://www.datastax.com/cassandrausers

( cassandra.apache.org )

Page 18: Elosztott, skálázódó adatbázis-kezelő rendszer - SZTAKI · Elosztott, skálázódó adatbázis-kezelő rendszer 2012. július 13. péntek Molnár András (modras@ilab.sztaki.hu)

Data Model

Page 19: Elosztott, skálázódó adatbázis-kezelő rendszer - SZTAKI · Elosztott, skálázódó adatbázis-kezelő rendszer 2012. július 13. péntek Molnár András (modras@ilab.sztaki.hu)

Data Model● Sparse table

(Cassandra: The Definitive Guide)

Page 20: Elosztott, skálázódó adatbázis-kezelő rendszer - SZTAKI · Elosztott, skálázódó adatbázis-kezelő rendszer 2012. július 13. péntek Molnár András (modras@ilab.sztaki.hu)

Data Model● Sparse table

Page 21: Elosztott, skálázódó adatbázis-kezelő rendszer - SZTAKI · Elosztott, skálázódó adatbázis-kezelő rendszer 2012. július 13. péntek Molnár András (modras@ilab.sztaki.hu)

Data Model

● Super column family feature

(“becoming deprecated”)● “Not officially deprecated, but not highly recommended either”

Ed Anuff: Cassandra Indexing Techniques

Page 22: Elosztott, skálázódó adatbázis-kezelő rendszer - SZTAKI · Elosztott, skálázódó adatbázis-kezelő rendszer 2012. július 13. péntek Molnár András (modras@ilab.sztaki.hu)

Column● name

● ● byte[]

● ● Queried against (predicates)

● ● Determines sort order

● value

● ● byte[]

● ● Opaque to Cassandra

● timestamp

● ● long

● ● Conflict resolution (Last Write Wins)(Cassandra: The Definitive Guide)

Page 23: Elosztott, skálázódó adatbázis-kezelő rendszer - SZTAKI · Elosztott, skálázódó adatbázis-kezelő rendszer 2012. július 13. péntek Molnár András (modras@ilab.sztaki.hu)

Column sorting● Column names are stored in sorted

order according to the value of compare_with:– AsciiType, BytesType,

LexicalUUIDType, – IntegerType, LongType, – TimeUUIDType, – UTF8Type– CompositeType ...– Custom ... (Cassandra: The Definitive Guide)

Page 24: Elosztott, skálázódó adatbázis-kezelő rendszer - SZTAKI · Elosztott, skálázódó adatbázis-kezelő rendszer 2012. július 13. péntek Molnár András (modras@ilab.sztaki.hu)

Row storing & sorting

● Column sorting is controllable, but key sorting isn’t; row keys always sort in byte order.

● Rows are stored in an order defined by the partitioner (for example, with RandomPartitioner, they are in random order, etc.).

(Cassandra: The Definitive Guide)

Page 25: Elosztott, skálázódó adatbázis-kezelő rendszer - SZTAKI · Elosztott, skálázódó adatbázis-kezelő rendszer 2012. július 13. péntek Molnár András (modras@ilab.sztaki.hu)

Alternate indexes

● Native secondary indexes● Wide rows as lookup and grouping tables● Custom secondary indexes

Ed Anuff: Cassandra Indexing Techniques

Page 26: Elosztott, skálázódó adatbázis-kezelő rendszer - SZTAKI · Elosztott, skálázódó adatbázis-kezelő rendszer 2012. július 13. péntek Molnár András (modras@ilab.sztaki.hu)

Minta példa

Page 27: Elosztott, skálázódó adatbázis-kezelő rendszer - SZTAKI · Elosztott, skálázódó adatbázis-kezelő rendszer 2012. július 13. péntek Molnár András (modras@ilab.sztaki.hu)

Minta példa

User● ● Stores users● ● Keyed on a unique ID (UUID).● ● Columns for username and password

Username● ● Indexes users● ● Keyed on username● ● One column, the unique UUID for user

Username UUID

UsernameUUID Password

Eric Evans: Hands-on Cassandra

Page 28: Elosztott, skálázódó adatbázis-kezelő rendszer - SZTAKI · Elosztott, skálázódó adatbázis-kezelő rendszer 2012. július 13. péntek Molnár András (modras@ilab.sztaki.hu)

Minta példa

Friends● ● Maps a user to the users (s)he follows● ● Keyed on user ID● ● Columns for each user being followed

Followers● ● Maps a user to those following her/him● ● Keyed on username● ● Columns for each user following

UUID Follows(followees)

Username Followers(followers)

Eric Evans: Hands-on Cassandra

Page 29: Elosztott, skálázódó adatbázis-kezelő rendszer - SZTAKI · Elosztott, skálázódó adatbázis-kezelő rendszer 2012. július 13. péntek Molnár András (modras@ilab.sztaki.hu)

Minta példa

Tweets● ● Stores tweets and maps them to users● ● Keyed on a unique identifier● ● Columns:

– Unique identifier

– User ID

– Body of the tweet

– timestamp

TweetID UUID Body Timestamp

Eric Evans: Hands-on Cassandra

Page 30: Elosztott, skálázódó adatbázis-kezelő rendszer - SZTAKI · Elosztott, skálázódó adatbázis-kezelő rendszer 2012. július 13. péntek Molnár András (modras@ilab.sztaki.hu)

Minta példaTimeline

● ● The materialized view of Tweets for a user.

● ● Keyed on user ID● ● Columns that map timestamps to Tweet ID

Userline● ● The collection of Tweets attributed to a

user● ● Keyed on user ID● ● Columns that map timestamps to Tweet ID

TweetIDUUID(tweetIDsOf)

TweetIDUUID(tweetIDsTo)

Eric Evans: Hands-on Cassandra

Page 31: Elosztott, skálázódó adatbázis-kezelő rendszer - SZTAKI · Elosztott, skálázódó adatbázis-kezelő rendszer 2012. július 13. péntek Molnár András (modras@ilab.sztaki.hu)

2. minta példa

(Cassandra: The Definitive Guide)

Page 32: Elosztott, skálázódó adatbázis-kezelő rendszer - SZTAKI · Elosztott, skálázódó adatbázis-kezelő rendszer 2012. július 13. péntek Molnár András (modras@ilab.sztaki.hu)

Design patterns

● Materialized View,● Valueless Column, ● Aggregate Key,● ... ?

(Cassandra: The Definitive Guide)

Page 33: Elosztott, skálázódó adatbázis-kezelő rendszer - SZTAKI · Elosztott, skálázódó adatbázis-kezelő rendszer 2012. július 13. péntek Molnár András (modras@ilab.sztaki.hu)

Wide Rows

● “If your data model has no rows with over a hundred columns, you’re either doing something wrong or shouldn’t be using Cassandra”

– wide row for grouping

– wide row as a simple index

– composite column names, e.g.

Ed Anuff: Cassandra Indexing Techniques

Indexes = { "User_Keys_By_Last_Name" : { {"adams", 1} : "e5d...", {"anderson", 1} : "e5f...", {"anderson", 2} : "e71...", ...

Page 34: Elosztott, skálázódó adatbázis-kezelő rendszer - SZTAKI · Elosztott, skálázódó adatbázis-kezelő rendszer 2012. július 13. péntek Molnár András (modras@ilab.sztaki.hu)

Model the queries first

● “Start with your queries. – Ask what queries your application will need,

and model the data around that instead of modeling the data first, as you would in the relational world.” (Cassandra: The Definitive Guide)

Page 35: Elosztott, skálázódó adatbázis-kezelő rendszer - SZTAKI · Elosztott, skálázódó adatbázis-kezelő rendszer 2012. július 13. péntek Molnár András (modras@ilab.sztaki.hu)

Működés - írás

(Cassandra: The Definitive Guide)

Page 36: Elosztott, skálázódó adatbázis-kezelő rendszer - SZTAKI · Elosztott, skálázódó adatbázis-kezelő rendszer 2012. július 13. péntek Molnár András (modras@ilab.sztaki.hu)

Működés - olvasás

(Cassandra: The Definitive Guide)

Page 37: Elosztott, skálázódó adatbázis-kezelő rendszer - SZTAKI · Elosztott, skálázódó adatbázis-kezelő rendszer 2012. július 13. péntek Molnár András (modras@ilab.sztaki.hu)

Limitations

● All data for a single row must fit (on disk) on a single machine in the cluster. Because row keys alone are used to determine the nodes responsible for replicating their data, the amount of data associated with a single key has this upper bound.

● A single column value may not be larger than 2GB. (However, large values are read into memory when requested, so in practice "small number of MB" is more appropriate. [might be changed?])

● The maximum number of column per row is 2 billion.

● The key (and column names) must be under 64K bytes.

● no subcolumn indexing [might be changed?](Cassandra wiki)

Page 38: Elosztott, skálázódó adatbázis-kezelő rendszer - SZTAKI · Elosztott, skálázódó adatbázis-kezelő rendszer 2012. július 13. péntek Molnár András (modras@ilab.sztaki.hu)

Hadoop Map/Reduce

● Map/Reduce jobok írhatók Cassandrás adatokra

● Pig és Hive is képes Cassandrás adatokon dolgozni

Page 39: Elosztott, skálázódó adatbázis-kezelő rendszer - SZTAKI · Elosztott, skálázódó adatbázis-kezelő rendszer 2012. július 13. péntek Molnár András (modras@ilab.sztaki.hu)

Telepítés, minta futtatás

● Ld. README.txt

– tar -zxvf apache-cassandra-$VERSION.tar.gz

– ... (log, lib könyvtárak beállítása)

– ... (config fájl szerkesztése v. default-on hagyása)

– szerver: bin/cassandra -f

– CLI kliens: bin/cassandra-cli --host localhost

Page 40: Elosztott, skálázódó adatbázis-kezelő rendszer - SZTAKI · Elosztott, skálázódó adatbázis-kezelő rendszer 2012. július 13. péntek Molnár András (modras@ilab.sztaki.hu)

Telepítés, minta futtatás● Cassandra-cli - adatbázis parancsok pl.● create keyspace Keyspace1;

● use Keyspace1;

● create column family Users with .....

● set Users[jsmith][first] = 'John'; set Users[jsmith][last] = 'Smith';

● set Users[jsmith][age] = long(42);

● get Users[jsmith];– => (column=last, value=Smith, timestamp=1287604215498000)

– => (column=first, value=John, timestamp=1287604214111000)

– => (column=age, value=42, timestamp=1287604216661000)

– Returned 3 results.

● del Users[jsmith][age];

● del Users[jsmith];

~ schema / database

~ table (no explicit schema)

~ insert/update : set columns of row with id jsmith

~ select * from Users where id=jsmith

~ delete/update set null : remove columns of row or full row

Page 41: Elosztott, skálázódó adatbázis-kezelő rendszer - SZTAKI · Elosztott, skálázódó adatbázis-kezelő rendszer 2012. július 13. péntek Molnár András (modras@ilab.sztaki.hu)

Saját tapasztalatok

● Egy gépen, egy node-dal ...

● Több gépen ...

Page 42: Elosztott, skálázódó adatbázis-kezelő rendszer - SZTAKI · Elosztott, skálázódó adatbázis-kezelő rendszer 2012. július 13. péntek Molnár András (modras@ilab.sztaki.hu)

Itt a vége.

Köszönöm a figyelmet!

Page 43: Elosztott, skálázódó adatbázis-kezelő rendszer - SZTAKI · Elosztott, skálázódó adatbázis-kezelő rendszer 2012. július 13. péntek Molnár András (modras@ilab.sztaki.hu)