Αυτό το λήμμα χρειάζεται επιμέλεια ώστε να ανταποκρίνεται σε υψηλότερες προδιαγραφές ορθογραφικής και συντακτικής ποιότητας ή μορφοποίησης. Αίτιο: σύνδεσμοι στα αγγλικά Για περαιτέρω βοήθεια, δείτε τα λήμματα πώς να επεξεργαστείτε μια σελίδα και τον οδηγό μορφοποίησης λημμάτων. |
Γενικά | |
---|---|
Ημερ. Δημιουργίας | Αύγουστος 2000 |
Διανομή | |
Έκδοση | 3.47.1 (25 Νοέμβριος 2024)[1] |
Λειτουργικά | Ανεξάρτητο πλατφόρμας |
Ανάπτυξη | |
Υπευθ. ανάπτυξης | D. Richard Hipp |
Γραμμένο σε | C |
Σύνδεσμοι | |
Επίσημος ιστότοπος | |
https://sqlite.org | |
Αποθετήριο κώδικα | |
https://sqlite.org./docsrc |
Το SQLite (ɛskjuːɛlˈlaɪt/[2] ή /ˈsiːkwəl.laɪt/[3]) είναι ένα σύστημα διαχείρισης σχεσιακών βάσεων δεδομένων που περιέχεται σε μια C προγραμματιστική βιβλιοθήκη. Σε αντίθεση με άλλα συστήματα διαχείρισης βάσης δεδομένων, το SQLite δεν είναι μια ξεχωριστή διεργασία που προσπελάζεται από μια εφαρμογή πελάτη, αλλά ένα ενσωματωμένο μέρος της.
Το SQLite είναι συμβατό με ACID και υλοποιεί το μεγαλύτερο μέρος του προτύπου SQL, χρησιμοποιώντας μια δυναμική και εβδομαδιαία τυπωμένη SQL σύνταξη που δεν εγγυάται την ακεραιότητα του τομέα.
Το SQLite είναι μια δημοφιλής επιλογή ως ενσωματωμένη βάση δεδομένων για τοπική αποθήκευση ή αποθήκευση πελάτη σε λογισμικό εφαρμογής όπως ως φυλλομετρητής. Είναι η πιο πλατιά αναπτυσσόμενη μηχανή βάσης δεδομένων και χρησιμοποιείται σήμερα από πολλούς φυλλομετρητές ευρείας χρήσης , από λειτουργικά συστήματα και από ενσωματωμένα συστήματα, μεταξύ άλλων.[4] Το SQLite έχει συνδέσεις με πολλές γλώσσες προγραμματισμού.
Η πηγαία γλώσσα για το SQLite είναι κοινό κτήμα.[5][6]
Αντίθετα με τα συστήματα διαχείρισης βάσεων δεδομένων μορφής Μοντέλο πελάτη-διακομιστή, η μηχανή SQLite δεν έχει αυτόνομες διεργασίες με τις οποίες επικοινωνεί το πρόγραμμα της εφαρμογής. Αντίθετα, η βιβλιοθήκη SQLite είναι συνδεμένη και έτσι γίνεται ένα ενσωματωμένο μέρος του προγράμματος εφαρμογής. (Σε αυτό, το SQLite ακολουθεί το προηγούμενο του Informix SE του c. 1984) Η βιβλιοθήκη μπορεί επίσης να κληθεί δυναμικά. Το πρόγραμμα της εφαρμογής χρησιμοποιεί τη λειτουργικότητα του SQLite μέσα από απλές κλήσεις συνάρτησης, που μειώνουν την καθυστέρηση στην πρόσβαση της βάσης δεδομένων: οι κλήσεις της συνάρτησης μέσα από μια απλή διεργασία είναι πιο αποτελεσματικές από την Διαδιεργασική επικοινωνία. Το SQLite αποθηκεύει την συνολική βάση δεδομένων (ορισμούς, πίνακες, δείκτες και τα ίδια τα δεδομένα) ως ένα μοναδικό διαλειτουργικό αρχείο στη μηχανή ενός οικοδεσπότη. Υλοποιεί αυτόν τον απλό σχεδιασμό με κλείδωμα όλου του αρχείου της βάσης δεδομένων κατά τη διάρκεια της εγγραφής. Το SQLite διαβάζει λειτουργίες που μπορεί να είναι πολυλειτουργικές, αν και οι εγγραφές μπορούν να γίνουν μόνο με τη σειρά.
Ο D. Richard Hipp σχεδίασε το SQLite την άνοιξη του 2000 ενώ δούλευε στη General Dynamics σε συμβόλαιο με το Ναυτικό των Ηνωμένων Πολιτειών.[7] Ο Hipp σχεδίαζε λογισμικό για ενσωματωμένη χρήση σε καθοδηγούμενους καταστροφείς πυραύλων, που αρχικά βασίστηκε σε HP-UX με μια βάση δεδομένων IBM Informix παρασκηνίου. Οι σκοποί σχεδίασης του SQLite ήταν να επιτρέπει στο πρόγραμμα να λειτουργήσει χωρίς εγκατάσταση ενός συστήματος διαχείρισης βάσης δεδομένων ή χωρίς να απαιτείται ένας διαχειριστής βάσης δεδομένων. Τον Αύγουστο του 2000, εκδόθηκε το SQLite 1.0, με βάση το gdbm (Διαχειριστής βάσης δεδομένων GNU). Το SQLite 2.0 αντικατέστησε το gdbm με μια προσαρμοσμένη εφαρμογή B-tree, προσθέτοντας υποστήριξη για συναλλαγές. Στο SQLite 3.0, που χρηματοδοτήθηκε μερικώς από την America Online, προστέθηκε διεθνοποίηση και τοπικοποίηση, manifest typing και άλλες σημαντικές βελτιώσεις.
Το 2011 ο Hipp ανακοίνωσε τα σχέδια του να προσθέσει μια διεπαφή UnQL στις βάσεις δεδομένων SQLite και να αναπτύξει το UnQLite, μια ενσωματώσιμη κειμενοστραφή βάση δεδομένων.[8] Ο Howard Chu μετέφερε το SQLite 3.7.7.1 για να χρησιμοποιεί Openldap MDB αντί για τον αρχικό κώδικα Btree και το απεκάλεσε προσαρμογή στο SQLite. Σε μια δοκιμή εισαγωγής 1000 εγγραφών ήταν 20 φορές πιο γρήγορο.[9][10]
Το SQLite υλοποιεί το μεγαλύτερο μέρος του προτύπου SQL-92 για το SQL, αλλά του λείπουν κάποια χαρακτηριστικά. Για παράδειγμα, έχει μερική υποστήριξη για εναύσματα βάσης δεδομένων και δεν μπορεί να γράψει σε προβολή (βάσης δεδομένων) (υποστηρίζει όμως ΣΤΗ ΘΕΣΗ τους εναύσματα που παρέχουν αυτή τη λειτουργία). Αν και υποστηρίζει σύνθετα ερωτήματα, έχει ακόμα περιορισμένη υποστήριξη για ALTER TABLE, καθώς δεν μπορεί να τροποποιήσει ή να διαγράψει στήλες.[11]
Το SQLite χρησιμοποιεί ένα ασυνήθιστο Σύστημα τύπων για μια συμβατή με SQL DBMS· αντί της απόδοσης ενός τύπου σε μια στήλη όπως συμβαίνει στα περισσότερα συστήματα βάσεων δεδομένων SQL, οι τύποι αποδίδονται σε ατομικές τιμές· με όρους γλώσσας είναι έχει δυναμικό τύπο. Επιπλέον, έχει αδύναμο τύπο σε μερικούς από τους ίδιους τρόπους που έχει η Perl: κάποιος μπορεί να εισάγει μια Συμβολοσειρά σε μια στήλη ακεραίων (αν και το SQLite θα προσπαθήσει αρχικά να μετατρέψει τη συμβολοσειρά σε ακέραιο, αν ο προτιμώμενος τύπος της στήλης είναι ακέραιος). Αυτό προσθέτει ευκινησία στις στήλες, ειδικά όταν συνδέεται σε έναν δυναμικό τύπο γλώσσας σεναρίου. Όμως, η τεχνική δεν μεταφέρεται σε άλλα προϊόντα SQL. Μια συνηθισμένη κριτική είναι ότι σε ένα σύστημα τύπου SQLite λείπει ο μηχανισμός ολοκληρωμένων δεδομένων που παρέχεται από από στήλες με δυναμικό τύπο σε άλλα προϊόντα. Ο ιστότοπος του SQLite περιγράφει μια κατάσταση "αυστηρής συγγένειας", αλλά αυτό το χαρακτηριστικό δεν έχει ακόμα προστεθεί[12] Όμως, μπορεί να υλοποιηθεί με περιορισμούς όπως CHECK(typeof(x)='integer')
.[7]
Πολλές διεργασίες υπολογιστή ή νήματα μπορεί να προσπελάζουν την ίδια βάση δεδομένων ταυτόχρονα. Πολλές προσπελάσεις ανάγνωσης μπορούν να ικανοποιηθούν παράλληλα. Μια πρόσβαση εγγραφής μπορεί να ικανοποιηθεί μόνο αν καμιά άλλη πρόσβαση δεν εξυπηρετείται την ίδια στιγμή. Αλλιώς, η πρόσβαση εγγραφής αποτυγχάνει με ένα κωδικό σφάλματος (ή μπορεί να ξαναγίνει αυτόματη προσπάθεια μέχρι τη λήξη χρόνου). Αυτή η ταυτόχρονη κατάσταση πρόσβασης μπορεί να αλλάξει όταν αντιμετωπίζονται προσωρινοί πίνακες. Αυτός ο περιορισμός χαλάρωσε στην έκδοση 3.7 όταν η write-ahead logging (WAL) ενεργοποιήθηκε ενεργοποιώντας ταυτόχρονες αναγνώσεις και εγγραφές.[13]
Ένα αυτόνομο πρόγραμμα που λέγεται sqlite3
παρέχεται που μπορεί να χρησιμοποιηθεί για να δημιουργήσει μια βάση δεδομένων, να ορίσει τους πίνακες μέσα της, να εισάγει και να αλλάξει γραμμές, να εκτελέσει ερωτήματα και να διαχειριστεί ένα αρχείο βάσης δεδομένων SQLite. Αυτό το πρόγραμμα είναι ένα μοναδικό εκτελέσιμο αρχείο στη μηχανή οικοδεσπότη. Εξυπηρετεί επίσης ως παράδειγμα για εγγραφή εφαρμογών που χρησιμοποιούν τη βιβλιοθήκη SQLite.
Η πλήρης υποστήριξη Unicode του SQLite είναι προαιρετική.[14]
Το SQLite έχει αυτόματη δοκιμή οπισθοχώρησης πριν από κάθε έκδοση.[15] Πάνω από 2 εκατομμύρια δοκιμές εκτελούνται ως μέρος της της επαλήθευσης της έκδοσης. Ξεκινώντας στις 10 Αυγούστου 2009 με την έκδοση SQLite 3.6.17, οι εκδόσεις του SQLite έχουν 100% κάλυψη των δοκιμών κλάδου, ένα από τα συστατικά της κάλυψης κώδικα.
Από την έκδοση 3.8.2 μπορείτε να δημιουργήσετε πίνακες χωρίς rowid.[16]
Η ανάπτυξη του SQLite αποθηκεύει τις αναθεωρήσεις του πηγαίου κώδικα του στο Fossil, ένα σύστημα ελέγχου διανεμόμενης έκδοσης που το ίδιο χτίζεται σε μια βάση δεδομένων του SQLite.[17]
Το SQLite έχει συνδέσεις για έναν μεγάλο αριθμό γλωσσών προγραμματισμού, που συμπεριλαμβάνουν :
Λόγω του μικρού του μεγέθους, το SQLite είναι καλά προσαρμοσμένο σε ενσωματωμένα συστήματα και περιλαμβάνεται επίσης στα:
Όμως, είναι επίσης κατάλληλο για λειτουργικά συστήματα επιφάνειας εργασίας· η Apple το υιοθέτησε ως μια επιλογή στο API δεδομένων πυρήνα του OS X από την αρχική υλοποίηση σε Mac OS X 10.4 και πέρα καθώς και για τη διαχείριση βίντεο και τραγουδιών στο iPhone.
[...] ess-kju-ellite [...]
[...] sequelite [...]
<ref>
. Δεν υπάρχει κείμενο για τις παραπομπές με όνομα license
.WAL provides more concurrency as readers do not block writers and a writer does not block readers. Reading and writing can proceed concurrently