Βάση δεδομένων Zope

Η **Βάση Αντικειμένων Zope** (**Zope Object Database** ή **ZODB**) είναι μια αντικειμενοστρεφής βάση δεδομένων για τη διαφανή και μόνιμη αποθήκευση αντικειμένων της Python. Περιλαμβάνεται στον εξυπηρετητή εφαρμογών Ιστού Zope, αλλά μπορεί να χρησιμοποιηθεί και ανεξάρτητα από αυτόν.

Χαρακτηριστικά της ZODB μεταξύ άλλων: δοσοληψίες (transactions), ιστορία και αναίρεση (history/undo), διαφανώς συνδεόμενα αποθηκευτικά μέσα, ενσωματωμένη κρυφή μνήμη (caching), έλεγχος ταυτοχρονισμού πολλών εκδόσεων (multiversion concurrency control, MVCC), και κλιμάκωση της απόδοσης στο δίκτυο (scalability) με τη χρήση των ZEO.

Η ZODB αποτελεί μια ώριμη λύση σε Python για αποθήκευση δεδομένων και χρησιμοποιείται σε εκατοντάδες χιλιάδες συστήματα σήμερα.

## Ιστορία
* Δημιουργήθηκε από τον Jim Fulton του Zope Corporation στα τέλη της δεκαετίας του 1990.
* Άρχισε σαν ένα απλό σύστημα μόνιμων αντικειμένων (Persistent Object System, POS) κατά την ανάπτυξη του Principia (το οποίο στη συνέχεια θα γινόταν το Zope)
* Η μονιμότητα της αποθήκευσης της ZODB χρησιμοποιεί την ExtensionClass, τον πρόδρομο της τρέχουσας υλοποίησης μετακλάσεων της Python
* Το ZODB 3 άλλαξε όνομα όταν υλοποιήθηκε σημαντικές αρχιτεκτονικές αλλαγές.
* Το ZODB 4 ήταν ένα εγχείρημα που κράτησε λίγο χρόνο, με στόχο να υλοποιηθεί όλο το πακέτο της ZODB 3 με τη χρήση 100% Python.

## ZEO
Τα ZEO (Zope Enterprise Objects) είναι μια υλοποίηση αποθηκευτικού χώρου για τη ZODB που επιτρέπει πολλαπλές διεργασίες πελατών να κρατούν αντικείμενα σε έναν εξυπηρετητή ZEO. Αυτό επιτρέπει τη διαφανή κλήση, αλλά ο εξυπηρετητής ZEO εξακολουθεί να αποτελεί ένα μοναδικό σημείο αποτυχίας (single point of failure).

## Συνδεόμενοι αποθηκευτικοί χώροι (Pluggable Storages)
* Αποθηκευτικός χώρος δικτύου (Network Storage, γνωστό και σαν ZEO) - Επιτρέπει σε πολλές διεργασίες σε Python να φορτώνουν και να αποθηκεύουν ταυτόχρονα στιγμιότυπα.
* Αποθηκευτικός χώρος αρχείου (File Storage) - Επιτρέπει σε μια διεργασία σε Python να αλληλεπιδρά με ένα αρχείο στο δίσκο.
* Σχεσιακός αποθηκευτικός χώρος ("relstorage") - Επιτρέπει την αποθήκευση σε μια σχεσιακή βάση δεδομένων (RDBMS).
* Αποθηκευτικός χώρος φακέλου (Directory Storage) - Κάθε μόνιμο δεδομένο αποθηκεύεται σαν ένα ξεχωριστό αρχείο στο σύστημα αρχείων, παρόμοιο με το FSFS του Subversion.
* Αποθηκευτικός χώρος επίδειξης (Demo Storage) - Οπίσθιο τμήμα της βάσης που χρησιμοποιεί τη μνήμη για αποθήκευση.
* BDBStorage - Χρησιμοποιεί τη μηχανή του Berkeley DB. Δε χρησιμοποιείται πια.

### Τεχνολογίες Διαχείρισης Σφαλμάτων (Failover Technologies)

* Zope Replication Services (ZRS) - Εμπορικό πρόσθετο που αφαιρεί το μοναδικό σημείο αποτυχίας, επιτρέποντας hot backup για την εγγραφή και εξισορρόπηση φόρτου (load-balancing) για την ανάγνωση.
* zeoraid - Λύση ανοιχτού κώδικα που παρέχει έναν proxy εξυηρετητή δικτύου που κατανέμει τους αποθηκευτικούς χώρους των αντικειμένων και επιτρέπει την ανάκτηση από μια σειρά από εξυπηρετητές δικτύου.
* relstorage - Χρησιμοποιούνται τεχνολογίες RDBMS, επομένως δε χρειάζεται ο εξυπηρετητής ZEO.
* NEO - Κατανεμημένη υλοποίηση του αποθηκευτικού χώρου (ανοχή σε σφάλματα, εξισορρόπηση φορτίου). Δεν είναι ακόμα έτοιμη για χρήση σε περιβάλλοντα παραγωγής.

## Δείτε επίσης
* Αντικειμενοστρεφείς βάσεις δεδομένων

## Εξωτερικοί σύνδεσμοι
* Introduction to the Zope Object Database 
* ZODB/ZEO Programming Guide 

Κατηγορία:Βάσεις δεδομένων