ODBC ?

5 messages Options
Embed this post
Permalink
Илья Абдрахимов

ODBC ?

Reply Threaded More More options
Print post
Permalink
Привет, Всем !

Пытаюсь сделать приложение в котором один поток читает данные по COM порту
(реализовал) + требуется архивирование в БД.
По архивированию предполагаю использовать либо odbc.f, либо sqlite.f от
Андрея.
Понравился sqlite:
Плюсы: не требует инсталляции (1 DLL)
Минус: строка вида S" INSERT INTO Items (Name) VALUES ('Тест1')" sqh
db3_exec_ временами занимает >300 мс.
Можно попробовать так: читать в одном потоке с записью полученных данных в
очередь (кэш) для второго потока, который и будет производить архивирование.
Может у кого есть идеи (наработки) по созданию (работе) с очередью ?


ОФФ-ТОПИК: Как через ODBC создать новую базу ?



Bye!
Илья

Andrey Cherezov

Re: ODBC ?

Reply Threaded More More options
Print post
Permalink
Добрый день, Абдрахмов Илья!

Ваше сообщение от 23.12.2006 17:30:
> Минус: строка вида S" INSERT INTO Items (Name) VALUES ('Тест1')" sqh
> db3_exec_ временами занимает >300 мс.
>  
Это оптимизируется разными опциями SQLite, либо включением транзакций.
Можно 100 000 инсертов в секунду добиться, если я верно помню бенчмарки.
> ОФФ-ТОПИК: Как через ODBC создать новую базу ?
>  
Специального универсального вызова ODBC для этого вроде нет, хотя некоторые
БД и поддерживают "CREATE database". Проще всего файл-шаблон копировать
с пустой базой. А в SQLite база создается при попытке открытия
несуществующей.


Alex-334

Re: ODBC ?

Reply Threaded More More options
Print post
Permalink
In reply to this post by Илья Абдрахимов
Вечер добрый!

  По опыту -- лучше писать в файл. Сделать ротацию файлов. Один закончил, переключился на другой. Второй поток (процесс, как понравится) закачивает законченные файлы в базу. Так практически все промышленные системы работают.
 
  Если уж без СУБД никак, то, действительно, два потока -- один берет данные, второй в БД пишет. Но, опять же по опыту,  лучше первый вариант.

--
   С уважением, Алексей.


>Привет, Всем !
>
>Пытаюсь сделать приложение в котором один поток читает данные по COM порту
>(реализовал) + требуется архивирование в БД.
>По архивированию предполагаю использовать либо odbc.f, либо sqlite.f от
>Андрея.
>Понравился sqlite:
>Плюсы: не требует инсталляции (1 DLL)
>Минус: строка вида S" INSERT INTO Items (Name) VALUES ('Тест1')" sqh
>db3_exec_ временами занимает >300 мс.
>Можно попробовать так: читать в одном потоке с записью полученных данных в
>очередь (кэш) для второго потока, который и будет производить архивирование.
>Может у кого есть идеи (наработки) по созданию (работе) с очередью ?
>
>
>ОФФ-ТОПИК: Как через ODBC создать новую базу ?
>
>
>
>Bye!
>Илья
>
>-------------------------------------------------------------------------
>Take Surveys. Earn Cash. Influence the Future of IT
>Join SourceForge.net's Techsay panel and you'll get the chance to share your
>opinions on IT & business topics through brief surveys - and earn cash
>http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV
>_______________________________________________
>Spf-dev mailing list
>[hidden email]
>https://lists.sourceforge.net/lists/listinfo/spf-dev


--
--
Алексей


Andrey Cherezov

Re: ODBC ?

Reply Threaded More More options
Print post
Permalink
Добрый день, Alex!

Ваше сообщение от 23.12.2006 22:58:
>   По опыту -- лучше писать в файл. Сделать ротацию файлов. Один закончил, переключился на другой. Второй поток (процесс, как понравится) закачивает законченные файлы в базу. Так практически все промышленные системы работают.
>  
В промышленной системе Eserv есть plugin mlogc, который в таком режиме
файлы и пишет, с ротацией; правда не двухпоточно, а многопоточно. Причем
пишет в текстовом формате, который можно читать через ODBC (для удобства
построения отчетов). Этот вариант используется около 3-4 лет на сотнях
серверов.
Через SQLite просто быстрее - и то, и другое. Поэтому в том же plugin'е
была добавлена возможность записи в SQLite. Используется почти год, но
пока только на наших собственных серверах. Т.к. для внедрения в
промышленные системы требуется сначала очень масштабное тестирование на
себе :)


Илья Абдрахимов

Re: ODBC ?

Reply Threaded More More options
Print post
Permalink
In reply to this post by Alex-334


> -----Original Message-----
> From: [hidden email] [mailto:spf-dev-
> [hidden email]] On Behalf Of Alex
> Sent: Saturday, December 23, 2006 11:58 PM
> To: [hidden email]
> Subject: Re: [Spf-dev] ODBC ?
>
> Вечер добрый!
>
>   По опыту -- лучше писать в файл. Сделать ротацию файлов. Один закончил,
> переключился на другой. Второй поток (процесс, как понравится) закачивает
> законченные файлы в базу. Так практически все промышленные системы
> работают.
>
>   Если уж без СУБД никак, то, действительно, два потока -- один берет
> данные, второй в БД пишет. Но, опять же по опыту,  лучше первый вариант.
>
> --
>    С уважением, Алексей.
>

Спасибо Всем за советы !
Так и порешил: пишу пока в .csv, а если потребуется, то буду экспортировать
в БД.

Bye!
Илья