Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2008.05.25;
Скачать: [xml.tar.bz2];

Вниз

Вопрос по SQLite базу данных   Найти похожие ветки 

 
Wolf   (2007-12-13 01:21) [0]

Говорят быстрая и простая база данных. Вопрос про быстродействие.

1) Как будет отражаться на скорости запуска и работы программы работа с файлом базы размером 200 - 300 мб ? ( в базе все настройки списки и отчёты)

2) Возможно ли в SQLite использовать для хранения 2 разных файла ? Наприемр в 1 файле для ускорения быстродействия сохранять необходимые настройки и данные для работы, а отчёты сохранять во втором файле БД?

Интересует именно скорость работы ( открытие базы, выполенение SELECT, добавление записи в БД и пр ) так как для проекта который предпологаеться писать скорость очень сильно важна.

p.s Использование сетевых баз например MSSQL, MySQL или Firebird непременимо в проекте к сожалению. Нужна именно локальная и быстродействующая база данных.

Жду ответа.
С уважением к участникам форума.


 
PEAKTOP ©   (2007-12-13 01:38) [1]

Firebird Embedded попробуй.


 
Anatoly Podgoretsky ©   (2007-12-13 08:39) [2]

> Wolf  (13.12.2007 01:21:00)  [0]


 
Anatoly Podgoretsky ©   (2007-12-13 08:41) [3]

> Wolf  (13.12.2007 01:21:00)  [0]

> p.s Использование сетевых баз например MSSQL, MySQL или Firebird непременимо в проекте к сожалению. Нужна именно локальная и быстродействующая база данных.

MSSQL и Firebird могут работать в локальном режиме. Первая в этом режиме быстрее более чем на порядок, касательно второй не знаю, думаю тоже.


 
Wolf   (2007-12-13 11:32) [4]

К сожеланию MSSQL и Firebird нет желания использовать так как это :

1) Дополнительные файлы
2) Дополнительные запущенные приложения

А это в случае моего нового проекта никак не соответствует требованиям :(

Вопрос именно про SQLite или другую локальную БД.
Почему прельщает именно SQLite так как там одна - две dll и ничего лишнего.

Ещё раз спрошу :

Вопрос про SQLite

1) Как будет отражаться на скорости запуска и работы программы работа с файлом базы размером 200 - 300 мб ? ( в базе все настройки списки и отчёты)

2) Возможно ли в SQLite использовать для хранения 2 разных файла ? Наприемр в 1 файле для ускорения быстродействия сохранять необходимые настройки и данные для работы, а отчёты сохранять во втором файле БД?

Интересует именно скорость работы ( открытие базы, выполенение SELECT, добавление записи в БД и пр ) так как для проекта который предпологаеться писать скорость очень сильно важна.

Сетевые БД ( в том числе MSSQL, MySQL или Firebird ) НЕ Интересуют.


 
Sergey13 ©   (2007-12-13 11:40) [5]

> [4] Wolf   (13.12.07 11:32)
> никак не соответствует требованиям

Кто автор требований?

> Ещё раз спрошу
200-300 метов - это детские объемы. Скорость зависит только от тебя, как ты спроектируешь структуру и как напишешь приложение.
Можно и оракл на 20 мегабайтной базе на колени поставить.


 
Wolf   (2007-12-13 11:49) [6]

> Sergey13 ©   (13.12.07 11:40) [5]

> оракл на 20 мегабайтной

и так встанет на колени, объёмы не те :)

По подсчётам файл базы данных SQLite будет не больше 300 мб.

Вопрос : Сильно ли будет тормозить программа при запуске, выборке ?
Тут очень важно быстродействие.

p.s Дорогие форумчане : Я не прошу совета что мне использовать :) Я прошу ответа на 2 простых вопроса :)

Кто нибудь мне ответит ?


 
Sergey13 ©   (2007-12-13 11:51) [7]

> [6] Wolf   (13.12.07 11:49)
> Вопрос : Сильно ли будет тормозить программа при запуске, выборке ?
Ты читать умеешь? Еще раз отвечу - как запросишь и какую выборку. Одно дело выбрать одну запись по ПК, другое дело запросить все записи и фильтровать в приложении.


 
sniknik ©   (2007-12-13 11:52) [8]

