SQLite

Скріншот програми:
SQLite
Дані програми:
Версія: 3.24.0 оновлений
Дата завантаження: 22 Jun 18
Розробник: D. Richard Hipp
Ліцензія: Безкоштовно
Популярність: 82

Rating: 5.0/5 (Total Votes: 1)

SQLite - це бібліотека з відкритим вихідним кодом, багатоплатформенною, вільною та невеликою C, яка реалізує автономний, вбудовуваний, транзактний, бездротовий та безлімітний конфігураційний SQL-бази даних. Це найпопулярніша у світі система баз даних SQL.


Особливості з першого погляду

Основні функції включають підтримку ізольованих, атомних, тривалих і послідовних транзакцій, впровадження SQL92, файли баз даних можуть вільно розподілятися між комп'ютерами, підтримувати бази даних до 2 терабайтів, підтримку блоків та стрічок розміру гігабайт, малий коефіцієнт коду, як а також простий у використанні і дуже простий API (інтерфейс прикладного програмування).

Крім того, SQLite не потребує початкової конфігурації або подальшого адміністрування, дозволяє розробникам зберігати повну базу даних в одному файлі, який є крос-платформенним диском, що ідеально підходить для використання форматів файлів додатків, не має зовнішніх залежностей, в TCL (Tool Language Command Language) і повна документація.

Прив'язки для багатьох інших мов програмування доступні окремо. Його вихідний код добре прокоментується, і він поставляється з автономним CLI (інтерфейс командного рядка), який був розроблений з зсуву, який буде використовуватися для адміністрування баз даних SQLite.


Що я можу використовувати для цього?

Символ бази даних SQLite може використовуватися для будь-яких цілей, особистих або комерційних. Запропоноване використання SQLite включає в себе базу даних для гаджетів, бази даних веб-сайтів, резервну копію для корпоративної СУБД (Relational Database Management System), а також формат файлів додатків.


Під капотом і підтримуються ОС

Розподіл SQLite постачається з автономною програмою командного рядка (sqlite), яка може бути використана для адміністрування бази даних SQLite, і яка служить прикладом використання бібліотеки SQLite. Це повністю написано на мові програмування ANSI-C.

Підтримувані настільні операційні системи включають GNU / Linux, Mac OS X і Microsoft Windows. Підтримувані мобільні операційні системи включають Android та iOS. Він був успішно випробуваний як на 32-розрядних, так і на 64-розрядних апаратних платформах, і він легко переноситься на інші операційні системи.

Що нового в цьому випуску:

  • Основні моменти цього випуску включають підтримку UPSERT стилю PostgreSQL та покращену продуктивність, особливо для запитів ORDER BY LIMIT.

