SQLite

Software screenshot:
SQLite
Rincian Software:
Versi: 3.24.0 Diperbarui
Tanggal Upload: 22 Jun 18
Pengembang: D. Richard Hipp
Lisensi: Gratis
Popularitas: 82

Rating: 5.0/5 (Total Votes: 1)

SQLite adalah open source, multiplatform, free dan small C library yang mengimplementasikan server database SQL yang mandiri, dapat diedit, transaksional, tanpa server, dan tanpa konfigurasi. Ini adalah mesin basisdata SQL yang paling banyak digunakan di dunia.


Fitur sekilas

Fitur utama termasuk dukungan untuk transaksi terisolasi, atom, tahan lama dan konsisten, implementasi SQL92, file database dapat dibagi secara bebas antar komputer, mendukung basis data hingga 2 terabyte, dukungan untuk gumpalan berukuran gigabyte dan string, jejak kode kecil, seperti baik sebagai API yang mudah digunakan dan sangat sederhana (Application Programming Interface).

Selain itu, SQLite tidak memerlukan konfigurasi awal atau administrasi lebih lanjut, memungkinkan pengembang untuk menyimpan basis data lengkap dalam satu, file disk lintas platform, yang sempurna untuk menggunakan format file aplikasi, tidak memiliki dependensi eksternal, dilengkapi dengan dalam TCL (Tool Command Language) bindings, dan dokumentasi yang komprehensif.

Binding untuk berbagai bahasa pemrograman lainnya tersedia secara terpisah. Kode sumbernya dikomentari dengan baik dan dilengkapi dengan klien CLI (Antarmuka Baris Perintah) mandiri yang telah dirancang dari offset untuk digunakan untuk administrasi basis data SQLite.


Apa yang bisa saya gunakan untuk?

Mesin database SQLite dapat digunakan untuk tujuan apa pun, pribadi atau komersial. Penggunaan yang disarankan untuk SQLite termasuk database untuk gadget, database situs web, stand-in untuk perusahaan RDBMS (Relational Database Management System), serta format file aplikasi.


Di bawah tenda dan mendukung OS

Distribusi SQLite dilengkapi dengan program akses baris perintah mandiri (sqlite) yang dapat digunakan untuk mengelola basis data SQLite dan yang berfungsi sebagai contoh bagaimana menggunakan pustaka SQLite. Ini sepenuhnya ditulis dalam bahasa pemrograman ANSI-C.

Sistem operasi desktop yang didukung termasuk GNU / Linux, Mac OS X dan Microsoft Windows. Sistem operasi seluler yang didukung termasuk Android dan iOS. Ini telah berhasil diuji dengan platform perangkat keras 32-bit dan 64-bit, dan mudah dibawa-bawa ke OS lain.

Apa yang baru dalam rilis ini:

  • Sorotan dari rilis ini termasuk dukungan untuk UPSERT PostgreSQL-gaya dan peningkatan kinerja, terutama untuk ORDER BY LIMIT queries.