> скорость очень сильно важна.
тогда вам нужен программист... разбирающийся программист, которому не лень день потратить на написание интересующего теста скорости для нужных операций. (хотя для знакомство с новым движком лучше выделить время побольше...)

> Сетевые БД ( в том числе MSSQL, MySQL или Firebird ) НЕ Интересуют.
в том то и дело что эти "сетевые" бд. есть и в локальном варианте. и в случае с Firebird тоже только с парой dll для копирования вместе с приложением.
т.е. не интересуют они тебя не потому что не подходят, а по какимто личным мотивам, например не хочеш учить новое...


 
Anatoly Podgoretsky ©   (2007-12-13 11:53) [9]

> Wolf  (13.12.2007 11:32:04)  [4]

> Почему прельщает именно SQLite так как там одна - две dll и ничего лишнего.

Два дополнительных файла!


 
sniknik ©   (2007-12-13 11:55) [10]

> Кто нибудь мне ответит ?
скорее всего нет. т.к. ответ будет означать что комуто придется провести тест вместо тебя. причем тест абстрактный, не зная твоих критериев скорости, реальных данных, реальных запросов. и главное, без гарантии, что его скорость тебу удастся повторить...


 
sniknik ©   (2007-12-13 11:57) [11]

> Два дополнительных файла!
точно. взял бы аксесс вообще ни одного не пришлось бы таскать (не будем вспоминать про старые ОС-и ;).


 
Anatoly Podgoretsky ©   (2007-12-13 11:58) [12]

> Sergey13  (13.12.2007 11:51:07)  [7]

А если сделать множественные вложенные запросы на большую глубину, то можно будет сделать вывод, что программа повисла.


 
Wolf   (2007-12-13 12:00) [13]

> sniknik ©   (13.12.07 11:52) [8]

У меня более 14 проектов в которых используються бд включая проекты на MS SQL ( ADO ) - Более 2 гб информации ( около 90 программ клиентов бухгалтерская программа )

MYSQL (MyDAC) - Управление интернет кафе - до 10 гб информации ( более 80 клубов и интернет кафе это тысячи клиентских мест )

Firebird изучал, делал программы но в работе не использовал, так как он мне не понравился. Предпочитаю MySQL

Acces - ( ADO ) - Около 5 программ для различных контор, включая заказ продукции через интернет.

Для BDE вообще в своё время вытащил ВРУЧНУЮ все используемые ею DLL чтобы НЕ УСТАНАВЛИВАТЬ её на компьютере пользователя а просто копировать.

====================================

Мне не нужны советы о том какую БД использовать.
Я лишь прошу ответить на вопрос, на сколько быстро будет работать в SQLite с объёмами 300 мб

SQLite сегодня сам посмотрю, но возможно есть ещё варианты для быстрой бд.

MSSQL, MySQL или Firebird, Access НЕ ИНТЕРЕСУЮТ !


 
Wolf   (2007-12-13 12:02) [14]

> sniknik ©   (13.12.07 11:55) [10]

Вообще то я спрашивал совета у тех кто уже работал с SQLite :) и знает на что она способна


 
Виталий Панасенко ©   (2007-12-13 12:36) [15]

Видимо, она(СУБД) очень "популярна"..Потому и ответы такие....А "скорость запуска программы" и т.д. - это для космического корабля, где доли сек решают многое на второй космической скорости ?


 
Anatoly Podgoretsky ©   (2007-12-13 13:03) [16]

Такой достоверной информации нет, все зависит от того, кто и как проводит тесты, а также от платформы и количество одновременно работающих задач.
И потом какая тебе разница, если ты настроился на использование именно ее.


 
Dreamse   (2007-12-13 16:04) [17]

> Anatoly Podgoretsky ©   (13.12.07 13:03) [16]

Альтернативу никто не подсказал к сожалению. а SQLite самая маленькая и не требующая драгих запущенных процесов БД
Лучше чем Paradox и легковеснее чем MSSQL

По идее име бы подошли даже простые списки но вот проблема в том что со списками размером 50 - 70 мб тяжело работать.