Що нового в версії:

  • Скористайтеся можливостями атомного запису в файловій системі F2FS, якщо це можливо, для значного зменшення витрат на транзакції. Для цього потрібен параметр компіляції SQLITE_ENABLE_BATCH_ATOMIC_WRITE.
  • Дозволити командам ATTACH та DETACH працювати всередині транзакції.
  • Дозволити без віртуальних таблиць ROWID бути записаними, якщо PRIMARY KEY містить точно один стовпець.
  • Файл & quot; fsync () & quot; що відбувається після того, як заголовок записано в WAL скидання, тепер використовує параметри синхронізації для контрольних точок. Це означає, що він використовуватиме & quot; fullfsync & quot; на комп'ютерах, якщо встановлено PRAGMA checkpoint_fullfsync.
  • Функція sqlite3_sourceid () намагається визначити, чи вихідний код був змінений з того, що було перевірено на контрольну версію, і якщо є модифікації, останні чотири символи хешу версії відображаються як & quot; alt1 & quot; або & quot; alt2 & quot ;. Мета - виявити випадкові та / або необережні зміни. Фальсифікатор може зруйнувати цю функцію.
  • Покращено де-коментування імен стовпців для операторів CREATE TABLE AS із сукупним запитом у правій частині.
  • Менше & quot; stat () & quot; системні виклики, випущені UNIX VFS.
  • Покращено оптимізацію LIKE, щоб вона працювала з пропозицією ESCAPE.
  • Розширені PRAGMA integrity_check і PRAGMA quick_check для виявлення неясної корекції ряду, яку раніше вони не мали. Також оновлюйте обидва прагми, щоб вони повернули текст помилки, а не SQLITE_CORRUPT, коли зіткнулися з корупцією в записах.
  • Тепер планувальник запитів вважає за краще застосовувати підзапити FROM-clause за допомогою спільних процедур, скоріше за допомогою оптимізації сплайдера запиту. Підтримка використання спільних підпрограм для підзапитів більше не може бути відключена.
  • Передайте інформацію про! =, IS, НЕ НЕ, НЕ НАЛИЧНО, і IS NULL обмежень у метод xBestIndex віртуальних таблиць.
  • Покращено віртуальну таблицю CSV, щоб вона приймала останній рядок вводу, якщо останній символ нової рядка відсутній.
  • Видаліть рідко використані "нулі" & quot; розподільник пам'яті. Замініть його на налаштування конфігурації SQLITE_CONFIG_SMALL_MALLOC, яке дає SQLite натяк на те, що, коли це можливо, слід уникати великих розподілів пам'яті.
  • Додана віртуальна таблиця ромків до існуючого розширення віртуальної таблиці союзу.
  • Додана віртуальна таблиця sqlite_dbpage для забезпечення прямого доступу до сторінок файлу бази даних. Ісходний код вбудований у злиття та активується за допомогою параметра -DSQLITE_ENABLE_DBPAGE_VTAB часу компіляції.
  • Додайте новий тип віртуальної таблиці fts5vocab - & quot; екземпляр & quot; - це забезпечує прямий доступ до повнотекстового індексу FTS5 на найнижчому рівні
  • Вилучіть виклик до rand_s () у системі Windows VFS, оскільки в деяких старих ноутбуках він спричиняє проблеми в Firefox.
  • Вихідний код src / shell.c до командного рядка більше не знаходиться під керуванням версії. Цей файл тепер генерується як частина процесу збірки.
  • Різне мікрооптимізація зменшує використання центрального процесора приблизно на 2,1%.
  • Виправлено помилки:
  • Виправте помилкове твердження assert (), виявлене OSSFuzz. Квиток cb91bf4290c211d
  • Виправте неприховану витоку пам'яті в sqlite3_result_pointer (). Квиток 7486aa54b968e9b
  • Уникайте можливої ​​помилки use-after-free, відклавши скидання схеми, доки не завершить роботу планувальника запитів. Квиток be436a7f4587ce5
  • Використовуйте лише індекси-на-вирази для оптимізації ORDER BY або GROUP BY, якщо COLLATE правильний. Квиток e20dd54ab0e4383
  • Виправте помилку твердження, що виникла, коли вираз в індексних виразах дійсно є постійним. Квиток aa98619ad08ddca
  • Виправте помилку твердження, яке може статися після PRAGMA reverse_unordered_selects. Квиток cb91bf4290c211d
  • Виправте segfault, що може траплятися для запитів, які використовують табличні функції в підзапросах IN або EXISTS. Квиток b899b6042f97f5
  • Виправте потенційну проблему переповнення цілих чисел при складанні певного жахливого загальної вираз таблиці. Це була ще одна проблема, виявлена ​​OSSFuzz. Заїзд 6ee8cb6ae5.
  • Виправте потенційну недоступність для читання при запиті корумпованого файлу бази даних, це проблема, виявлена ​​Наталі Сільванович з Google Project Zero. Заїзд 04925dee41a21f.

Що нового у версії 3.20.1:

  • Випуск патча версії 3.20.1 змінює два рядки коду в інтерфейсі sqlite3_result_pointer () для виправлення рідкісної витоку пам'яті.

Що нового у версії 3.9.2:

  • SQLite версії 3.9.2 - випуск патча, який фіксує два неясних помилки.

Що нового у версії 3.8.9:

  • Нові функції у цьому випуску включають команду PRAGMA index_xinfo, інтерфейс sqlite3_status64 () та команду ".dbinfo" в оболонці командного рядка.

Що нового в версії 3.8.8.2:

  • Випуск патча 3.8.8.2 виправляє одну незначну проблему: це гарантує, що операція sqlite3_wal_checkpoint (TRUNCATE) завжди буде скоротити журнал журналів, навіть якщо журнал був скинутий і не містив нового вмісту. Неясно, чи це виправлення помилки чи нова функція.
  • Щось подібне, як правило, йде до чергового регулярного випуску, але видатний користувач SQLite потребує поспішних змін, щоб ми із задоволенням вискакували його через цей патч.
  • Немає причин модернізувати, якщо вам не потрібна покращена поведінка sqlite3_wal_checkpoint (TRUNCATE).

