Nike Dattani Oxford University Xuan Li Lawrence Berkeley National Lab.
Oracle’s Berkeley DB
description
Transcript of Oracle’s Berkeley DB
Oracle’s Berkeley DB
Νικόλας Εξαρχάκος
Τι είναι το Oracle’s Berkeley DB
Μία embedded database που παρέχει υψηλή απόδοση, αξιοπιστία και προσαρμοστικότητα.
Μία non-relational system engine To application χρησιμοποιεί απλά function
calls. Μία βιβλιοθήκη που συνδέεται άμεσα με το
application. Δεν είναι ένα client-server architecture.
Ιστορική αναδρομή
Δημιουργήθηκε και αναπτύχθηκε στο University of California at Berkeley (1986-1994)
H έρευνα συνεχίστηκε στο Harvard University. Δημιουργία Sleepycat Software μετά από
αίτημα για επέκταση του Berkeley DB (1996). Αγοράστηκε το Φεβρουάριο του 2006 από την
Oracle.
Πλεονεκτήματα
Library/Not a language Μικρό μέγεθος Γρήγορη και ασφαλής αποθήκευση Δε χρειάζεται ξεχωριστός server Δε χρειάζεται κάποιος administrator H διεπαφή προγραμματισμού είναι γενική και εύκολη Πολλά APIs (C,C++,Perl,Tcl,Java) Μεγάλα keys/data (μέχρι 2^32 bytes) Είναι open source
Μειονεκτήματα
Δεν είναι εύκολη η επικοινωνία με σχεσιακές βάσεις Δεν υπάρχει SQL interface O προγραμματιστής πρέπει να γνωρίζει επακριβώς τις
ανάγκες της εφαρμογής Πρόβλεψη στατικών queries Δυσκολία οταν η εφαρμογή απαιτεί πολλών ειδών
queries.
Εκδόσεις του Berkeley DB
Berkeley DB Berkeley DB XML Berkeley DB Java Edition
Εγκατάσταση 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
Εγκατάσταση Berkeley DB
Το Berkeley DB είναι μία βιβλιοθήκη
Ίδια διεύθυνση μνήμης με το application. Το Berkeley DB ενσωματώνεται άμεσα στο
εκτελέσιμο αρχείο. Δεν υπάρχει ένας ξεχωριστός server (embedded). Υποστήριξη χιλιάδων ταυτόχρονων threads. Έλεγχος ταυτοχρονίας,επαναφερσιμότητα.
Το 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
Το Berkeley DB χρησιμοποιεί το Application’s Data Model
Το format ενός record σε μια σχεσιακή βάση εξυπηρετεί τη βάση δεδομένων.
Δεν εξυπηρετεί την εφαρμογή. Αν θέλουμε να μετακινήσουμε δεδομένα
από και προς τη βάση τότε:– Η εφαρμογή πρέπει να μεταφράζει ανάμεσα
στο format του record της εφαρμογής και της βάσης δεδομένων.
Key/data pairs
Ένα record αποτελείται από ένα key και ένα data. Keys και data είναι bit strings μεταβλητού μεγέθους.
– Οι εφαρμογές καθορίζουν το περιεχόμενο και τη σημασία τους.
– Το Berkeley DB δε γνωρίζει τίποτα για την εσωτερική δομή των keys/data.
– To Berkeley DB ενσωματώνει λειτουργίες των hash functions για τα keys.
Keys/data αποθηκεύονται σε απλές δομές(DBTs).
DBT
Indexing
Δε χρειάζεται administration
Πολλοί χρήστες δε χρειάζεται να ξέρουν πως να κάνουν administration μια βάση.
Όλες οι εργασίες του administration γίνονται μέσω των Berkleys DB APIs.
Οι χρήστες δε γνωρίζουν ότι το Berkeley DB είναι μέρος των συστημάτων που χρησιμοποιούν.
Υψηλή παραμετροποίηση
Τροποποίηση του μεγέθους των pages/cache. Buffer replacement policy. Policies για duplicate keys στα tables. Ενεργοποίηση ταυτοχρονίας,locking και transactions. Μηχανισμοί εντοπισμού και αποφυγής του deadlock κ.α.
Η παραμετροποίηση γίνεται σύμφωνα με τις ανάγκες του application.
Δυνατότητες του Berkeley DB
Messaging Storage Systems Switching and Routing Logging Caching για Scalable Web Applications Devices
Environments, Databases and Files
Create/Open/Recover Environment
Create/Open Database
Transaction Read/Modify/Write
Ένα απλό application
Αποθήκευση στοιχείων
Ανάκτηση/Διαγραφή στοιχείων
Κλείσιμο της βάσης
Dynamic data, static queries
Άριστες επιδόσεις με προβλέψιμο data access. Ιδανικό σε applications, όπου τα queries είναι
στατικά. Οι developers πρέπει να μπορούν να
προβλέψουν τα data access της εφαρμογής. Οι σχεσιακές βάσεις αντίθετα, είναι πολύ καλές
στο να απαντούν νέα queries.
Σύγκριση σχεσιακών,embedded και Berkeley DB
Συνεργασία σχεσιακής και embedded
Μελλοντικές εκδοχές
Δημιουργία embedded βάσεων από ένα RDBMS.
Συγχρονισμός με τον γονέα RDBMS. Εντοπισμός, που μια εφαρμογή θα
εξυπηρετούνταν καλύτερα από μία embedded βάση.
Συμπεράσματα
Γρήγορο αξιόπιστο και αποδοτικό για ένα πλήθος εφαρμογών σήμερα.
Μία ενδιάμεση λύση μεταξύ μιας πολύπλοκης σχεσιακής βάσης και ενός low-level file system.
Χρησιμοποιεί ένα πολύ απλό και προσαρμόσιμο σχεδιασμό και παρέχει τα storage services μίας σχεσιακής βάσης
Το “small-footprint” του 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
Τέλος
Ευχαριστώ για την προσοχή σας!
– ΑΠΟΡΙΕΣ;– ΕΡΩΤΗΣΕΙΣ;