<?xml version='1.0' encoding='UTF-8' ?> <!DOCTYPE html PUBLIC '-//W3C//DTD XHTML 1.0 Transitional//EN' 'http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd'> <html class="client-nojs" dir="ltr" lang="en"> <head> <meta charset="UTF-8" /> <title>Модули/SQLite - OpenSCADAWiki</title> <meta content="MediaWiki 1.26.4" name="generator" /> <link href="https://www.gnu.org/copyleft/fdl.html" rel="copyright" /> <link href="../../en/files/doc.css" rel="stylesheet" /></head> <body><div class="floatright"><a href="../index.html"><img alt="OpenSCADA" src="../../en/files/index.png" /></a></div><div id="mw_header"> <div class="mw-indicators"> </div> <h1 id="firstHeading" lang="ru">Модули/SQLite</h1> </div><div class="mw-content-ltr" dir="ltr" id="mw-content-text" lang="ru"><div class="mw-pt-translate-header noprint" dir="ltr" lang="en">This page is a <span class="plainlinks"><a class="external text" href="http://oscada.org/wiki/index.php?title=Special:Translate&group=page-Modules%2FSQLite&action=page&filter=&language=ru" rel="nofollow noreferrer noopener" target="_blank">translated version</a></span> of the page <a class="external" href="http://oscada.org/wiki/Modules/SQLite" title="Modules/SQLite">Modules/SQLite</a> and the translation is 100% complete.</div><hr /><div class="mw-pt-languages" dir="ltr" lang="en"><div class="mw-pt-languages-list autonym"><a class="mw-pt-languages-ui mw-pt-progress mw-pt-progress--complete" href="../../en/Modules/SQLite.html" title="Modules/SQLite (100% translated)">English</a> • ‎<span class="mw-pt-languages-selected mw-pt-progress mw-pt-progress--complete">mRussian</span> • ‎<a class="mw-pt-progress mw-pt-progress--complete" href="../../uk/Modules/SQLite.html" title="Модулі/SQLite (100% translated)">УкраїнÑька</a></div></div> <table class="wikitable"> <tr> <th> Модуль </th> <th> Ð˜Ð¼Ñ </th> <th> ВерÑÐ¸Ñ </th> <th> Ð›Ð¸Ñ†ÐµÐ½Ð·Ð¸Ñ </th> <th> ИÑточник </th> <th> Языки </th> <th> Платформы </th> <th> Тип </th> <th> Ðвтор </th> <th> ОпиÑание </th></tr> <tr> <td> <a href="../Modules/SQLite.html" title="Special:MyLanguage/Modules/SQLite">SQLite</a> </td> <td> БД SQLite <ul><li> <b><a href="../Program_manual.html#DBFeat" title="Special:MyLanguage/Documents/Program manual">СвойÑтва</a>:</b> SQL, LIST, STRUCT, GET, SEEK, PRELOAD, SET, DEL, FIX, TR, ERR</li></ul> </td> <td> 4.0 </td> <td> GPL2 </td> <td> bd_SQLite.so </td> <td> en,uk,ru,de </td> <td> x86,x86_64,ARM </td> <td> БД </td> <td> Роман Савоченко </td> <td> Модуль БД. ПредоÑтавлÑет поддержку БД SQLite. </td></tr></table> <p>Модуль предоÑтавлÑет в OpenSCADA поддержку БД SQLite. БД SQLite ÑвлÑетÑÑ Ð½ÐµÐ±Ð¾Ð»ÑŒÑˆÐ¾Ð¹ и вÑтраиваемой БД, поддерживающей SQL-запроÑÑ‹. БД SQLite раÑпроÑтранÑетÑÑ Ð¿Ð¾Ð´ Ñвободной лицензии. ОзнакомитьÑÑ Ñ Ð‘Ð” можно на Ñайте БД — <a class="external free" href="http://sqlite.org" rel="nofollow noreferrer noopener" target="_blank">http://sqlite.org</a>. Модуль оÑнован на библиотеке API Ð¿Ñ€Ð¾Ð¸Ð·Ð²Ð¾Ð´Ð¸Ñ‚ÐµÐ»Ñ Ð‘Ð” Ñзыка "C". Модуль позволÑет выполнÑÑ‚ÑŒ дейÑÑ‚Ð²Ð¸Ñ Ð½Ð°Ð´ базами данных, таблицами и Ñодержимым таблиц. </p><p>Модуль на данный момент поддерживает конкурентную работу Ñ ÑовмеÑтными файлами БД, вроде библиотек, из различных процеÑÑов OpenSCADA, путём корректной обработки Ð±Ð»Ð¾ÐºÐ¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ Ñ„Ð°Ð¹Ð»Ð¾Ð². Т.е. вы будете получать Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ñ Ð¿Ð¾ÐºÐ° файл будет оÑтаватьÑÑ Ð·Ð°Ð±Ð»Ð¾ÐºÐ¸Ñ€Ð¾Ð²Ð°Ð½Ð½Ñ‹Ð¼, и Ñможете удачно запиÑать в него как только он будет оÑвобождён закрытием транзакции блокирующим процеÑÑом. </p> <div class="toc" id="toc"><div id="toctitle"><h2>Contents</h2></div> <ul> <li class="toclevel-1 tocsection-1"><a href="#.D0.9E.D0.BF.D0.B5.D1.80.D0.B0.D1.86.D0.B8.D0.B8_.D0.BD.D0.B0.D0.B4_.D0.91.D0.94"><span class="tocnumber">1</span> <span class="toctext">Операции над БД</span></a></li> <li class="toclevel-1 tocsection-2"><a href="#.D0.9E.D0.BF.D0.B5.D1.80.D0.B0.D1.86.D0.B8.D0.B8_.D0.BD.D0.B0.D0.B4_.D1.82.D0.B0.D0.B1.D0.BB.D0.B8.D1.86.D0.B5.D0.B9"><span class="tocnumber">2</span> <span class="toctext">Операции над таблицей</span></a></li> <li class="toclevel-1 tocsection-3"><a href="#.D0.9E.D0.BF.D0.B5.D1.80.D0.B0.D1.86.D0.B8.D0.B8_.D0.BD.D0.B0.D0.B4_.D1.81.D0.BE.D0.B4.D0.B5.D1.80.D0.B6.D0.B8.D0.BC.D1.8B.D0.BC_.D1.82.D0.B0.D0.B1.D0.BB.D0.B8.D1.86.D1.8B"><span class="tocnumber">3</span> <span class="toctext">Операции над Ñодержимым таблицы</span></a></li> <li class="toclevel-1 tocsection-4"><a href="#.D0.9F.D1.80.D0.B0.D0.B2.D0.B0_.D0.B4.D0.BE.D1.81.D1.82.D1.83.D0.BF.D0.B0"><span class="tocnumber">4</span> <span class="toctext">Права доÑтупа</span></a></li> <li class="toclevel-1 tocsection-5"><a href="#.D0.9F.D1.80.D0.BE.D0.B8.D0.B7.D0.B2.D0.BE.D0.B4.D0.B8.D1.82.D0.B5.D0.BB.D1.8C.D0.BD.D0.BE.D1.81.D1.82.D1.8C_.D0.91.D0.94"><span class="tocnumber">5</span> <span class="toctext"><span>ПроизводительноÑÑ‚ÑŒ БД</span></span></a></li> </ul> </div> <h2><span class="mw-headline" id=".D0.9E.D0.BF.D0.B5.D1.80.D0.B0.D1.86.D0.B8.D0.B8_.D0.BD.D0.B0.D0.B4_.D0.91.D0.94"><span class="mw-headline-number">1</span> Операции над БД</span></h2> <p>ПоддерживаютÑÑ Ð¾Ð¿ÐµÑ€Ð°Ñ†Ð¸Ð¸ Ð¾Ñ‚ÐºÑ€Ñ‹Ñ‚Ð¸Ñ Ð¸ Ð·Ð°ÐºÑ€Ñ‹Ñ‚Ð¸Ñ Ð‘Ð”, Ñ Ð²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾Ñтью ÑÐ¾Ð·Ð´Ð°Ð½Ð¸Ñ Ð½Ð¾Ð²Ð¾Ð¹ БД при открытии и ÑƒÐ´Ð°Ð»ÐµÐ½Ð¸Ñ ÑущеÑтвующей при закрытии. Ð’ терминах подÑиÑтемы "БД" OpenSCADA, открытием БД ÑвлÑетÑÑ ÐµÑ‘ региÑÑ‚Ñ€Ð°Ñ†Ð¸Ñ Ð´Ð»Ñ Ð¿Ð¾Ñледующего иÑÐ¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ð½Ð¸Ñ Ð¿Ñ€Ð¾Ð³Ñ€Ð°Ð¼Ð¼Ð¾Ð¹. Также, поддерживаетÑÑ Ð¾Ð¿ÐµÑ€Ð°Ñ†Ð¸Ñ Ð·Ð°Ð¿Ñ€Ð¾Ñа Ð¿ÐµÑ€ÐµÑ‡Ð½Ñ Ñ‚Ð°Ð±Ð»Ð¸Ñ† в БД. </p><p>БД SQLite адреÑуетÑÑ Ð¿ÑƒÑ‚Ñ‘Ð¼ ÑƒÐºÐ°Ð·Ð°Ð½Ð¸Ñ Ð¸Ð¼ÐµÐ½Ð¸ файла БД в формате: "<b>{FileDBPath}</b>". Где: </p> <ul><li> <i>FileDBPath</i> — полный путь к файлу БД (./oscada/Main.db).</li></ul> <dl><dd>ИÑпользуйте пуÑтой путь Ð´Ð»Ñ ÑÐ¾Ð·Ð´Ð°Ð½Ð¸Ñ Ð²Ñ€ÐµÐ¼ÐµÐ½Ð½Ð¾Ð¹ базы данных на диÑке.</dd> <dd>ИÑпользуйте ":memory:" Ð´Ð»Ñ ÑÐ¾Ð·Ð´Ð°Ð½Ð¸Ñ Ð²Ñ€ÐµÐ¼ÐµÐ½Ð½Ð¾Ð¹ базы данных в памÑти.</dd></dl> <h2><span class="mw-headline" id=".D0.9E.D0.BF.D0.B5.D1.80.D0.B0.D1.86.D0.B8.D0.B8_.D0.BD.D0.B0.D0.B4_.D1.82.D0.B0.D0.B1.D0.BB.D0.B8.D1.86.D0.B5.D0.B9"><span class="mw-headline-number">2</span> Операции над таблицей</span></h2> <p>ПоддерживаютÑÑ Ð¾Ð¿ÐµÑ€Ð°Ñ†Ð¸Ð¸ открытиÑ, Ð·Ð°ÐºÑ€Ñ‹Ñ‚Ð¸Ñ Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ñ‹, Ñ Ð²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾Ñтью ÑÐ¾Ð·Ð´Ð°Ð½Ð¸Ñ Ð½Ð¾Ð²Ð¾Ð¹ таблицы при открытии и ÑƒÐ´Ð°Ð»ÐµÐ½Ð¸Ñ ÑущеÑтвующей при закрытии, а также Ð·Ð°Ð¿Ñ€Ð¾Ñ Ñтруктуры таблицы. </p> <h2><span class="mw-headline" id=".D0.9E.D0.BF.D0.B5.D1.80.D0.B0.D1.86.D0.B8.D0.B8_.D0.BD.D0.B0.D0.B4_.D1.81.D0.BE.D0.B4.D0.B5.D1.80.D0.B6.D0.B8.D0.BC.D1.8B.D0.BC_.D1.82.D0.B0.D0.B1.D0.BB.D0.B8.D1.86.D1.8B"><span class="mw-headline-number">3</span> Операции над Ñодержимым таблицы</span></h2> <ul><li> Ñканирование запиÑей таблицы;</li> <li> Ð·Ð°Ð¿Ñ€Ð¾Ñ Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ð¹ указанных запиÑей;</li> <li> уÑтановка значений указанных запиÑей;</li> <li> удаление запиÑей.</li></ul> <p>API подÑиÑтемы "БД" предполагает доÑтуп к Ñодержимому таблицы по значению ключевого(Ñ‹Ñ…) полей. Так, Ð¾Ð¿ÐµÑ€Ð°Ñ†Ð¸Ñ Ð·Ð°Ð¿Ñ€Ð¾Ñа запиÑи подразумевает предварительную уÑтановку ключевых колонок объекта TConfig, по которым будет выполнен запроÑ. Создание новой запиÑи(Ñтроки) производитÑÑ Ð¾Ð¿ÐµÑ€Ð°Ñ†Ð¸ÐµÐ¹ уÑтановки значений запиÑи, ÐºÐ¾Ñ‚Ð¾Ñ€Ð°Ñ Ð¾Ñ‚ÑутÑтвует. </p><p>Модуль позволÑет динамичеÑки менÑÑ‚ÑŒ Ñтруктуру таблиц БД SQLite, путём ÑÐ¾Ð·Ð´Ð°Ð½Ð¸Ñ Ð½Ð¾Ð²Ð¾Ð¹ БД Ñ Ñ‚Ñ€ÐµÐ±ÑƒÐµÐ¼Ð¾Ð¹ Ñтруктурой и ÐºÐ¾Ð¿Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ Ð² неё данных из Ñтарой. Так, в Ñлучае неÑоответÑÑ‚Ð²Ð¸Ñ Ñтруктуры таблицы и Ñтруктуры уÑтанавливаемой запиÑи, Ñтруктура таблицы будет приведена к требуемой Ñтруктуре запиÑи. Ð’ Ñлучае запроÑа значений запиÑи и неÑоответÑÑ‚Ð²Ð¸Ñ Ñтруктур запиÑи и таблицы, будут получены только Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ñ Ð¾Ð±Ñ‰Ð¸Ñ… Ñлементов запиÑи и таблицы. Модуль не отÑлеживает порÑдка раÑÐ¿Ð¾Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ Ñлементов запиÑи и Ñтруктуры таблицы! </p><p>Модулем реализуетÑÑ Ð¼ÐµÑ…Ð°Ð½Ð¸Ð·Ð¼ поддержки многоÑзыковых текÑтовых переменных. Ð”Ð»Ñ Ð¿Ð¾Ð»ÐµÐ¹ Ñ Ð¼Ð½Ð¾Ð³Ð¾Ñзыковой текÑтовой переменной ÑоздаютÑÑ ÐºÐ¾Ð»Ð¾Ð½ÐºÐ¸ отдельных Ñзыков в формате "<b>{lang}#{FldID}</b>" (en#NAME). При Ñтом, Ð±Ð°Ð·Ð¾Ð²Ð°Ñ ÐºÐ¾Ð»Ð¾Ð½ÐºÐ° Ñодержит значение Ð´Ð»Ñ Ð±Ð°Ð·Ð¾Ð²Ð¾Ð³Ð¾ Ñзыка. Колонки отдельных Ñзыков ÑоздаютÑÑ Ð¿Ð¾ надобноÑти, в момент ÑÐ¾Ñ…Ñ€Ð°Ð½ÐµÐ½Ð¸Ñ Ð² БД и при иÑполнении OpenSCADA в ÑоответÑтвующей локали. Ð’ Ñлучае отÑутÑÑ‚Ð²Ð¸Ñ Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ñ Ð´Ð»Ñ ÐºÐ¾Ð½ÐºÑ€ÐµÑ‚Ð½Ð¾Ð³Ð¾ Ñзыка будет иÑпользоватьÑÑ Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ð¹ Ð´Ð»Ñ Ð±Ð°Ð·Ð¾Ð²Ð¾Ð³Ð¾ Ñзыка. </p><p>Типы Ñлементов БД SQLite Ñледующим образом ÑоответÑтвуют типам Ñлементов OpenSCADA: </p> <table class="wikitable"> <tr> <th> Типы полей OpenSCADA </th> <th> Типы полей БД SQLite </th></tr> <tr> <td> TFld::String </td> <td> TEXT </td></tr> <tr> <td> TFld::Integer, TFld::Boolean </td> <td> INTEGER </td></tr> <tr> <td> TFld::Real </td> <td> DOUBLE </td></tr></table> <h2><span class="mw-headline" id=".D0.9F.D1.80.D0.B0.D0.B2.D0.B0_.D0.B4.D0.BE.D1.81.D1.82.D1.83.D0.BF.D0.B0"><span class="mw-headline-number">4</span> Права доÑтупа</span></h2> <p>Права доÑтупа к БД определÑÑŽÑ‚ÑÑ Ð¿Ñ€Ð°Ð²Ð°Ð¼Ð¸ доÑтупа к отдельно взÑтому файлу БД. Модулем поддерживаетÑÑ Ñ€Ð°Ð±Ð¾Ñ‚Ð° Ñ Ñ„Ð°Ð¹Ð»Ð°Ð¼Ð¸ БД SQLite в режиме только Ð´Ð»Ñ Ñ‡Ñ‚ÐµÐ½Ð¸Ñ, например, в демонÑтрациÑÑ…. </p> <h2><span class="mw-headline" id=".D0.9F.D1.80.D0.BE.D0.B8.D0.B7.D0.B2.D0.BE.D0.B4.D0.B8.D1.82.D0.B5.D0.BB.D1.8C.D0.BD.D0.BE.D1.81.D1.82.D1.8C_.D0.91.D0.94"><span class="mw-headline-number">5</span> <span id="Tests" title="#Tests">ПроизводительноÑÑ‚ÑŒ БД</span></span></h2> <p>Измерение производительноÑти БД выполнÑлÑÑ Ñ‚ÐµÑтом "БД" Ð¼Ð¾Ð´ÑƒÐ»Ñ "SystemTests", путём Ð²Ñ‹Ð¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ñ Ð¾Ð¿ÐµÑ€Ð°Ñ†Ð¸Ð¹ над запиÑÑми Ñтруктурой: "<b>name char (20), descr char (50), val double (10.2), id int (7), stat bool, reqKey string, reqVal string</b>". </p> <table class="wikitable"> <tr> <th> Operations for 1000 records, seconds </th> <th> Nokia N800, SD 4GClass6<br />Nokia N900 </th> <th> RPi2 Debian8 Class10 UHS1;<br />RPi3 Debian8 Class10 UHS1;<br />OrangePiZero Debian8 Class2 </th> <th> AMD Turion L625 1.6, 2G [HDD; SSD]<br />Intel(R) Core(TM) i3 CPU 1.33GHz, 3G [HDD; SSD];<br />Intel(R) Core(TM) i7 CPU 2.6GHz, 12G FastSSD </th></tr> <tr> <td> <i>Creating:</i> </td> <td> 3.3; 1.96 </td> <td> 0.78; 0.43; 0.48 </td> <td> [0.49; 0.2]; [0.39; 0.22]; 0.056 </td></tr> <tr> <td> <i>Updating:</i> </td> <td> 3.2; 2.47 </td> <td> 0.7; 0.41; 0.45 </td> <td> [0.48; 0.19]; [0.40; 0.21]; 0.053 </td></tr> <tr> <td> <i>Getting:</i> </td> <td> 2.6; 1.81 </td> <td> 0.69; 0.38; 0.45 </td> <td> [0.36; 0.19]; [0.31; 0.21]; 0.051 </td></tr> <tr> <td> <i>Seeking:</i> </td> <td> 3.1; 1.48 </td> <td> 0.76; 0.42; 0.51 </td> <td> [-; 0.22]; [0.21; 0.22]; 0.052 </td></tr> <tr> <td> <i>Seeking in preload:</i> </td> <td> 0.53; 0.29 </td> <td> 0.13; 0.071; 0.088 </td> <td> [-; 0.028]; [0.027; 0.028]; 0.0073 </td></tr> <tr> <td> <i>Deleting:</i> </td> <td> 1.18; 0.43 </td> <td> 0.20; 0.10; 0.13 </td> <td> [0.08; 0.058]; [0.067; 0.069]; 0.012 </td></tr></table> </div><table style="border-top: dotted 2px #999999; margin-top: 20pt; color: gray;" width="100%"><tr><td style="text-align: left;" width="40%"><a href="http://oscada.org/wiki/Modules/SQLite/ru">Modules/SQLite/ru</a> - <a href="http://oscada.org/en/main/about-the-project/licenses/">GFDL</a></td><td style="text-align: center;">April 2025</td><td style="text-align: right;" width="40%">OpenSCADA 1+r3018</td></tr></table></body> </html>