Apa yang baru dalam versi:

  • Manfaatkan kemampuan menulis-atom dalam sistem file F2FS bila tersedia, untuk mengurangi biaya transaksi. Ini saat ini membutuhkan opsi SQLite_ENABLE_BATCH_ATOMIC_WRITE waktu kompilasi.
  • Izinkan perintah ATTACH dan DETACH untuk bekerja di dalam transaksi.
  • Izinkan TANPA ROWID tabel virtual agar dapat ditulis jika KUNCI UTAMA berisi tepat satu kolom.
  • The & quot; fsync () & quot; yang terjadi setelah header ditulis dalam reset WAL sekarang menggunakan pengaturan sinkronisasi untuk pos-pos pemeriksaan. Ini berarti ia akan menggunakan & quot; fullfsync & quot; di macs jika PRAGMA checkpoint_fullfsync diaktifkan.
  • Fungsi sqlite3_sourceid () mencoba mendeteksi jika kode sumber telah dimodifikasi dari apa yang dicentang ke kontrol versi dan jika ada modifikasi, empat karakter terakhir dari versi hash ditampilkan sebagai & quot; alt1 & quot; atau & quot; alt2 & quot ;. Tujuannya adalah untuk mendeteksi pengeditan yang disengaja dan / atau sembrono. Seorang pemalsu dapat menumbangkan fitur ini.
  • Peningkatan de-quoting nama kolom untuk pernyataan CREATE TABLE AS dengan kueri agregat di sisi kanan.
  • Lebih sedikit & quot; stat () & quot; panggilan sistem yang dikeluarkan oleh unix VFS.
  • Meningkatkan optimasi LIKE sehingga berfungsi dengan klausa ESCAPE.
  • Enhanced PRAGMA integrity_check dan PRAGMA quick_check untuk mendeteksi korupsi baris tidak jelas yang sebelumnya hilang. Juga perbarui kedua pragma sehingga mereka mengembalikan teks kesalahan daripada SQLITE_CORRUPT ketika menghadapi korupsi dalam catatan.
  • Perencana kueri sekarang lebih memilih untuk menerapkan sub-klausa FROM-klausa menggunakan co-routine daripada menggunakan optimasi rujukan kueri. Dukungan untuk penggunaan co-routine untuk subqueries mungkin tidak lagi dinonaktifkan.
  • Berikan informasi tentang! =, IS, IS NOT, NOT NULL, dan IS NULL constraints ke dalam metode tabel virtual xBestIndex.
  • Menyempurnakan tabel virtual CSV sehingga menerima baris terakhir masukan jika karakter baris baru akhir tidak ada.
  • Hapus yang jarang digunakan & quot; awal & quot; pengalokasi memori. Ganti dengan pengaturan konfigurasi SQLITE_CONFIG_SMALL_MALLOC yang memberikan SQLite petunjuk bahwa alokasi memori yang besar harus dihindari bila memungkinkan.
  • Menambahkan tabel virtual swarm ke ekstensi tabel virtual serikat yang ada.
  • Menambahkan tabel virtual sqlite_dbpage untuk menyediakan akses langsung ke halaman file database. Kode sumber dibangun ke dalam amalgamasi dan diaktifkan menggunakan opsi waktu kompilasi -DSQLITE_ENABLE_DBPAGE_VTAB.
  • Tambahkan jenis baru tabel virtual fts5vocab - & quot; contoh & quot; - yang menyediakan akses langsung ke indeks teks lengkap FTS5 pada tingkat serendah mungkin.
  • Hapus panggilan ke rand_s () di Windows VFS karena menyebabkan masalah pada Firefox pada beberapa laptop lama.
  • Kode sumber src / shell.c ke shell baris perintah tidak lagi di bawah kontrol versi. File itu sekarang dibuat sebagai bagian dari proses pembuatan.
  • Aneka mikrooptimisasi mengurangi penggunaan CPU sekitar 2,1%.
  • Perbaikan bug:
  • Perbaiki pernyataan assert () yang salah yang ditemukan oleh OSSFuzz. Tiket cb91bf4290c211d
  • Memperbaiki kebocoran memori yang tidak jelas di sqlite3_result_pointer (). Tiket 7486aa54b968e9b
  • Hindari kesalahan penggunaan-setelah-gratis yang mungkin dengan menunda skema ulang hingga setelah perencana kueri selesai berjalan. Tiket be436a7f4587ce5
  • Hanya gunakan indeks-on-ekspresi untuk mengoptimalkan ORDER BY atau GROUP BY jika COLLATE benar. Tiket e20dd54ab0e4383
  • Perbaiki kesalahan ketetapan yang muncul ketika ekspresi dalam indeks-pada-ekspresi benar-benar konstan. Tiket aa98619ad08ddca
  • Memperbaiki kesalahan pernyataan yang bisa terjadi setelah PRAGMA reverse_unordered_selects. Tiket cb91bf4290c211d
  • Perbaiki segfault yang dapat terjadi untuk kueri yang menggunakan fungsi bernilai-tabel dalam sub-query IN atau EXISTS. Tiket b899b6042f97f5
  • Perbaiki masalah luapan integer potensial saat menyusun ekspresi tabel umum yang menghebohkan. Ini adalah masalah lain yang ditemukan oleh OSSFuzz. Lapor masuk 6ee8cb6ae5.
  • Perbaiki pembacaan out-of-bound potensial saat mengajukan kueri file database yang rusak, masalah yang dideteksi Natalie Silvanovich dari Google Project Zero. Lapor masuk 04925dee41a21f.