Що нового у версії 3.8.8.1:

  • Виправте помилку в логіці сортування, представлена ​​з версії 3.8.4, яка може спричинити виведення в неправильному порядку у запитах, що містять пропозицію ORDER BY, пропозицію LIMIT, і що мають приблизно 60 або більше стовпчиків у набір результатів. Квиток f97c4637102a3ae72b79.
  • SQLITE_SOURCE_ID: "2015-01-20 16:51:25 f73337e3e289915a76ca96e7a05a1a8d4e890d55"
  • SHA1 для sqlite3.c: 33987fb50dcc09f1429a653d6b47672f5a96f19e

Що нового у версії 3.8.8:

  • Нові функції:
  • Додана команда PRAGMA data_version, яка може використовуватися для визначення того, чи файл бази даних був змінений іншим процесом.
  • Додано параметр SQLITE_CHECKPOINT_TRUNCATE до інтерфейсу sqlite3_wal_checkpoint_v2 () з відповідними удосконаленнями до PRAGMA wal_checkpoint.
  • Додано інтерфейс sqlite3_stmt_scanstatus (), доступний тільки при складанні з SQLITE_ENABLE_STMT_SCANSTATUS.
  • sqlite3_table_column_metadata () покращено, щоб правильно працювати без таблиць WITHOUT ROWID і перевірити існування таблиці, якщо параметр імені колонки має значення NULL. Інтерфейс тепер також включається до складання за умовчанням, не вимагаючи параметра часу компіляції SQLITE_ENABLE_ENABLE_COLUMN_METADATA.
  • Додано параметр часу компіляції SQLITE_ENABLE_APIR_ARMOR.
  • Додано параметр компіляції SQLITE_REVERSE_UNORDERED_SELECTS.
  • Додано параметр часу компіляції SQLITE_SORTER_PMASZ та параметр початку SQLITE_CONFIG_PMASZ.
  • Додано параметр SQLITE_CONFIG_PCACHE_HDRSZ до sqlite3_config (), що спрощує застосування програмами для визначення відповідної кількості пам'яті для використання з SQLITE_CONFIG_PAGECACHE.
  • Кількість рядків у стані VALUES більше не обмежується SQLITE_LIMIT_COMPOUND_SELECT.
  • Додано завантажуване розширення eval.c, яке реалізує функцію SQL eval (), яка рекурсивно оцінює SQL.
  • Покращення продуктивності:
  • Зменшіть кількість операцій memcp3 (), що пов'язані з балансуванням дерева b, для загального підвищення продуктивності на 3,2%.
  • Поліпшення оцінки витрат для оптимізації скасування сканування.
  • Оптимізація автоматичної індексації тепер здатна створювати частковий індекс, якщо це доречно.
  • Виправлено помилки:
  • За допомогою функції fsync () після пошкодження файлу журналу слід перевірити тривалість після втрати енергії за допомогою "PRAGMA journal_mode = TRUNCATE".
  • Планувальник запитів тепер визнає, що будь-який стовпчик у правій частині таблиці LEFT JOIN може бути NULL, навіть якщо цей стовпець має НЕ НУЛЬОВЕ обмеження. У таких випадках не намагайтеся оптимізувати тести NULL. Виправлено квиток 6f2222d550f5b0ee7ed.
  • Переконайтеся, що ORDER BY кладе рядки у порядку зростання, навіть якщо оператор DISTINCT реалізується за допомогою спадного індексу. Виправте для квитка c5ea805691bfc4204b1cb9e.
  • Виправити дані раси, які можуть виникнути під час стресу при роботі з багатьма потоками в режимі спільного кешування, де деякі з потоків є відкриттям і закриттям з'єднання.
  • Виправте помилкові помилки, виявлені американським нечітким лопом. Квиток a59ae93ee990a55.
  • Робота з помилкою оптимізатора GCC (для gcc 4.2.1 на MacOS 10.7), що викликало розширення R-Tree для обчислення неправильних результатів при складанні з -O3.
  • Інші зміни:
  • Вимкнути використання бібліотечної програми strchrnul (), якщо вона спеціально не активована за допомогою опції -DHAVE_STRCHRNULL компіляції.
  • Поліпшення ефективності та точності ймовірності (), можливо () та малоймовірних () SQL-функцій підказки.
  • SQLITE_SOURCE_ID: "2015-01-16 12:08:06 7d68a42face3ab14ed88407d4331872f5b243fdf"
  • SHA1 для sqlite3.c: 91aea4cc722371d58aae3d22e94d2a4165276905