Буду проводить тесты, потом отпишусь


 
Anatoly Podgoretsky ©   (2007-12-13 16:54) [18]

> Dreamse  (13.12.2007 16:04:17)  [17]

Ну например Absolute DB вообще только один ехе файл.


 
Wolf   (2007-12-13 20:58) [19]

Компоненты : http://aducom.com/cen/download.php?view.12
SQLite 3.5.1

10 000 записей - размер файла 1 мб
Скорость выполнения запроса Insert 0.95 мсек
Скорость Select на 10 000 записей 672 мсек

На работе не сказываеться вообще, в цикле добавляя записи Insert загрузка проца 1-3 % ( цикл - 100 000 записей ) до сих пор идет :) будем ждать когда данных побольше будет

Интересно именно в цикле добавлять, чтобы сразу смотреть уровень загрузки ЦП


 
Anatoly Podgoretsky ©   (2007-12-13 22:33) [20]

> Wolf  (13.12.2007 20:58:19)  [19]

Что до сих пор идет и всего то 100 000 записей, ужас.


 
Anatoly Podgoretsky ©   (2007-12-13 22:33) [21]

> Wolf  (13.12.2007 20:58:19)  [19]

Насчет загрузки процессора всего на 1-3% это очень плохо, процессор не работает.


 
Anatoly Podgoretsky ©   (2007-12-13 22:36) [22]

При указаных характеристика 0.95 на вставку тебе потребуется, хотя посчитай сам - в сутках 86000 секунд.


 
Wolf   (2007-12-13 23:01) [23]

> Anatoly Podgoretsky ©   (13.12.07 22:33) [21]
> Насчет загрузки процессора всего на 1-3% это очень плохо, процессор не работает.

Можно конечно уменьшить процент загрузки, но тут вставка происходила в Цикле 0 - 100 000 специально чтобы посмотреть на сколько все это будет загружать ЦП

В принципе 20 мб работают достаточно быстро, а это у меня получилось 162 000 строк в таблице.

Теперь по второму вопросу : Можно разделить настройки и отчёты по разным файлам бд и обращаться к отчётам ( где будет множество записей ) не постоянно а только тогда когда нужно будет просматривать отчёты.

В общем скорость устраивает, функционал тоже.
Спасибо всем кто принял участие в обсуждении данного вопроса. И лично спасибо за участие Anatoly Podgoretsky.

Думаю тему можно закрывать.

p.s для небольших проектов SQLite показала себя на высоте, для больших проектов конечно же лучше использовать другие БД которые и предназначаються для этого.


 
Anatoly Podgoretsky ©   (2007-12-13 23:08) [24]

> Wolf  (13.12.2007 23:01:23)  [23]

> Теперь по второму вопросу : Можно разделить настройки и отчёты по разным файлам бд и обращаться к отчётам ( где будет множество записей ) не постоянно а только тогда когда нужно будет просматривать отчёты.

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


 
sniknik ©   (2007-12-14 12:48) [25]

> В общем скорость устраивает, функционал тоже.
у аксесса не устраивал, а здесь устроил? ведь тормоз же полный судя по твоему тесту...
для интереса проверил аксесс
время инсерта 1-ой записи не определилось = 0. (в готовой тестовой программке расчет времени выполнения идет по времени, т.е. грубовато, чтобы такие мелкие значения ловить надо на "тики" переделывать. что неохота. (да и не зачем, я ей все одно всегда меряю более солидные величины))

полный селект для 18тыс записей (10 не нашел, взял первую попавшуюся хоть немного похожую) выполняется 0,244 мсек
вставка того же количества (инсерт в таблицу с выборкой ее же как источника)  0,266 мсек. (в таблице нет индексов, если бы были время наверняка немного бы увеличилось на перестройку. кстати индексы ты у себя тоже не учитываешь, а надо бы для нормальной работы. фактически как бы быстро запись не вставлялась без них это имеет чисто теоретическое значение, на практике случаи работы без индексов очень редки (я к примеру встречался только раз с оправданной ситуацией когда они не использовались))

