Forums.Avtograd.Ru: SQLite - Forums.Avtograd.Ru

Перейти к содержимому

Страница 1 из 1
  • Вы не можете создать новую тему
  • Вы не можете ответить в тему

SQLite кто-нибудь имеет опыт использования?

#1 Пользователь офлайн   Terror

  • Активный пользователь
  • PipPipPip
  • Группа: Пользователи
  • Сообщений: 512
  • Регистрация: 01 Ноябрь 07

Отправлено 06 Март 2008 - 23:22

Надоели мне чудеса, происходящие с ADO, решил посмотреть в сторону альтернативных баз данных. Наткнулся на описание SQLite. Скачал, написал тестовое приложение, впечатления положительные.

Библиотека оказалась простой в использовании и понимании, дает, сравнительно, небольшой довесок к дистрибутиву в виде 500 КБ DLL-ки.

Судя по описанию поддерживает, в том числе, и многопоточность.

Казалось бы нашел. Но тут возник вопрос - а не возникнет ли в процессе использования каких-либо неприятных сюрпризов. Кода переписывать придется не мало, поэтому хотелось бы убедиться, что время будет потрачено не зря.

Если у кого-нибудь есть опыт работы с этой БД поделитесь впечатлениями.
<!--sizeo:2--><span style="font-size:10pt;line-height:100%"><!--/sizeo-->< a href="http://forums.avtograd.ru/index.php?showtopic=119165" target="_blank">Quick Confign - программа для быстрого изменения настроек Windows</a><!--sizec--></span><!--/sizec-->
0


Страница 1 из 1
  • Вы не можете создать новую тему
  • Вы не можете ответить в тему

Другие ответы в этой теме

#2 Пользователь офлайн   up

  • Старожил
  • PipPipPipPipPip
  • Группа: Пользователи
  • Сообщений: 1 193
  • Регистрация: 01 Ноябрь 07

Отправлено 06 Март 2008 - 23:31

тоже хочу использовать в свём приложении через компанеты делфи ASQLite.
сам ещё не пользовался, но у меня мальнеька база и относитльено простые задачи.
рекомендовал-бы создасть макет, как это будет в программе(как я понял АОЛ), и погонять в рабочем режиме в тысяч 100 или милон циклов, посматреть не течёт ли память не бывает ли глюков.

пс библиотека помоему не многопоточная, во всяком случае в той доркументации что я читал, написаннно "возможно использрование в многопоточьном приложении", а каким именно образом - не указанно. это так, на всякий случай.

пс2 а вообще разаботка достаточно старая, то есть по идее все глюки должы быть выловленны.

пс3 обезательно почитай на сайте документацию по запросам. она напимер бинарные данные не поддерживает, может ещё какие ограничения есть.
0

#3 Пользователь офлайн   Terror

  • Активный пользователь
  • PipPipPip
  • Группа: Пользователи
  • Сообщений: 512
  • Регистрация: 01 Ноябрь 07

Отправлено 07 Март 2008 - 00:31

Полностью идентичный макет создать сложно. :)

Погонять-то погонял, в несколько потоков UPDATE, SELECT, DELETE с блокировкой и без, чтобы посомотреть как себя ведет. Вроде бы неплохо. Но, как я уже писал, интересуют именно ньюансы (грабли, по-нашему) :)

пс
Как утверждается на сайте многопоточность там есть.

пс2
баги есть везде :)

пс3
бинарники, надеюсь, не понадобятся
<!--sizeo:2--><span style="font-size:10pt;line-height:100%"><!--/sizeo-->< a href="http://forums.avtograd.ru/index.php?showtopic=119165" target="_blank">Quick Confign - программа для быстрого изменения настроек Windows</a><!--sizec--></span><!--/sizec-->
0

#4 Пользователь офлайн   coldseed

  • Новичок
  • Pip
  • Группа: Пользователи
  • Сообщений: 92
  • Регистрация: 01 Ноябрь 07

Отправлено 07 Март 2008 - 03:56

А что за такие "чудеса с ADO"??? И с каким таким ADO?
0

#5 Пользователь офлайн   Terror

  • Активный пользователь
  • PipPipPip
  • Группа: Пользователи
  • Сообщений: 512
  • Регистрация: 01 Ноябрь 07

Отправлено 07 Март 2008 - 09:22

Из Wiki - ADO (от англ. ActiveX Data Objects — «объекты данных ActiveX») — интерфейс программирования приложений для доступа к данным, разработанный компанией Microsoft и основанный на технологии компонентов ActiveX. ADO позволяет представлять данные из разнообразных источников (реляционных баз данных, текстовых файлов и т. д.) в объектно-ориентированном виде.

Про чудеса можно почитать в ветке Вопросов к компании, посвященной АОЛу. :)
Вот, например http://forums.avtogr...o...st&p=329350
или вот
http://forums.avtogr...o...st&p=254212
<!--sizeo:2--><span style="font-size:10pt;line-height:100%"><!--/sizeo-->< a href="http://forums.avtograd.ru/index.php?showtopic=119165" target="_blank">Quick Confign - программа для быстрого изменения настроек Windows</a><!--sizec--></span><!--/sizec-->
0