Apa yang baru di versi 3.20.1:

  • Rilis patch versi 3.20.1 mengubah dua baris kode di antarmuka sqlite3_result_pointer () untuk memperbaiki kebocoran memori yang jarang terjadi.

Apa yang baru di versi 3.9.2:

  • SQLite versi 3.9.2 adalah rilis patch yang memperbaiki dua bug yang tidak jelas.

Apa yang baru di versi 3.8.9:

  • Fitur baru dalam rilis ini termasuk perintah PRAGMA index_xinfo, antarmuka sqlite3_status64 (), dan perintah ".dbinfo" dari shell baris perintah.

Apa yang baru di versi 3.8.8.2:

  • Rilis patch 3.8.8.2 memperbaiki satu masalah kecil: Ini memastikan bahwa operasi sqlite3_wal_checkpoint (TRUNCATE) akan selalu memotong log tulis-depan bahkan jika log sudah diatur ulang dan tidak mengandung konten baru. Tidak jelas apakah ini perbaikan bug atau fitur baru.
  • Sesuatu seperti ini biasanya akan masuk ke rilis berikutnya yang dijadwalkan secara rutin, tetapi pengguna SQLite yang terkemuka membutuhkan perubahan dengan cepat jadi kami senang untuk mempercepatnya melalui patch ini.
  • Tidak ada alasan untuk meningkatkan kecuali Anda benar-benar membutuhkan perilaku yang disempurnakan sqlite3_wal_checkpoint (TRUNCATE).

Apa yang baru di versi 3.8.8.1:

  • Memperbaiki bug dalam logika pengurutan, hadir sejak versi 3.8.4, yang dapat menyebabkan keluaran muncul dalam urutan salah pada pertanyaan yang berisi klausa ORDER BY, klausa LIMIT, dan yang memiliki sekitar 60 atau lebih kolom di hasil yang ditetapkan. Tiket f97c4637102a3ae72b79.
  • SQLITE_SOURCE_ID: "2015-01-20 16:51:25 f73337e3e289915a76ca96e7a05a1a8d4e890d55"
  • SHA1 untuk sqlite3.c: 33987fb50dcc09f1429a653d6b47672f5a96f19e