Що нового у версії 3.8.7.4:

  • Це виправлення виправлень додає в mutex, що вимагається змінами патча 3.8.7.3, але випадково було опущено. Мьютекс не вимагається жодним із внутрішніх тестів SQLite, але Firefox не працює. Тестові випадки були додані для забезпечення того, щоб mutex ніколи більше не пропускався.

Що нового у версії 3.8.7.3:

  • Виправлення помилки: Переконайтеся, що кешовані об'єкти KeyInfo (внутрішня абстракція, не видимі для програми) не працюють у режимі спільного кешування та часто закривають та повторно відкривають деякі з'єднання з базою даних, залишаючи при цьому інші з'єднання з базою даних у тому ж відкритому спільному кеш-пам'яті постійно Квиток e4a18565a36884b00edf.
  • Виправлення помилки: Визначте, що будь-який стовпчик у правій частині таблиці LEFT JOIN може бути NULL, навіть якщо стовпчик має обмеження NOT NULL. Не застосовуйте оптимізацію, які передбачають, що стовпчик не буде NULL. Квиток 6f2222d550f5b0ee7ed.
  • SQLITE_SOURCE_ID: "2014-12-05 22:29:24 647e77e853e81a5effeb4c33477910400a67ba86"
  • SHA1 для sqlite3.c: 3ad2f5ba3a4a3e3e51a1dac9fda9224b359f0261

Що нового у версії 3.8.7.2:

  • Основна причина цього випуску полягає в тому, щоб посилити команду ROLLBACK, щоб вона могла запускати запити в одному з'єднуванні бази даних, щоб продовжувати працювати, якщо ROLLBACK не змінює схему. У всіх попередніх версіях SQLite ROLLBACK може призвести до незавершених зупинок запитів і повернутися SQLITE_ABORT або SQLITE_ABORT_ROLLBACK. Запитувані запити як і раніше скасовуються, якщо ROLLBACK змінює схему бази даних, але з даного випуску патча, запити можуть продовжувати працювати, якщо схема не змінена.
  • Крім розширення ROLLBACK цей випуск патча також містить виправлення для трьох неясних помилок.

Що нового у версії 3.8.7.1:

  • Основною причиною випуску виправлення помилок є вирішення проблеми з оновленням значень полів наприкінці таблиці, які були додані за допомогою ALTER TABLE ADD COLUMN. Ця проблема 1 вперше з'явилася у версії 3.8.7.
  • Ще одне незначне неприємність у випуску 3.8.7 - це те, що Android збирається намагатися використовувати функцію strchrnul () зі стандартної бібліотеки C, але ця функція недоступна на Android. Для збірки Android потрібно було додати -DHAVE_STRCHRNUL = 0, щоб вирішити проблему. Цей патч виправляє те, що Android-збирачі тепер повинні працювати без змін.
  • Робота PRAGMA journal_mode = TRUNCATE була покращена, так що вона викликає fsync () після обрізання файлу журналу, коли PRAGMA синхронно = FULL. Це допомагає зберегти довговічність транзакції у випадку втрати потужності, що настає незабаром після здійснення.
  • Нарешті, було виправлено пару застарілих і неясних проблем, пов'язаних із запуском UPDATE і DELETE на VIEW.

