Download - Oracle’s Berkeley DB

Transcript
Page 1: Oracle’s Berkeley DB

Oracle’s Berkeley DB

Νικόλας Εξαρχάκος

Page 2: Oracle’s Berkeley DB

Τι είναι το Oracle’s Berkeley DB

Μία embedded database που παρέχει υψηλή απόδοση, αξιοπιστία και προσαρμοστικότητα.

Μία non-relational system engine To application χρησιμοποιεί απλά function

calls. Μία βιβλιοθήκη που συνδέεται άμεσα με το

application. Δεν είναι ένα client-server architecture.

Page 3: Oracle’s Berkeley DB

Ιστορική αναδρομή

Δημιουργήθηκε και αναπτύχθηκε στο University of California at Berkeley (1986-1994)

H έρευνα συνεχίστηκε στο Harvard University. Δημιουργία Sleepycat Software μετά από

αίτημα για επέκταση του Berkeley DB (1996). Αγοράστηκε το Φεβρουάριο του 2006 από την

Oracle.

Page 4: Oracle’s Berkeley DB

Πλεονεκτήματα

Library/Not a language Μικρό μέγεθος Γρήγορη και ασφαλής αποθήκευση Δε χρειάζεται ξεχωριστός server Δε χρειάζεται κάποιος administrator H διεπαφή προγραμματισμού είναι γενική και εύκολη Πολλά APIs (C,C++,Perl,Tcl,Java) Μεγάλα keys/data (μέχρι 2^32 bytes) Είναι open source

Page 5: Oracle’s Berkeley DB

Μειονεκτήματα

Δεν είναι εύκολη η επικοινωνία με σχεσιακές βάσεις Δεν υπάρχει SQL interface O προγραμματιστής πρέπει να γνωρίζει επακριβώς τις

ανάγκες της εφαρμογής Πρόβλεψη στατικών queries Δυσκολία οταν η εφαρμογή απαιτεί πολλών ειδών

queries.

Page 6: Oracle’s Berkeley DB

Εκδόσεις του Berkeley DB

Berkeley DB Berkeley DB XML Berkeley DB Java Edition

Page 7: Oracle’s Berkeley DB

Εγκατάσταση Berkeley DB

Download Oracle’s Berkeley DBhttp://www.oracle.com/database/berkeley-db/index.html

Prepare Berkeley DB for compilationcd build_unix../dist/configure --prefix=/usr --enable-compat185 --enable-cxx

Compile the package:Make

Install the package:make docdir=/usr/share/doc/db-4.7.25 install

Page 8: Oracle’s Berkeley DB

Εγκατάσταση Berkeley DB

Page 9: Oracle’s Berkeley DB

Το Berkeley DB είναι μία βιβλιοθήκη

Ίδια διεύθυνση μνήμης με το application. Το Berkeley DB ενσωματώνεται άμεσα στο

εκτελέσιμο αρχείο. Δεν υπάρχει ένας ξεχωριστός server (embedded). Υποστήριξη χιλιάδων ταυτόχρονων threads. Έλεγχος ταυτοχρονίας,επαναφερσιμότητα.

Page 10: Oracle’s Berkeley DB

Το Berkeley DB δεν είναι query language

Προσφέρει APIs για insert,update,retrieve και delete.

Διαφορετικά interfaces για κάθε ενέργεια, μέσω method calls:– open() open the database in a prescribed fashion– close() closes the database– put() puts a record in database– get() gets record from database– del() deletes a record from the database

Page 11: Oracle’s Berkeley DB

Το Berkeley DB χρησιμοποιεί το Application’s Data Model

Το format ενός record σε μια σχεσιακή βάση εξυπηρετεί τη βάση δεδομένων.

Δεν εξυπηρετεί την εφαρμογή. Αν θέλουμε να μετακινήσουμε δεδομένα

από και προς τη βάση τότε:– Η εφαρμογή πρέπει να μεταφράζει ανάμεσα

στο format του record της εφαρμογής και της βάσης δεδομένων.

Page 12: Oracle’s Berkeley DB

Key/data pairs

Ένα record αποτελείται από ένα key και ένα data. Keys και data είναι bit strings μεταβλητού μεγέθους.

– Οι εφαρμογές καθορίζουν το περιεχόμενο και τη σημασία τους.

