Μετάβαση στο περιεχόμενο

SQLite: Διαφορά μεταξύ των αναθεωρήσεων

Από τη Βικιπαίδεια, την ελεύθερη εγκυκλοπαίδεια
Περιεχόμενο που διαγράφηκε Περιεχόμενο που προστέθηκε
Νέα σελίδα: {{Infobox | bodyclass = vevent | bodystyle = {{{bodystyle|}}} | title = SQLite | titleclass = summary | labelstyle = white-space: nowrap; | image = {{#invoke:Info...
(Καμία διαφορά)

Έκδοση από την 15:30, 21 Ιουλίου 2014

SQLite
ΑνάπτυξηD. Richard Hipp
Αρχική έκδοσηΑύγουστος 2000
Γραμμένο σεC
Λειτουργικό σύστημαΔιαλειτουργικό
Μέγεθος658 KiB
ΕίδοςRDBMS (ενσωματωμένη)
ΆδειαΔημόσιος τομέας[1]
Ιστότοποςsqlite.org

Το SQLite (/ˌɛskjuːɛlˈlt/[2] or /ˈskwəl.lt/[3]) είναι ένα Σύστημα διαχείρισης σχεσιακών βάσεων δεδομένων που περιέχεται σε μια C προγραμματιστική βιβλιοθήκη. Σε αντίθεση με άλλα συστήματα διαχείρισης βάσης δεδομένων, το SQLite δεν είναι μια ξεχωριστή διεργασία που προσπελάζεται από μια εφαρμογή πελάτη, αλλά ένα ενσωματωμένο μέρος της.

Το SQLite είναι συμβατό με ACID και υλοποιεί το μεγαλύτερο μέρος του προτύπου SQL, χρησιμοποιώντας μια δυναμική και εβδομαδιαία τυπωμένη SQL σύνταξη που δεν εγγυάται την ακεραιότητα του τομέα.

Το SQLite είναι μια δημοφιλής επιλογή ως ενσωματωμένη βάση δεδομένων για τοπική αποθήκευση ή αποθήκευση πελάτη σε λογισμικό εφαρμογής όπως ως φυλλομετρητής. Είναι η πιο πλατιά αναπτυσσόμενη μηχανή βάσης δεδομένων και χρησιμοποιείται σήμερα από πολλούς φυλλομετρητές ευρείας χρήσης , από λειτουργικά συστήματα και από ενσωματωμένα συστήματα, μεταξύ άλλων.[4] Το SQLite έχει συνδέσεις με πολλές γλώσσες προγραμματισμού.

Η πηγαία γλώσσα για το SQLite είναι στο public domain.[1][5]

Σχεδιασμός

Αντίθετα με τα συστήματα διαχείρισης βάσεων δεδομένων μορφής πελάτη-διακομιστή, η μηχανή SQLite δεν έχει αυτόνομες διεργασίες με τις οποίες επικοινωνεί το πρόγραμμα της εφαρμογής. Αντίθετα, η βιβλιοθήκη SQLite είναι συνδεμένη και έτσι γίνεται ένα ενσωματωμένο μέρος του προγράμματος εφαρμογής. (Σε αυτό, το SQLite ακολουθεί το προηγούμενο του Informix SE του c. 1984) Η βιβλιοθήκη μπορεί επίσης να κληθεί δυναμικά. Το πρόγραμμα της εφαρμογής χρησιμοποιεί τη λειτουργικότητα του SQLite μέσα από απλές κλήσεις συνάρτησης, που μειώνουν την καθυστέρηση στην πρόσβαση της βάσης δεδομένων: οι κλήσεις της συνάρτησης μέσα από μια απλή διεργασία είναι πιο αποτελεσματικές από την διεργασική επικοινωνία. Το SQLite αποθηκεύει την συνολική βάση δεδομένων (ορισμούς, πίνακες, δείκτες και τα ίδια τα δεδομένα) ως ένα μοναδικό διαλειτουργικό αρχείο στη μηχανή ενός οικοδεσπότη. Υλοποιεί αυτόν τον απλό σχεδιασμό με κλείδωμα όλου του αρχείου της βάσης δεδομένων κατά τη διάρκεια της εγγραφής. Το SQLite διαβάζει λειτουργίες που μπορεί να είναι πολυλειτουργικές, αν και οι εγγραφές μπορούν να γίνουν μόνο με τη σειρά.

Ιστορικό

Ο D. Richard Hipp σχεδίασε το SQLite την άνοιξη του 2000 ενώ δούλευε στη General Dynamics σε συμβόλαιο με το United States Navy.[6] Ο Hipp σχεδίαζε λογισμικό για ενσωματωμένη χρήση σε καθοδηγούμενους καταστροφείς πυραύλων, που αρχικά βασίστηκε σε HP-UX με μια βάση δεδομένων IBM Informix παρασκηνίου. Οι σκοποί σχεδίασης του SQLite ήταν να επιτρέπει στο πρόγραμμα να λειτουργήσει χωρίς εγκατάσταση ενός συστήματος διαχείρισης βάσης δεδομένων ή χωρίς να απαιτείται ένας διαχειριστής βάσης δεδομένων. Τον Αύγουστο του 2000, εκδόθηκε το SQLite 1.0, με βάση το gdbm (Διαχειριστής βάσης δεδομένων GNU). Το SQLite 2.0 αντικατέστησε το gdbm με μια προσαρμοσμένη εφαρμογή B-tree, προσθέτοντας υποστήριξη για transactions. Στο SQLite 3.0, που χρηματοδοτήθηκε μερικώς από την America Online, προστέθηκε διεθνοποίηση, manifest typing και άλλες σημαντικές βελτιώσεις.

Το 2011 ο Hipp ανακοίνωσε τα σχέδια του να προσθέσει μια διεπαφή UnQL στις βάσεις δεδομένων SQLite και να αναπτύξει το UnQLite, μια ενσωματώσιμη κειμενοστραφή βάση δεδομένων.[7] Ο Howard Chu μετέφερε το SQLite 3.7.7.1 για να χρησιμοποιεί Openldap MDB αντί για τον αρχικό κώδικα Btree και το απεκάλεσε προσαρμογή στο SQLite. Σε μια δοκιμή εισαγωγής 1000 εγγραφών ήταν 20 φορές πιο γρήγορο.[8][9]

Χαρακτηριστικά

Το SQLite υλοποιεί το μεγαλύτερο μέρος του προτύπου SQL-92 για το SQL, αλλά του λείπουν κάποια χαρακτηριστικά. Για παράδειγμα, έχει μερική υποστήριξη για εναύσματα και δεν μπορεί να γράψει σε προβολές (υποστηρίζει όμως ΣΤΗ ΘΕΣΗ τους εναύσματα που παρέχουν αυτή τη λειτουργία). Αν και υποστηρίζει σύνθετα ερωτήματα, έχει ακόμα περιορισμένη υποστήριξη για ALTER TABLE, καθώς δεν μπορεί να τροποποιήσει ή να διαγράψει στήλες.[10]

Το SQLite χρησιμοποιεί ένα ασυνήθιστο σύστημα τύπου για μια συμβατή με SQL DBMS· αντί της απόδοσης ενός τύπου σε μια στήλη όπως συμβαίνει στα περισσότερα συστήματα βάσεων δεδομένων SQL, οι τύποι αποδίδονται σε ατομικές τιμές· με όρους γλώσσας είναι έχει δυναμικό τύπο. Επιπλέον, έχει αδύναμο τύπο σε μερικούς από τους ίδιους τρόπους που έχει η Perl: κάποιος μπορεί να εισάγει μια συμβολοσειρά σε μια στήλη ακεραίων (αν και το SQLite θα προσπαθήσει αρχικά να μετατρέψει τη συμβολοσειρά σε ακέραιο, αν ο προτιμώμενος τύπος της στήλης είναι ακέραιος). Αυτό προσθέτει ευκινησία στις στήλες, ειδικά όταν συνδέεται σε έναν δυναμικό τύπο γλώσσας σεναρίου. Όμως, η τεχνική δεν μεταφέρεται σε άλλα προϊόντα SQL. Μια συνηθισμένη κριτική είναι ότι σε ένα σύστημα τύπου SQLite λείπει ο μηχανισμός ολοκληρωμένων δεδομένων που παρέχεται από από στήλες με δυναμικό τύπο σε άλλα προϊόντα. Ο ιστότοπος του SQLite περιγράφει μια κατάσταση "αυστηρής συγγένειας", αλλά αυτό το χαρακτηριστικό δεν έχει ακόμα προστεθεί[11] Όμως, μπορεί να υλοποιηθεί με περιορισμούς όπως CHECK(typeof(x)='integer').[6]

Πολλές διεργασίες υπολογιστή ή νήματα μπορεί να προσπελάζουν την ίδια βάση δεδομένων ταυτόχρονα. Πολλές προσπελάσεις ανάγνωσης μπορούν να ικανοποιηθούν παράλληλα. Μια πρόσβαση εγγραφής μπορεί να ικανοποιηθεί μόνο αν καμιά άλλη πρόσβαση δεν εξυπηρετείται την ίδια στιγμή. Αλλιώς, η πρόσβαση εγγραφής αποτυγχάνει με ένα κώδικα σφάλματος (ή μπορεί να ξαναγίνει αυτόματη προσπάθεια μέχρι τη λήξη χρόνου). Αυτή η ταυτόχρονη κατάσταση πρόσβασης μπορεί να αλλάξει όταν αντιμετωπίζονται προσωρινοί πίνακες. Αυτός ο περιορισμός χαλάρωσε στην έκδοση 3.7 όταν η write-ahead logging (WAL) ενεργοποιήθηκε ενεργοποιώντας ταυτόχρονες αναγνώσεις και εγγραφές.[12]

Ένα αυτόνομο πρόγραμμα που λέγεται sqlite3 παρέχεται που μπορεί να χρησιμοποιηθεί για να δημιουργήσει μια βάση δεδομένων, να ορίσει τους πίνακες μέσα της, να εισάγει και να αλλάξει γραμμές, να εκτελέσει ερωτήματα και να διαχειριστεί ένα αρχείο βάσης δεδομένων SQLite. Αυτό το πρόγραμμα είναι ένα μοναδικό εκτελέσιμο αρχείο στη μηχανή οικοδεσπότη. Εξυπηρετεί επίσης ως παράδειγμα για εγγραφή εφαρμογών που χρησιμοποιούν τη βιβλιοθήκη SQLite.

Η πλήρης υποστήριξη Unicode του SQLite είναι προαιρετική.[13]

Το SQLite έχει αυτόματη δοκιμή οπισθοχώρησης πριν από κάθε έκδοση.[14] Πάνω από 2 εκατομμύρια δοκιμές εκτελούνται ως μέρος της της επαλήθευσης της έκδοσης. Ξεκινώντας στις 10 Αυγούστου 2009 με την έκδοση SQLite 3.6.17, οι εκδόσεις του SQLite έχουν 100% κάλυψη των δοκιμών κλάδου, ένα από τα συστατικά της κάλυψης κώδικα.

Από την έκδοση 3.8.2 μπορείτε να δημιουργήσετε πίνακες χωρίς rowid.[15]

Ανάπτυξη

Η ανάπτυξη του SQLite αποθηκεύει τις αναθεωρήσεις του πηγαίου κώδικα του στο Fossil, ένα σύστημα ελέγχου διανεμόμενης έκδοσης που το ίδιο χτίζεται σε μια βάση δεδομένων του SQLite.[16]

Αποδοχή

Γλώσσες προγραμματισμού

Το SQLite έχει συνδέσεις για έναν μεγάλο αριθμό programming languageγλωσσών προγραμματισμού, που συμπεριλαμβάνουν :

Ενδιάμεσο λογισμικό

  • Η προσαρμογή ADO.NET, αναπτύχθηκε αρχικά από τον Robert Simpson, διατηρείται από κοινού με τους προγραμματιστές του SQLite από τον Απρίλιο του 2010.[21]
  • Ο οδηγός ODBC έχει αναπτυχθεί και συντηρείται ξεχωριστά από τον Christian Werner.[22] Ο οδηγός ODBC του Werner αποτελεί τη συνιστώμενη μέθοδο σύνδεση για πρόσβαση της SQLite από το OpenOffice.org.[23]
  • Το πρόγραμμα COM (ActiveX) κάνει προσβάσιμο το SQLite στα Windows σε γλώσσες σεναρίου όπως JScript and VBScript. Αυτό προσθέτει δυνατότητες βάσης δεδομένων στις εφαρμογές HTML (HTA).[24]
  • Το XULRunner χρησιμοποιεί SQLite

Φυλλομετρητές ιστού

  • Οι φυλλομετρητές Google Chrome, Opera, Safari και ο Android Browser επιτρέπουν την αποθήκευση πληροφοριών καθώς και την ανάκτησή τους από μια βάση δεδομένων SQLite μέσα από τον φυλλομετρητή, χρησιμοποιώντας την τεχνολογία Web SQL Database.
  • Τα Mozilla Firefox και Mozilla Thunderbird αποθηκεύουν πολλά δεδομένα διαμόρφωσης (σελιδοδείκτες, μπισκότα, επαφές κ.λ.π.) σε εσωτερικά διαχειριζόμενες βάσεις δεδομένων SQLite και προσφέρουν ακόμα ένα πρόσθετο για να διαχειριστείτε βάσεις δεδομένων SQLite.

Πλαίσια εφαρμογών ιστών

  • Το Bugzilla, η βάση δεδομένων σφαλμάτων του Mozilla γραμμένη σε Perl μπορεί να χρησιμοποιήσει το SQLite για να αποθηκεύσει δεδομένα και ρυθμίσεις.
  • Το Django, ένα πλαίσιο ιστού Python, υποστηρίζει το SQLite3 από προεπιλογή.[25]
  • Από την έκδοση 7, το Drupal, ένα σύστημα διαχείρισης περιεχομένου με βάση το PHP για τη δημιουργία ιστότοπων και ιστολογίων, έχει μια επιλογή για εγκατάσταση χρησιμοποιώντας SQLite.[26]
  • Το προεπιλεγμένο σύστημα διαχείρισης βάσεων δεδομένων του Ruby on Rails είναι επίσης SQLite.
  • Το web2py, ένα πλαίσιο ιστού Python, έχει ως προεπιλεγμένο σύστημα διαχείρισης βάσεων δεδομένων το SQLite.

Διάφορα

  • Το Skype είναι μια ευρέως αναπτυσσόμενη εφαρμογή που χρησιμοποιεί το SQLite.[27]
  • Τα Συστήματα Adobe χρησιμοποιούν το SQLite ως μορφή των αρχείων τους στο Adobe Photoshop Lightroom, μια πρότυπη βάση δεδομένων στο Adobe AIR και εσωτερικά στο Adobe Reader.[28]
  • Η Service Management Facility που χρησιμοποιείται για διαχείριση υπηρεσιών στο Solaris και τα λειτουργικά συστήματα OpenSolaris, χρησιμοποιούν εσωτερικά SQLite.
  • Το Flame, ένα πρόγραμμα για κακόβουλο λογισμικό που χρησιμοποιείται για cyberespionage, χρησιμοποιεί το SQLite για την αποθήκευση των δεδομένων που συλλέγει.
  • Η γλώσσα προγραμματισμού Xojo έχει ενσωματωμένη υποστήριξη του SQLite και στην επιφάνεια εργασίας και στα web frameworks.

Λειτουργικά συστήματα

Λόγω του μικρού του μεγέθους, το SQLite είναι καλά προσαρμοσμένο σε ενσωματωμένα συστήματα και περιλαμβάνεται επίσης στα:

Όμως, είναι επίσης κατάλληλο για λειτουργικά συστήματα επιφάνειας εργασίας· η Apple το υιοθέτησε ως μια επιλογή στο API δεδομένων πυρήνα του OS X από την αρχική υλοποίηση σε Mac OS X 10.4 και πέρα καθώς και για τη διαχείριση βίντεο και τραγουδιών στο iPhone.

Δείτε επίσης

Αναφορές

  1. 1,0 1,1 «SQLite Copyright». sqlite.org. Ανακτήθηκε στις 17 Μαΐου 2010. 
  2. D. Richard Hipp (presenter) (31 Μαΐου 2006). An Introduction to SQLite (video). Google Inc. Συμβαίνει στα 00:01:14. Ανακτήθηκε στις 23 Μαρτίου 2010. [...] ess-kju-ellite [...] 
  3. D. Richard Hipp (presenter) (31 Μαΐου 2006). An Introduction to SQLite. Google Inc. Συμβαίνει στα 00:48:15. Ανακτήθηκε στις 23 Μαρτίου 2010. [...] sequelite [...] 
  4. «Most Widely Deployed SQL Database Estimates». Sqlite.org. Ανακτήθηκε στις 11 Μαΐου 2011. 
  5. «The source code for SQLite is in the public domain». Sqlite.org. Ανακτήθηκε στις 11 Μαΐου 2011. 
  6. 6,0 6,1 Owens, Michael (2006). The Definitive Guide to SQLite. Apress. doi:10.1007/978-1-4302-0172-4_1. ISBN 978-1-59059-673-9. 
  7. «Interview: Richard Hipp on UnQL, a New Query Language for Document Databases». InfoQ. 4 Αυγούστου 2011. Ανακτήθηκε στις 5 Οκτωβρίου 2011. 
  8. MDB: A Memory-Mapped Database and Backend for OpenLDAP, Howard Chu, [MDB: A Memory-Mapped Database and Backend for OpenLDAP LDAPCon 2011].
  9. sqlightning source code.
  10. «SQL Features That SQLite Does Not Implement». SQLite. 1 Ιανουαρίου 2009. Ανακτήθηκε στις 14 Οκτωβρίου 2009. 
  11. «Frequently Asked Questions». SQLite. 26 Ιανουαρίου 2009. Ανακτήθηκε στις 7 Φεβρουαρίου 2009. 
  12. «Write Ahead Logging in SQLite 3.7». SQLite. Ανακτήθηκε στις 3 Σεπτεμβρίου 2011. WAL provides more concurrency as readers do not block writers and a writer does not block readers. Reading and writing can proceed concurrently 
  13. «Case-insensitive matching of Unicode characters does not work». SQLite Frequently Asked Questions. Sqlite.org. Ανακτήθηκε στις 11 Μαΐου 2011. 
  14. «How SQLite Is Tested». SQLite. Ανακτήθηκε στις 12 Σεπτεμβρίου 2009. 
  15. ReleaseLog SQLite.org, visited 8th December 2013
  16. «Fossil: Fossil Performance». Fossil-scm.org. 23 Αυγούστου 2009. Ανακτήθηκε στις 12 Σεπτεμβρίου 2009. 
  17. JSPDO JavaScript database access abstraction API
  18. DBD::SQLite: Perl DBI Interface to SQLite
  19. PySQLite: Python bindings for SQLite
  20. SQLite/Ruby: Ruby bindings for SQLite
  21. http://system.data.sqlite.org/index.html/doc/trunk/www/index.wiki
  22. http://www.ch-werner.de/sqliteodbc/
  23. http://documentation.openoffice.org/HOW_TO/data_source/SQLite.pdf
  24. «sqlite — Sqlite Wrappers». SQLite. 7 Φεβρουαρίου 2009. Ανακτήθηκε στις 7 Φεβρουαρίου 2009. 
  25. «Databases». Django Documentation. Django Software Foundation. Ανακτήθηκε στις 13 Νοεμβρίου 2012. 
  26. «Drupal 7». 
  27. «Skype client using SQLite?». Mail-archive.com. 28 Αυγούστου 2007. Ανακτήθηκε στις 14 Ιουνίου 2010. 
  28. «Well-Known Users of SQLite». Sqlite.org. Ανακτήθηκε στις 14 Ιουνίου 2010. 
  29. «Well-known Users of SQLite». Sqlite.org. Ανακτήθηκε στις 14 Ιουνίου 2010. 

Παραπομπές

Εξωτερικοί σύνδεσμοι