Що нового у версії 3.8.7:

  • Більшість змін із попереднього випуску були мікро-оптимізаціями, розробленими, щоб допомогти SQLite працювати трохи швидше. Кожна індивідуальна оптимізація має незмінно малий вплив на продуктивність. Але поліпшення складаються. Вимірюється на добре визначеному робочому навантаженні (який розробники SQLite використовують як проксі для типового завантаження додатків), використовуючи cachegrind на Linux та компілюються з gcc 4.8.1 та -O на x64 linux, поточний випуск робить на 20% більше роботи для однакова кількість циклів процесора в порівнянні з попереднім релізом. Cachegrind не є справжнім процесором, а робоча навантаження, використовувана для вимірювання, є лише проксі-сервер. Тож ефективність може відрізнятися. Ми очікуємо побачити приблизно половину вимірюваного та зареєстрованого поліпшення в реальних додатках. 10% менше, ніж 20%, але ми все ще дуже добре,
  • Цей випуск містить новий набір інтерфейсів C-мови, які мають 64-розрядний підпис, а не підписані 32-бітні параметри довжини. Нові API не надають жодних нових можливостей. Але вони полегшують написання додатків, які більш стійкі до вразливостей до цілісних переповнень.
  • Цей випуск також включає в себе новий сортувальник, який може використовувати кілька потоків, щоб допомогти у великих операціях сортування. (Операції сортування іноді потрібні для виконання положень ORDER BY та / або GROUP BY, і вони майже завжди потрібні для CREATE INDEX.) Сортовий завод з декількох потоків вимикається за замовчуванням, і його слід ввімкнути, використовуючи команду PRAGMA threads SQL. Зауважте, що багатоступеневий сортувальник забезпечує більш високу продуктивність в реальному часі для великих видів, але також використовує більше циклів процесора та більше енергії.

Що нового у версії 3.8.3.1:

  • SQLite версії 3.8.3.1 виправляє помилку в версії 3.8.1, 3.8.2 та 3.8.3, яка може викликати запити, щоб пропустити дійсні рядки. Рекомендується оновлення з цих версій.
  • Проблема виникає лише в тому випадку, якщо SQLite складається з варіантами компіляції SQLITE_ENABLE_STAT3 або SQLITE_ENABLE_STAT4. У цьому випадку, якщо запит має пропозицію WHERE, яка містить такі вирази:
  • WHERE (expr1 OR expr2 OR ... OR exprN) І стовпець IS NOT NULL
  • Якщо всі expr1 через exprN підходять для використання за індексами, то під час планування запиту SQLite може помилково перетворити термін "column NOT IS NULL" в "column & gt; NULL". Але останній термін ніколи не відповідає дійсності, тому запит не поверне рядків.

Що нового у версії 3.8.3:

  • Додана підтримка загальних виразів таблиці та пункту WITH.
  • Додано функцію printf () SQL.
  • Додано SQLITE_DETERMINISTIC як необов'язковий біт у 4-му аргументі до sqlite3_create_function () та пов'язаних інтерфейсів, що надає програмам можливість створювати нові функції, які можуть бути враховані поза внутрішніми циклами, якщо вони мають постійні аргументи.
  • Додайте SQLITE_READONLY_DBMOVED код помилки, повернений на початку транзакції, щоб вказати, що основний файл бази даних був перейменований або виведений з-під SQLite.
  • Дозволити довільні вирази, в тому числі функціональні дзвінки та підзаписи, в аргументі назви файлів для ATTACH.
  • Дозволити пропозицію VALUES використовувати будь-де, якщо операція SELECT є дійсною.
  • Розподіл PRNG, який використовується sqlite3_randomness (N, P), коли викликається з N == 0. Автоматично вимикається після fork () на unix.
  • Покращити віртуальну таблицю spellfix1, щоб вона могла ефективно виконувати пошук за рядком.
  • Покращення продуктивності.
  • Покращення коментарів на дисплеї байт-коду VDBE під час роботи EXPLAIN.
  • Додайте директиву "% token_class" до генератора parser LEMON та використайте її для спрощення граматики.
  • Змініть вихідний код LEMON, щоб не викликати функції C-бібліотеки, які OpenBSD вважає небезпечними. (Наприклад: sprintf).
  • Виправлення помилки: у полі імпорту CSV оболонки командного рядка не закрийте поле, коли в кінці рядка CRLN з'являється вичерпана подвійна цитата.
  • SQLITE_SOURCE_ID: "2014-02-03 13:52:03 e816dd924619db5f766de6df74ea2194f3e3b538"
  • SHA1 для sqlite3.c: 98a07da78f71b0275e8d9c510486877adc31dbee

Схожі програми

HyperSQL
HyperSQL

11 May 15

ArangoDB
ArangoDB

17 Feb 15

Oracle Database
Oracle Database

17 Feb 15

MUSCLE
MUSCLE

22 Jun 18

SQLite

Коментар не знайдено
додати коментар
Включіть картинки!