– Το Berkeley DB δε γνωρίζει τίποτα για την εσωτερική δομή των keys/data.

– To Berkeley DB ενσωματώνει λειτουργίες των hash functions για τα keys.

Keys/data αποθηκεύονται σε απλές δομές(DBTs).

Page 13: Oracle’s Berkeley DB

DBT

Page 14: Oracle’s Berkeley DB

Indexing

Page 15: Oracle’s Berkeley DB

Δε χρειάζεται administration

Πολλοί χρήστες δε χρειάζεται να ξέρουν πως να κάνουν administration μια βάση.

Όλες οι εργασίες του administration γίνονται μέσω των Berkleys DB APIs.

Οι χρήστες δε γνωρίζουν ότι το Berkeley DB είναι μέρος των συστημάτων που χρησιμοποιούν.

Page 16: Oracle’s Berkeley DB

Υψηλή παραμετροποίηση

Τροποποίηση του μεγέθους των pages/cache. Buffer replacement policy. Policies για duplicate keys στα tables. Ενεργοποίηση ταυτοχρονίας,locking και transactions. Μηχανισμοί εντοπισμού και αποφυγής του deadlock κ.α.

Η παραμετροποίηση γίνεται σύμφωνα με τις ανάγκες του application.

Page 17: Oracle’s Berkeley DB

Δυνατότητες του Berkeley DB

Messaging Storage Systems Switching and Routing Logging Caching για Scalable Web Applications Devices

Page 18: Oracle’s Berkeley DB

Environments, Databases and Files

Page 19: Oracle’s Berkeley DB

Create/Open/Recover Environment

Page 20: Oracle’s Berkeley DB

Create/Open Database

Page 21: Oracle’s Berkeley DB

Transaction Read/Modify/Write

Page 22: Oracle’s Berkeley DB

Ένα απλό application

Page 23: Oracle’s Berkeley DB

Αποθήκευση στοιχείων

Page 24: Oracle’s Berkeley DB

Ανάκτηση/Διαγραφή στοιχείων

Page 25: Oracle’s Berkeley DB

Κλείσιμο της βάσης

Page 26: Oracle’s Berkeley DB

Dynamic data, static queries

Άριστες επιδόσεις με προβλέψιμο data access. Ιδανικό σε applications, όπου τα queries είναι

στατικά. Οι developers πρέπει να μπορούν να

προβλέψουν τα data access της εφαρμογής. Οι σχεσιακές βάσεις αντίθετα, είναι πολύ καλές

στο να απαντούν νέα queries.

Page 27: Oracle’s Berkeley DB

Σύγκριση σχεσιακών,embedded και Berkeley DB

Page 28: Oracle’s Berkeley DB

Συνεργασία σχεσιακής και embedded

Page 29: Oracle’s Berkeley DB

Μελλοντικές εκδοχές

Δημιουργία embedded βάσεων από ένα RDBMS.

Συγχρονισμός με τον γονέα RDBMS. Εντοπισμός, που μια εφαρμογή θα

εξυπηρετούνταν καλύτερα από μία embedded βάση.

Page 30: Oracle’s Berkeley DB

Συμπεράσματα

Γρήγορο αξιόπιστο και αποδοτικό για ένα πλήθος εφαρμογών σήμερα.

Μία ενδιάμεση λύση μεταξύ μιας πολύπλοκης σχεσιακής βάσης και ενός low-level file system.

Χρησιμοποιεί ένα πολύ απλό και προσαρμόσιμο σχεδιασμό και παρέχει τα storage services μίας σχεσιακής βάσης

Το “small-footprint” του Berkeley DB είναι ένα σημαντικό πλεονέκτημα στον περιορισμένο κόσμο των καταναλωτικών συσκευών.

Page 31: Oracle’s Berkeley DB

Βιβλιογραφία

– http://www.oracle.com/database/berkeley-db/index.html

– Α Comparison of Berkeley DB and Relational Databases

– How Berkeley DB Fits into Oracle’s Overall Embedded Database Strategy

– http://en.wikipedia.org/wizi/Berkeley_DB– http://www.accu-usa.org/2001-08.html– http://pybsddb.sourceforge.net/reftoc.html

Page 32: Oracle’s Berkeley DB

Τέλος

Ευχαριστώ για την προσοχή σας!

– ΑΠΟΡΙΕΣ;– ΕΡΩΤΗΣΕΙΣ;