Apa yang baru di versi 3.8.8:

  • Fitur Baru:
  • Menambahkan perintah PRAGMA data_version yang dapat digunakan untuk menentukan apakah file database telah dimodifikasi oleh proses lain.
  • Menambahkan opsi SQLITE_CHECKPOINT_TRUNCATE ke antarmuka sqlite3_wal_checkpoint_v2 (), dengan perangkat tambahan terkait ke PRAGMA wal_checkpoint.
  • Menambahkan antarmuka sqlite3_stmt_scanstatus (), hanya tersedia saat dikompilasi dengan SQLITE_ENABLE_STMT_SCANSTATUS.
  • The sqlite3_table_column_metadata () ditingkatkan untuk bekerja dengan benar pada tabel TANPA ROWID dan untuk memeriksa keberadaan sebuah tabel jika parameter nama kolom adalah NULL. Antarmuka sekarang juga disertakan dalam build secara default, tanpa memerlukan opsi SQLite_ENABLE_COLUMN_METADATA waktu kompilasi.
  • Menambahkan opsi waktu kompilasi SQLITE_ENABLE_API_ARMOR.
  • Menambahkan opsi compile-time SQLITE_REVERSE_UNORDERED_SELECTS.
  • Menambahkan opsi waktu kompilasi SQLITE_SORTER_PMASZ dan opsi waktu mulai SQLITE_CONFIG_PMASZ.
  • Menambahkan opsi SQLITE_CONFIG_PCACHE_HDRSZ ke sqlite3_config () yang mempermudah aplikasi untuk menentukan jumlah memori yang tepat untuk digunakan dengan SQLITE_CONFIG_PAGECACHE.
  • Jumlah baris dalam klausa VALUES tidak lagi dibatasi oleh SQLITE_LIMIT_COMPOUND_SELECT.
  • Menambahkan ekstensi yang dapat dimuat eval.c yang mengimplementasikan fungsi eval () SQL yang akan mengevaluasi SQL secara rekursif.
  • Peningkatan Performa:
  • Kurangi jumlah operasi memcpy () yang terlibat dalam menyeimbangkan b-tree, untuk peningkatan kinerja keseluruhan 3,2%.
  • Peningkatan perkiraan biaya untuk pengoptimalan lewati-pindaian.
  • Pengoptimalan pengindeksan otomatis sekarang mampu menghasilkan indeks parsial jika sesuai.
  • Perbaikan bug:
  • Pastikan daya tahan setelah daya hilang dengan "PRAGMA journal_mode = TRUNCATE" dengan memanggil fsync () tepat setelah memotong file jurnal.
  • Perencana kueri sekarang mengakui bahwa setiap kolom di tabel sebelah kanan dari JOIN KIRI dapat berupa NULL, bahkan jika kolom tersebut memiliki kendala NOT NULL. Hindari mencoba mengoptimalkan tes NULL dalam kasus-kasus tersebut. Perbaiki untuk tiket 6f2222d550f5b0ee7ed.
  • Pastikan ORDER BY meletakkan baris dalam urutan menaik meskipun operator DISTINCT diimplementasikan menggunakan indeks turun. Perbaiki untuk tiket c5ea805691bfc4204b1cb9e.
  • Perbaiki ras data yang mungkin terjadi di bawah tekanan saat berjalan dengan banyak utas dalam mode cache bersama tempat beberapa utas membuka dan menutup koneksi.
  • Perbaiki bug mogok tidak jelas yang ditemukan oleh fuzzy lop Amerika. Tiket a59ae93ee990a55.
  • Bekerja di sekitar bug pengoptimasi GCC (untuk gcc 4.2.1 di MacOS 10.7) yang menyebabkan ekstensi R-Tree untuk menghitung hasil yang salah saat dikompilasi dengan -O3.
  • Perubahan lainnya:
  • Nonaktifkan penggunaan pustaka strchrnul () C-library kecuali secara khusus diaktifkan menggunakan opsi waktu -DHAVE_STRCHRNULL kompilasi.
  • Peningkatan keefektifan dan keakuratan kemungkinan (), kemungkinan (), dan tidak mungkin () fungsi petunjuk SQL.
  • SQLITE_SOURCE_ID: "2015-01-16 12:08:06 7d68a42face3ab14ed88407d4331872f5b243fdf"
  • SHA1 untuk sqlite3.c: 91aea4cc722371d58aae3d22e94d2a4165276905

Apa yang baru di versi 3.8.7.4:

  • Perbaikan rilis ini menambahkan mutex yang diperlukan oleh perubahan patch 3.8.7.3 tetapi tidak sengaja dihilangkan. Mutex tidak diperlukan oleh salah satu tes SQLite internal, tetapi Firefox crash tanpa itu. Kasus uji telah ditambahkan untuk memastikan bahwa mutex tidak pernah lagi terlewatkan.

Apa yang baru di versi 3.8.7.3:

  • Perbaikan bug: Pastikan objek KeyInfo yang disimpan dalam cache (abstraksi internal yang tidak terlihat oleh aplikasi) tidak menjadi basi ketika beroperasi dalam mode cache bersama dan sering menutup dan membuka kembali beberapa koneksi basis data sambil meninggalkan koneksi basis data lain pada cache bersama yang sama terbuka terus menerus. Tiket e4a18565a36884b00edf.
  • Perbaikan bug: Ketahui bahwa kolom apa pun di tabel sebelah kanan dari JOIN KIRI dapat berupa NULL bahkan jika kolom memiliki kendala NOT NULL. Jangan terapkan pengoptimalan yang menganggap kolom tidak pernah NULL. Tiket 6f2222d550f5b0ee7ed.
  • SQLITE_SOURCE_ID: "2014-12-05 22:29:24 647e77e853e81a5effeb4c33477910400a67ba86"
  • SHA1 untuk sqlite3.c: 3ad2f5ba3a4a3e3e51a1dac9fda9224b359f0261