#6 Пользователь офлайн   coldseed

  • Новичок
  • Pip
  • Группа: Пользователи
  • Сообщений: 92
  • Регистрация: 01 Ноябрь 07

Отправлено 07 Март 2008 - 13:08

Аааа... ну млин, что ж вы хотели! ADO такая устаревшая и морально и физически технология :) Расшифровка ActiveX... уже оч давно не соответствует реальности, и АДО оставили просто как привычное имя.

Сейчас вместо нее заруливает все и вся ADO.NET, а особенно последние фишки, такие как ADO.NET Entity Framework и ADO.NET Data Services (поищите в инете про них)! Вот уж где действительно универсализированный доступ к базам данных, независимо от движка и структуры.


Меня просто смутила формулировка "Надоели мне чудеса, происходящие с ADO, решил посмотреть в сторону альтернативных баз данных."
Ибо ADO - это не база данных, а механизмы доступа к БД и сравнивать ее с SQLite ну никак нельзя.

Можно, например, сравнивать разные СУБД отдельно и разные ORM отдельно, но не ORM или другие механизмы доступа к данным с самой СУБД.
0

#7 Пользователь офлайн   Terror

  • Активный пользователь
  • PipPipPip
  • Группа: Пользователи
  • Сообщений: 512
  • Регистрация: 01 Ноябрь 07

Отправлено 07 Март 2008 - 16:40

Я это так, для простоты изложения. Разумеется ADO не база, а способ доступа. Но вместе с тем, в сочетании с Jet (или как там его сейчас называют) это СУБД.

Просмотр сообщенияcoldseed (7.3.2008, 13:08):

Аааа... ну млин, что ж вы хотели! ADO такая устаревшая и морально и физически технология :) Расшифровка ActiveX... уже оч давно не соответствует реальности, и АДО оставили просто как привычное имя.

Сейчас вместо нее заруливает все и вся ADO.NET, а особенно последние фишки, такие как ADO.NET Entity Framework и ADO.NET Data Services (поищите в инете про них)! Вот уж где действительно универсализированный доступ к базам данных, независимо от движка и структуры.
Меня просто смутила формулировка "Надоели мне чудеса, происходящие с ADO, решил посмотреть в сторону альтернативных баз данных."
Ибо ADO - это не база данных, а механизмы доступа к БД и сравнивать ее с SQLite ну никак нельзя.

Можно, например, сравнивать разные СУБД отдельно и разные ORM отдельно, но не ORM или другие механизмы доступа к данным с самой СУБД.

<!--sizeo:2--><span style="font-size:10pt;line-height:100%"><!--/sizeo-->< a href="http://forums.avtograd.ru/index.php?showtopic=119165" target="_blank">Quick Confign - программа для быстрого изменения настроек Windows</a><!--sizec--></span><!--/sizec-->
0

#8 Пользователь офлайн   quarck

  • Новичок
  • Pip
  • Группа: Пользователи
  • Сообщений: 83
  • Регистрация: 28 Ноябрь 07

Отправлено 08 Март 2008 - 00:03

Просмотр сообщенияTerror (6.3.2008, 23:22):

Надоели мне чудеса, происходящие с ADO, решил посмотреть в сторону альтернативных баз данных. Наткнулся на описание SQLite. Скачал, написал тестовое приложение, впечатления положительные.

Библиотека оказалась простой в использовании и понимании, дает, сравнительно, небольшой довесок к дистрибутиву в виде 500 КБ DLL-ки.

Судя по описанию поддерживает, в том числе, и многопоточность.

Казалось бы нашел. Но тут возник вопрос - а не возникнет ли в процессе использования каких-либо неприятных сюрпризов. Кода переписывать придется не мало, поэтому хотелось бы убедиться, что время будет потрачено не зря.

Если у кого-нибудь есть опыт работы с этой БД поделитесь впечатлениями.


Коммент: все нижесказанное актуально для sqlite3.

По поводу многопоточности -- вполне поддерживается, но ее поддержка может быть выключена при компиляции, для надежности нужно удостоверится, что-бы sqlite3_threadsafe возвращала true.

По поводу косяков, которые лично я замети: если самостоятельно не оборачивать операции в транзакции (вложенные и именованны транзакции не поддерживаются), то автоматически каждый запрос будет оборачиватся в индивидуальную транзакцию ==> ооочень большие тормоза на insert-ах/update-ах, например у меня на тестах порядка 1000 инсертов в секунду получалось на достаточно простых данных. Таким образом сразу рекомендую архитектурировать код так, что-бы большие обьемы данных изменяемых одновременно, покрывались одной транзакцией.
Я поменял пароль на рандомный, считайте я удалил свой аккаунт, никому отвечать не смогу не хочу и не буду по этой причине.
0

#9 Пользователь офлайн   Barrabas

  • Пользователь
  • PipPip
  • Группа: Пользователи
  • Сообщений: 431
  • Регистрация: 01 Ноябрь 07

Отправлено 08 Март 2008 - 20:54

sqlite хочу заюзать в своем проектике небольшом, тут что главное в ее использовании, она блокирует все базу при записи и вроде даже при чтении (о многопоточности нет и речи, ну есть но поочереди, не как в серверах БД). Но для однопользовательской бд это не имеет значения, а вот для нескольких пользователей врятли.
0

#10 Пользователь офлайн   Barrabas

  • Пользователь
  • PipPip
  • Группа: Пользователи
  • Сообщений: 431
  • Регистрация: 01 Ноябрь 07

Отправлено 08 Март 2008 - 21:00

Просмотр сообщенияquarck (8.3.2008, 1:03):

.... то автоматически каждый запрос будет оборачиватся в индивидуальную транзакцию ....


ну так это почти везде так. и вполне логично. Просто в серваках обычно процедуры оборачиваются в транзакции, тут их нет (но они и не нужны во встраиваемой БД).
0

#11 Пользователь офлайн   quarck

  • Новичок
  • Pip
  • Группа: Пользователи
  • Сообщений: 83
  • Регистрация: 28 Ноябрь 07

Отправлено 10 Март 2008 - 19:47

Просмотр сообщенияBarrabas (8.3.2008, 21:00):

ну так это почти везде так. и вполне логично. Просто в серваках обычно процедуры оборачиваются в транзакции, тут их нет (но они и не нужны во встраиваемой БД).


Да, но дело в том, что транзакции в SQLite3 очень дорогие, медленные и тормозные
Я поменял пароль на рандомный, считайте я удалил свой аккаунт, никому отвечать не смогу не хочу и не буду по этой причине.
0

#12 Пользователь офлайн   Terror

  • Активный пользователь
  • PipPipPip
  • Группа: Пользователи
  • Сообщений: 512
  • Регистрация: 01 Ноябрь 07

Отправлено 10 Март 2008 - 23:10

Надеюсь это не станет для меня бутылочным горлом, т.к. обновления базы эпизодические, происходят тогда, когда, например, меняется баланс или информация о записи (пользователь ткнул кнопку обновления, программа автоматически, по таймеру, обновила баланс).
Тем более, что можно написать обертку, копить изменения и производить их за одну транзакцию.
<!--sizeo:2--><span style="font-size:10pt;line-height:100%"><!--/sizeo-->< a href="http://forums.avtograd.ru/index.php?showtopic=119165" target="_blank">Quick Confign - программа для быстрого изменения настроек Windows</a><!--sizec--></span><!--/sizec-->
0

#13 Пользователь офлайн   Barrabas

  • Пользователь
  • PipPip
  • Группа: Пользователи
  • Сообщений: 431
  • Регистрация: 01 Ноябрь 07

Отправлено 11 Март 2008 - 12:27

Просмотр сообщенияTerror (11.3.2008, 0:10):

Тем более, что можно написать обертку, копить изменения и производить их за одну транзакцию.

зачем, просто явно начинать транзакцию нужно перед циклом инсертов и все
0

#14 Пользователь офлайн   Terror

  • Активный пользователь
  • PipPipPip
  • Группа: Пользователи
  • Сообщений: 512
  • Регистрация: 01 Ноябрь 07

Отправлено 11 Март 2008 - 14:12

Мы не ищем легких путей, это будет класс обертка, инкапсулирующий работу с базой, самостоятельно накапливающий изменения и производящий транзакции :)
<!--sizeo:2--><span style="font-size:10pt;line-height:100%"><!--/sizeo-->< a href="http://forums.avtograd.ru/index.php?showtopic=119165" target="_blank">Quick Confign - программа для быстрого изменения настроек Windows</a><!--sizec--></span><!--/sizec-->
0

#15 Пользователь офлайн   quarck

  • Новичок
  • Pip
  • Группа: Пользователи
  • Сообщений: 83
  • Регистрация: 28 Ноябрь 07

Отправлено 12 Март 2008 - 17:53

Просмотр сообщенияTerror (11.3.2008, 14:12):

Мы не ищем легких путей, это будет класс обертка, инкапсулирующий работу с базой, самостоятельно накапливающий изменения и производящий транзакции :)


Я в свое время избрал более простой способ -- класс обертка вокруг хендла базы, автоматически всегда держащая активной транзакцию, и переодически, автоматом раз в минуту, или по вызову метода sync(), делался commit transaction / begin transaction, проблемы сразу все сняло ;) Хотя конечно все зависит от логики приложени, в моем случае была потоковая работа с данными, так что выделить отдельных независимых кусков данных особо нельзя было.
Я поменял пароль на рандомный, считайте я удалил свой аккаунт, никому отвечать не смогу не хочу и не буду по этой причине.
0

Страница 1 из 1
  • Вы не можете создать новую тему
  • Вы не можете ответить в тему

1 человек читают эту тему
0 пользователей, 1 гостей, 0 скрытых пользователей