размер таблицы... ну какое это сейчас имеет значение? будет она 30 мег или 300? если ее через инет не передавать... даже не стал выделять его (размер) из общей базы. (а даже передавать, архиваторы счас хорошие)

т.е. имхо, сменял ты "шило на мыло" (писал что пользовался аксесс базами), по непонятной до сих пор причине. просто "внезапная любовь" вдруг. или... терзают меня смутные сомнения... ;), а ты случаем не "популялизатор" SQLite-а? типа ходишь по форумам интерес подогреваешь...


 
Wolf   (2007-12-14 19:59) [26]

> sniknik ©   (14.12.07 12:48) [25]

Ну давай разберемся.

Какой вес будет у приложения если в нем использовать Access ?

По таким критериям :

1) Какие доп утилиты программы нужно ставить на машину пользователя ? Если у него чистый компьютер, без ПО
2) Размер компонент ADO в приложении ?
3) Размер в памяти приложения ?

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

Я например всегда считал тяжеловесными файлы Access.
Возможно я не прав, но тогда прошу разъяснить в чём именно я неправ.
Для меня сейчас крайне важна : скорость работы, пониженная ресурсо емкость,  и чтобы почти никакой нагрузки на проц.

Размер дистрибутива программ имеет смысл. Чем меньше тем лучше.
Варианты БД ?

MS SQL, MySQL и Firebird не рассматриваем.


 
Wolf   (2007-12-14 20:00) [27]

С объемами БД определился, думаю будет не более 50 - 60 000 записей т.е не более 50 мб


 
sniknik ©   (2007-12-14 21:21) [28]

> По таким критериям :
опля... что тебя волнует,
а говорил работал с базами аксесс, и вообще с базами. ну, значит так работал.
"волнения" уровня начинающих.

> 1) Какие доп утилиты программы ...
...
1 - на чистом компьютере, вообще без ПО, даже без ОС вообще ни одна прикладная программа работать не будет. а вот если ОС есть, и она более менее современная то это все что необходимо, ничего "сверх" не потребуется.

2 - скомпили да проверь. на форму компонент положить в состоянии? хоть все, сначала без, а потом с, и вычисли разницу. :) только учти что большую часть (~%90) там будет модель COM занимать которую ты возможно подключишь и без ADO.

3 - не больше чем ОС выделит, и не меньше чем нужно для работы... (а какой смысл использовать как можно меньше памяти если ее тебе все одно выделили и никто болше ее использовать не может? вредительство какоето если кто так делает.)

> Я например всегда считал тяжеловесными файлы Access.
значит ты всегда ошибался.

> Возможно я не прав, но тогда прошу разъяснить в чём именно я неправ.
извини но если тебя не убеждает практически в 3 раза меньшее время запроса на почти в 2 раза большем количестве записей то ты уже потерян для разъяснений.


 
Anatoly Podgoretsky ©   (2007-12-14 22:58) [29]

> Wolf  (14.12.2007 19:59:26)  [26]

> MS SQL, MySQL и Firebird не рассматриваем.

Почему, потому что тебе неприятно?


 
Германн ©   (2007-12-15 00:53) [30]


> Для BDE вообще в своё время вытащил ВРУЧНУЮ все используемые
> ею DLL чтобы НЕ УСТАНАВЛИВАТЬ её на компьютере пользователя
> а просто копировать.
>

Как был варваром, так варваром и остался.


 
Wolf ©   (2007-12-15 10:20) [31]

> Германн ©   (15.12.07 00:53) [30]

Слегка глупо инсталлировать программу при инсталяции онной запускать инстляцию BDE
При том что пользователь ВООБЩЕ не должен знать для чего BDE нужна и что это вообще такое. Он ставит софт который купил. По этому было проще выложить dll и ничего не запускать при установке.


 
Wolf ©   (2007-12-15 10:21) [32]

> Anatoly Podgoretsky ©   (14.12.07 22:58) [29]

Не устраивают размеры. Если у меня программа занимает 700 кб то я не хочу ставить еще 20 мб MS SQL например. Мне проще скопировать DLL размером в 300 кб и при этом чтобы все работало.