Apa yang baru di versi 3.8.7.2:

  • Alasan utama untuk rilis ini adalah untuk meningkatkan perintah ROLLBACK sehingga memungkinkan menjalankan query pada koneksi database yang sama untuk terus berjalan selama ROLLBACK tidak mengubah skema. Di semua versi SQLite sebelumnya, ROLLBACK akan menyebabkan permintaan yang tertunda untuk segera berhenti dan mengembalikan SQLITE_ABORT atau SQLITE_ABORT_ROLLBACK. Permintaan yang tertunda masih batalkan jika ROLLBACK mengubah skema basis data, tetapi pada saat rilis patch ini, kueri dibiarkan terus berjalan jika skema tidak diubah.
  • Selain peningkatan ROLLBACK, rilis patch ini juga termasuk perbaikan untuk tiga bug yang tidak jelas.

Apa yang baru di versi 3.8.7.1:

  • Alasan utama untuk rilis perbaikan bug ini adalah mengatasi masalah dengan memperbarui nilai bidang di akhir tabel yang ditambahkan menggunakan ALTER TABLE ADD COLUMN. Masalah ini pertama muncul dalam rilis 3.8.7.
  • Gangguan kecil lainnya dalam rilis 3.8.7 adalah kenyataan bahwa Android membangun mencoba menggunakan fungsi strchrnul () dari pustaka C standar tetapi fungsi itu tidak tersedia di Android. Android build harus ditambahkan -DHAVE_STRCHRNUL = 0 untuk mengatasi masalah. Tambalan ini memperbaiki itu sehingga build Android seharusnya sekarang bekerja tanpa perubahan apa pun.
  • Pengoperasian PRAGMA journal_mode = TRUNCATE telah ditingkatkan sehingga memanggil fsync () setelah memotong file jurnal ketika PRAGMA synchronous = FULL. Ini membantu mempertahankan ketahanan transaksi jika terjadi kehilangan daya tak lama setelah komit.
  • Akhirnya, beberapa masalah yang sudah lama dan tidak jelas terkait dengan menjalankan UPDATE dan DELETE pada VIEW telah diperbaiki.

Apa yang baru di versi 3.8.7:

  • Sebagian besar perubahan dari rilis sebelumnya adalah pengoptimalan mikro yang dirancang untuk membantu SQLite berjalan sedikit lebih cepat. Setiap pengoptimalan individual memiliki dampak kinerja kecil yang tak terukur. Namun peningkatannya bertambah. Diukur pada beban kerja yang terdefinisi dengan baik (yang digunakan pengembang SQLite sebagai proxy untuk beban kerja aplikasi yang khas) menggunakan cachegrind di Linux dan dikompilasi dengan gcc 4.8.1 dan -Os pada linux x64, rilis saat ini melakukan lebih dari 20% lebih banyak pekerjaan untuk jumlah siklus CPU yang sama dibandingkan dengan rilis sebelumnya. Cachegrind bukan CPU sebenarnya, dan beban kerja yang digunakan untuk pengukuran hanyalah sebuah proxy. Jadi, kinerja Anda dapat bervariasi. Kami berharap dapat melihat sekitar setengah peningkatan yang diukur dan dilaporkan dalam aplikasi dunia nyata. 10% kurang dari 20% tetapi masih cukup bagus, menurut kami.
  • Rilis ini menyertakan satu set antarmuka C-language baru yang memiliki unsigned 64-bit alih-alih menandatangani 32-bit length parameters. API baru tidak menyediakan kemampuan baru apa pun. Tetapi mereka membuatnya lebih mudah untuk menulis aplikasi yang lebih tahan terhadap kerentanan overflow bilangan bulat.
  • Rilis ini juga menyertakan penyortir baru yang dapat menggunakan beberapa utas untuk membantu operasi sortir besar. (Operasi sortir terkadang diperlukan untuk menerapkan ORDER BY dan / atau klausa GROUP BY dan hampir selalu diperlukan untuk CREATE INDEX.) Penyortir multi-thread dimatikan secara default dan harus diaktifkan menggunakan perintah SQL PRAGMA thread. Perhatikan bahwa penyortir multi-berulir memberikan kinerja real-time yang lebih cepat untuk banyak jenis, tetapi juga menggunakan lebih banyak siklus CPU dan lebih banyak energi.

Apa yang baru di versi 3.8.3.1:

  • SQLite versi 3.8.3.1 memperbaiki bug yang ada di versi 3.8.1, 3.8.2 dan 3.8.3 yang dapat menyebabkan kueri untuk menghapus baris yang valid. Diperlukan pembaruan dari versi tersebut.
  • Masalahnya hanya muncul jika SQLite dikompilasi dengan opsi SQLite_ENABLE_STAT3 atau SQLITE_ENABLE_STAT4 waktu kompilasi. Dalam hal ini, jika permintaan memiliki klausa WHERE yang berisi ekspresi seperti ini:
  • DI MANA (expr1 ATAU expr2 ATAU ... ATAU exprN) DAN kolom TIDAK NULL
  • Jika semua expr1 melalui exprN cocok untuk digunakan oleh indeks, maka selama perencanaan kueri, SQLite mungkin secara keliru mengonversi istilah "kolom IS NOT NULL" menjadi "kolom & gt; NULL". Namun istilah terakhir tidak pernah benar, sehingga kueri tidak akan menghasilkan baris.

Apa yang baru di versi 3.8.3:

  • Menambahkan dukungan untuk ekspresi tabel umum dan klausa DENGAN.
  • Menambahkan fungsi printf () SQL.
  • Menambahkan SQLITE_DETERMINISTIC sebagai bit opsional dalam argumen ke-4 ke sqlite3_create_function () dan antarmuka terkait, menyediakan aplikasi dengan kemampuan untuk membuat fungsi baru yang dapat diperhitungkan di luar loop ketika mereka memiliki argumen konstan.
  • Tambahkan kode kesalahan SQLITE_READONLY_DBMOVED, dikembalikan pada awal transaksi, untuk menunjukkan bahwa file database yang mendasari telah diubah namanya atau dipindahkan dari bawah SQLite.
  • Izinkan ekspresi acak, termasuk panggilan fungsi dan subkueri, dalam argumen nama file ke ATTACH.
  • Izinkan klausa VALUES untuk digunakan di mana saja pernyataan SELECT valid.
  • Dibeli ulang PRNG yang digunakan oleh sqlite3_randomness (N, P) ketika dipanggil dengan N == 0. Secara otomatis reseed setelah garpu () pada unix.
  • Tingkatkan tabel virtual spellfix1 sehingga dapat mencari secara efisien dengan rowid.
  • Peningkatan kinerja.
  • Peningkatan pada komentar dalam tampilan kode byte VDBE saat menjalankan MENJELASKAN.
  • Tambahkan arahan "% token_class" ke parser generator LEMON dan gunakan untuk menyederhanakan tata bahasa.
  • Ubah kode sumber LEMON untuk menghindari memanggil fungsi C-library yang dianggap OpenBSD berbahaya. (Ex: sprintf).
  • Perbaikan bug: Pada fitur impor CSV baris perintah, jangan akhiri bidang ketika tanda kutip ganda yang muncul terjadi di akhir baris CRLN.
  • SQLITE_SOURCE_ID: "2014-02-03 13:52:03 e816dd924619db5f766de6df74ea2194f3e3b538"
  • SHA1 untuk sqlite3.c: 98a07da78f71b0275e8d9c510486877adc31dbee

Software yang serupa

MUSCLE
MUSCLE

22 Jun 18

DAMP
DAMP

2 Jun 15

deltasql
deltasql

19 Feb 15

DB2
DB2

19 Feb 15

Komentar untuk SQLite

Komentar tidak ditemukan
Tambahkan komentar
Aktifkan gambar!