Я не спорю. MS SQL очень хороший продукт с хорошими возможностями, но мне всей его функциональности с его весом не нужно.


 
Wolf ©   (2007-12-15 10:27) [33]

> sniknik ©   (14.12.07 21:21) [28]

> "волнения" уровня начинающих.

Я вот например зарабатываю на жизь тем что продаю программы в розницу :) Те которые написал и зарабатываю на этом неплохо. Чем зарабатываете на жизнь Вы мне не известно, но прошу заметить что я не говорю что Вы начинающий или глупый. Давайте будем уважать друг друга. Ведь получаеться что если я не поддерживаю Ваше мнение то я сразу лузер, недоучка или начинающий ?

На данный момент не хочу рассматривать MSSQL, MySQL, Access, Firebird и мне не интересно обсуждение данных программных продуктов. Я в самом начале топика вроде бы ясно описал что ищу альтернативу.

И убеждать меня в их применении не нужно, так как я уже использую для нескольких своих проектов эти БД и ПРЕКРАСНО осведомлен о возможностях той или иной БД.

Интересует альтернатива. Небольшая, быстрая и не требовательная к ресурсам


 
Anatoly Podgoretsky ©   (2007-12-15 10:47) [34]

> Wolf  (15.12.2007 10:27:33)  [33]

> Интересует альтернатива. Небольшая, быстрая и не требовательная к ресурсам

Тебя не интересует альтернатива, ты уже все решил, тебе нужно одобрение окружающих.


 
Wolf ©   (2007-12-15 10:49) [35]

> Anatoly Podgoretsky ©   (15.12.07 10:47) [34]

Да пока меня устраивает SQLite но я хотел бы рассмотреть варианты. Если вариантов не осталось то думаю топик можно закрывать.

Спасибо за внимание.


 
sniknik ©   (2007-12-15 11:51) [36]

> так как я уже использую для нескольких своих проектов эти БД и ПРЕКРАСНО осведомлен о возможностях той или иной БД.
ну, не так уж и прекрасно, как выясняется. не знаеш реальных возможностей одной из "отсеянной" базы. а ее возможности превосходят выбранную на порядок.
по отношению к другой(BDE) ведешь себя не как программист, а как диверсант, и даже не замечаешь этого. наоборот, гордишься как основным своим достижением...
с образованием у тебя явные пробелы, о "ПРЕКРАСНО" тут речи идти не может.

> Если вариантов не осталось
вариантов валом на самом деле, но какой смысл их предлагать если мы так и не знаем твоих критериев выбора? (говоришь важна скорость работы, а базу которая в 6-7 раз быстрее забраковал)

хотя нет, я не прав, предлагать тебе никто ничего не будет... поиск элементарно делается поиском... :), если бы было чтото конкретное, а так варианты перебирать, искать за тебя и еще чтото доказывать. увольте.
сам заходишь в гугль и 200-300 альтернативных движков тебе обеспечено...
(сам когдато искал, правда у меня были конкретные требования и из всей массы под них подошли/скачал гдето 27-28, из них реально, не по заявленным возможностям подошли 2-3, из которых и выбрал 1, причем самый тормозной судя мнению в инете (правда основание для этого мнения было странным "потому что он написан на дельфи"...), неважно, может так и было, поверхностные тесты явного преимущества других не дали, а по остальным параметрам (в том числе и присутствие исходников) этот подходил больше)


 
DeadMeat ©   (2007-12-18 01:22) [37]

А SQL Server 2005 Compact Edition ?



Страницы: 1 вся ветка

Форум: "Базы";
Текущий архив: 2008.05.25;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.57 MB
Время: 0.006 c
2-1209580636
IksIgrekZed
2008-04-30 22:37
2008.05.25
Как выделить полужирным стилем определённую ячейку TStringGrid?


8-1159089398
Brandik
2006-09-24 13:16
2008.05.25
Криво отображается BMP в форме.


15-1207253475
djaUser
2008-04-04 00:11
2008.05.25
Как правильно писать софт


2-1209201104
Vasja
2008-04-26 13:11
2008.05.25
Имя компьютера


15-1208204886
DIZzY
2008-04-15 00:28
2008.05.25
сборники заданий





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский