Локальная База Данных без установки дополнительного ПО

Статус
Закрыто для дальнейших ответов.

Ognev

ex-Team DUMPz
Свой / Own
Регистрация
20.08.2004
Сообщения
2 102
Реакции
902
Баллы
113
Возраст
25
Местоположение
В караганде
Всем доброго времени суток!
Давно уже ищу чего-нибудь, что бы позволило обращаться к локальной БД с помощью SQL без установки дополнительного ПО, ну и, само собой, без написания обработчика запросов SQL. Может кто посоветует готовое решение в виде компонента, позволяющих работать с какими-нибудь известными форматами файлов, или предложит еще какое-нибудь решение. Был бы очень благодарен!
Заранее всем спасибо!

Немного из ответов. Как будет время постараюсь привести все это в божеский вид ...
ploki сказал(а):
Обобщаю конкретные варианты встроенных СУБД для Delphi:

1. Порт SQLite под Delphi ( , совсем бесплатно).

2. AbsoluteDatabase ( , круче, бесплатна для некомерческого использования, $ 195 за исходники).

3. Accuracer ( , ещё круче, $ 215 за однопользовательский режим с исходниками + платные обновления $ 225 в год). Есть упрощённая версия - EasyTable, дешевле.

4. NexusDB V2 Embedded ( , не дам оценки, так как сам не юзал, говорят, что вторая версия вполне ничего, первая версия мне не нравилась, $ 275 с исходниками).

Мой выбор - AbsoluteDatabase. Кто пользовался или знает ещё что недорогое, пусть дополняет этот список. Будет весьма полезно. Особенно интересны оценки реального использования.

Дополнение: нашёл старое сравнение некоторых СУБД - , интересно, как источник ссылок.

Надо бы ещё добавить:
5. DISQLite3 ( , много полезных наворотов поверх SQLite, не использует Db.pas, но за деньги - $ 270 с исходниками, $ 90 - без). По полученному от друга отзыву - весьма достойные компоненты, активно развиваются, автор адекватен, единственный минус - некоторые нестандартные принципы организации как раз из-за неиспользования Db.pas.

Ну и ещё ссылку на Torry для порядка ( .

ploki; Supported by Guard сказал(а):
Firebird Embedded Server пробовали. Действительно Embedded, но
1. Только эксклюзивный доступ!
2. Безопасность низкая! Шифрования не нашли. Вопрос к гуру - ?
3. Не одна DLL, а как минимум 4 + файлы конфигурации (4 МБ минимум) .
4. Неудобно пользоваться DDL.
5. Большой плюс - поддержка кое-чего из SQL99.

А вообще для своих целей - использовать локально нормально созданные фаербёрдовские базы - подходит очень хорошо, да и развивается.

 
Последнее редактирование модератором:

ploki

Active member
Регистрация
16.05.2005
Сообщения
237
Реакции
180
Баллы
43
Местоположение
Москва
Честно, говоря, вопрос не очень понятен. Лучше описать задачу.
Непонятно, что такое "дополнительное ПО". Например, MDAC - это дополнительное или нет? Локальная БД уже есть? Если есть, то в каком формате? Если нет, то какие к ней требования по возможностям, защите, масштабируемости?

Навскидку можно назвать Microsoft Desktop Engine, который теперь стал MS SQL Server 2005 Express Edition, Borland MyBase (через ClientDataSet), Borland DB Express, кучу разных компонентов, например AbsoluteDatabase ( .
Но всё зависит от решаемой задачи.

Дополнение: а на чём собственно пишется прога?
 

Ognev

ex-Team DUMPz
Свой / Own
Регистрация
20.08.2004
Сообщения
2 102
Реакции
902
Баллы
113
Возраст
25
Местоположение
В караганде
Грубо, ситуация следующая. Есть программа (пусть на Delphi, я только на ней пишу, но не суть, думаю), в ней копится информация, а именно, есть несколько переменных, которые обновляются, при изменении любой, их текущие значения скидываются в строку (переменные при этом разделяются, например, табуляцией, ну или еще чем). При выходе все накопленное пишется в текстовый файл, дабы юзеру было потом чего смотреть.
Хочется все писать не в текстовый файл, а в некий файл, который будем условно называть далее БД (мне все равно, в каком он формате). От этой БД требуется всего лишь одно - чтобы программа могла из нее получать данные запросами SQL. Желательно, чтобы ими же могла в нее писать. Ничего более мне не надо - пусть это будет элементарная локально-однопользовательская БД без всяких наворотов. А без дополнительного ПО, это означает, что я не должен на машине ставить, например, Oracle, прежде чем моя прога заработает :) Должно быть так - я принес ехе-шник на любой комп (ну, максимум dll-ки какие-нибудь) и все работает.
Решил добавить в продолжение темы. Может есть дрова под dbExpress для работы с текстовыми файлами, dbf-ками или еще чем нибудь подобным. Это вполне бы устроило.
 
Последнее редактирование модератором:

verhovetc

Member
Регистрация
07.10.2005
Сообщения
63
Реакции
13
Баллы
8
Местоположение
Россия
1. Попробуй покопаться в XML.
2. Смотри на _realco_ding.net_ и _sql._ru там что-то похожее поднимается с завидной периодичностью :)
3. А что значит ДРОВА для dbExpress &)
 

ALEXPLUS

New member
Регистрация
24.10.2005
Сообщения
12
Реакции
2
Баллы
3
Местоположение
Ташкент
Ognev
Никаких дров тебе не надо. Используй формат MS Access - *.mdb. Соединяешься с базой через компоненты на вкладке ADO (эти компоненты есть в стандартном дистрибутиве) и работаешь записываешь/читаешь данные в/из неё через SQL запросы. Единственное что тебе нужно предварительно сделать - это создать сам файл базы данных, т.к. программно создавать её муторно (сам не знаю как это делать, если честно). Просто создай через Access базу (то бишь структуру), обзови её как хочешь и таскай со своей прогой. Если возникнут вопросы пиши на alexplyus[dog]mail.ru
 
Последнее редактирование модератором:

Ognev

ex-Team DUMPz
Свой / Own
Регистрация
20.08.2004
Сообщения
2 102
Реакции
902
Баллы
113
Возраст
25
Местоположение
В караганде
Попробуй покопаться в XML
XML имею ввиду, но вопрос был про готовые решения. Если есть готовые компоненты для работы с этим форматом, то можно поподробнее?

Используй формат MS Access
Не пользовался никогда ADO, но подозрева, что для его работы на компе что-нибудь надо устанавливать, типа BDE. А если да, то проще BDE поставить и работать с dbf-ками или текстовым форматом.
 

ploki

Active member
Регистрация
16.05.2005
Сообщения
237
Реакции
180
Баллы
43
Местоположение
Москва
Для работы с XML есть много готовых решений. Самое известное - MSXML (Microsoft XML Core Services). XML плох тем, что занимает очень много места, к томуже для твоей задачи он избыточен.

ADO входит в состав MDAC (Microsoft Data Access Components). Какая-нибудь версия стоит на любом компе, вопрос только - какая именно :). Но можно ориентироваться не на последнюю. Использовать ADO - хороший вариант в смысле последующего масштабирования или смены формата базы. Никто не мешает через ADO работать и с текстовыми файлами :)
BDE устанавливать в любом случае сложнее, плюс, придётся конфигурировать.

Слегка повторюсь, теперь уже более осмысленно:
Поскольку пишешь на Delphi, попробуй для начала использовать TClientDataSet (Удобно, просто. Кстати, поддерживает XML. Информации по нему полно в Инете, например с ходу: , ).
Затем можно посмотреть полноценные СУБД, которые интегрируются в EXE-файл. AbsoluteDatabase ( ) - весьма неплохая СУБД, надёжная, нормально поддерживает SQL.
 
Последнее редактирование модератором:

ALEXPLUS

New member
Регистрация
24.10.2005
Сообщения
12
Реакции
2
Баллы
3
Местоположение
Ташкент
ploki сказал(а):
ADO входит в состав MDAC (Microsoft Data Access Components). Какая-нибудь версия стоит на любом компе
Добавлю, что на WinXP ничего не надо ставить, а вот под Win98 версия старовата, но все равно пашет, гарантированно (писал прогу под WinXP в Delphi 7, прога работала на Win98 машине без проблем). Единственно проблемы могут возникнуть с Win95 (!!!) - там придется ставить новый МDAC.
 

Ognev

ex-Team DUMPz
Свой / Own
Регистрация
20.08.2004
Сообщения
2 102
Реакции
902
Баллы
113
Возраст
25
Местоположение
В караганде
Хорошо, ADO буду иметь в виду, но есть внутреннее ощущение, что с этим будет больше гемороя, чем пользы :)

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

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

На счет TClientDataSet ... как я себе представляю ситуацию (поправьте, если ошибаюсь), вся эта байда работает только для 5-ти типов БД, для которых Borland соизволил написать свою дрова. Про остальные БД ими было сказано - пишите свои дрова и будет вам счастье.

Встроенные БД ... тоже методически не хотелось бы хранить данные в ехе-шнике. Будет гемор с обменом данными из разных БД.
 

ploki

Active member
Регистрация
16.05.2005
Сообщения
237
Реакции
180
Баллы
43
Местоположение
Москва
Поправлю про TClientDataSet - не путаем с Borland DBExpress! Совершенно разные вещи. TClientDataSet - часть технологии MIDAS, но прекрасно подходит для работы с локальными данными, особенно если у тебя одна-две таблицы. Данные хранятся либо в файле cds, либо в xml. То есть основное назначение TClientDataSet - кэширование данных в многозвенных приложениях, но реализация получилась столь удачна, что Borland официально рекомендует его использовать для работы с локальными данными и называет технологией MyBase.

DBExpress тоже неплохая вещь, но это не СУБД, а скорее провайдер как раз для серьёзных внешних СУБД. DBExpress для текстовых файлов нет именно по этой причине.

Про встроенные БД замечание не понял - ведь данные в exe-шнике хранить и не надо: БД отдельно, а только СУБД - в exe-шнике.

P.S. Складывается впечатление, что при обсуждении часто смешиваются понятия БД, СУБД, провайдера данных, файла-хранилища и т.п. Может, создать тему про основные определения и технологии СУБД (ограничившись только реляционной моделью, а то слишком широко будет)?
 
Последнее редактирование модератором:

Ognev

ex-Team DUMPz
Свой / Own
Регистрация
20.08.2004
Сообщения
2 102
Реакции
902
Баллы
113
Возраст
25
Местоположение
В караганде
Я чего-то не понял, а что TClientDataSet умеет выполнять SQL запросы?

На счет "только СУБД - в exe-шнике" - ошибочка, значится вышла :) надо будет глянуть, что это такое.

Ну а на счет смешивания понятий ... Нет, если есть желание написать статью, так никто ж не против :) Полезно, думаю, будет. Только глянь сначала по поиску, может кто-то уже это делал.
 

ploki

Active member
Регистрация
16.05.2005
Сообщения
237
Реакции
180
Баллы
43
Местоположение
Москва
DataSet'ы вообще запросы не выполняют. Запросы выполняют TQuery (который тебе и нужен), TADOQuery, TSQLQuery и др.
По использованию TClientDataSet cмотри раздел справки BDS "Using Client Datasets: Overview" и, особенно, "Using a Dedicated File on Disk".

Про остальное посмотрим :)

Дополнение: я не очень понял, зачем вообще связываться с SQL, если уже есть фильтрация, поиск, вычисляемые поля. Или у тебя всё-таки несколько таблиц со сложными отношениями?
 
Последнее редактирование модератором:

trans

New member
Регистрация
21.09.2005
Сообщения
14
Реакции
3
Баллы
3
Возраст
54
Местоположение
Москва
Может надо что-то наподобие SQLite?
 

ploki

Active member
Регистрация
16.05.2005
Сообщения
237
Реакции
180
Баллы
43
Местоположение
Москва
Тоже неплохой вариант. В первую очередь бесплатностью.
Но SQLite - DLL библиотека (причём Сишная), поэтому придётся изучить API и написать юнит для поддержки. Кстати, кто-то уже это сделал.

AbsoluteDatabase удобней и чуть продвинутей, но платная.
 

Ognev

ex-Team DUMPz
Свой / Own
Регистрация
20.08.2004
Сообщения
2 102
Реакции
902
Баллы
113
Возраст
25
Местоположение
В караганде
я не очень понял, зачем вообще связываться с SQL
Потому что, устроить фильтрацию, поиск и еще чего-нибудь по пяти полям, я могу и сам из текстового файла. Вопрос стоит глобально. Попробу еще раз сформулировать:
1) Нужна однопользовательская БД (читай, что не нужны никакие навороты).
2) То, что ploki любит называть СУБД, должно быть ехе-шнике программы и/или dll-ках, а не инсталироваться, как дополнительный софт.
3) Нужно, чтобы то, что ploki любит называть СУБД :))) поддерживало выборку данных и их сохранение/модификацию через запросы SQL (не обсуждается, хочу и все :))
4) Мне не нужен геморой в виде написания своих dll, обработчиков SQL, еще чего-то подобного.
В идеале, хотелось бы иметь компонент(ы) или класс(ы), делающие все это, чтобы при необходимости я мог вставить это в любое приложение и жить долго и счастливо :)

На счет DataSet-ов и Query, так мне казалось что данные передатся из Query в DataSet, а не наоборот! У меня пока нет под рукой дельфы, так что не посмотреть. А если я прав, тогда (с учетом того, что SQL обязателен), то вроде как DataSet-ы отпадают.
 

ploki

Active member
Регистрация
16.05.2005
Сообщения
237
Реакции
180
Баллы
43
Местоположение
Москва
Теперь всё ясно! Требования определены вполне точно.

Обобщаю конкретные варианты встроенных СУБД для Delphi:

1. Порт SQLite под Delphi ( , совсем бесплатно).

2. AbsoluteDatabase ( , круче, бесплатна для некомерческого использования, $ 195 за исходники).

3. Accuracer ( , ещё круче, $ 215 за однопользовательский режим с исходниками + платные обновления $ 225 в год). Есть упрощённая версия - EasyTable, дешевле.

4. NexusDB V2 Embedded ( , не дам оценки, так как сам не юзал, говорят, что вторая версия вполне ничего, первая версия мне не нравилась, $ 275 с исходниками).

Мой выбор - AbsoluteDatabase. Кто пользовался или знает ещё что недорогое, пусть дополняет этот список. Будет весьма полезно. Особенно интересны оценки реального использования.

Дополнение: нашёл старое сравнение некоторых СУБД - , интересно, как источник ссылок.
 
Последнее редактирование модератором:

Ognev

ex-Team DUMPz
Свой / Own
Регистрация
20.08.2004
Сообщения
2 102
Реакции
902
Баллы
113
Возраст
25
Местоположение
В караганде
ploki,
спасибо за ответы. Как появится время :) сразу начну пробовать. Как думаешь, что из остального стоит воткнуть в шапку? Отпишись или здесь, или в личку. Пусть все будет в кучке, чтобы народ потом не лазил по всей ветке.
 

ploki

Active member
Регистрация
16.05.2005
Сообщения
237
Реакции
180
Баллы
43
Местоположение
Москва
IMHO, в шапку стоит поместить развёрнутую постановку задачи и ссылки с комментариями. Потом обновлять личными впечатлениями от использования.

Надо бы ещё добавить:
5. DISQLite3 ( , много полезных наворотов поверх SQLite, не использует Db.pas, но за деньги - $ 270 с исходниками, $ 90 - без). По полученному от друга отзыву - весьма достойные компоненты, активно развиваются, автор адекватен, единственный минус - некоторые нестандартные принципы организации как раз из-за неиспользования Db.pas.

Ну и ещё ссылку на Torry для порядка ( .
 

trans

New member
Регистрация
21.09.2005
Сообщения
14
Реакции
3
Баллы
3
Возраст
54
Местоположение
Москва
ploki сказал(а):
Теперь всё ясно! Требования определены вполне точно.

Обобщаю конкретные варианты встроенных СУБД для Delphi:

1. Порт SQLite под Delphi ( , совсем бесплатно).
На всякий случай. Есть бесплатные компоненты под Delphi для этой DB. Zeos. Эти компоненты удобны тем, что они сразу несколько баз данных поддерживают. Oracle, MySQL, PostgreSQL и пр.
 

ploki

Active member
Регистрация
16.05.2005
Сообщения
237
Реакции
180
Баллы
43
Местоположение
Москва
Zeos - это не СУБД, а набор компонентов для доступа к другим СУБД.
Бесплатный то он бесплатный, но глючный, без внятного описания, короче - на любителя. Но это моё субъективное мнение после одной попытки использовать :), но мне есть, с чем сравнивать - CodeBase и то лучше.
 

trans

New member
Регистрация
21.09.2005
Сообщения
14
Реакции
3
Баллы
3
Возраст
54
Местоположение
Москва
ploki сказал(а):
Zeos - это не СУБД, а набор компонентов для доступа к другим СУБД.
Бесплатный то он бесплатный, но глючный, без внятного описания, короче - на любителя. Но это моё субъективное мнение после одной попытки использовать :), но мне есть, с чем сравнивать - CodeBase и то лучше.
Так я и сказал, что это компоненты для DB. Типа, как плюс в использовании SQLite. Плюс к этому, т.к. эти же компоненты идут для других баз данных, можно надеятся на легкую портацию программы для других DB.
На счет глючности ничего не могу сказать. С этими компонентами писал только под MySQL. Описания вроде хватает. Плюс есть сайт разработчиков с форумом.
А CodeBase, он вроде в file-серверами работал, если не ошибаюсь?
 

ploki

Active member
Регистрация
16.05.2005
Сообщения
237
Реакции
180
Баллы
43
Местоположение
Москва
Дык, задача сформулирована была как, обобщая, "встроенная СУБД для работы с локальной базой в однопользовательском режиме, но с полной поддержкой SQL".

Про CodeBase ошибаешься, вначале да, но не сейчас. См.
 

trans

New member
Регистрация
21.09.2005
Сообщения
14
Реакции
3
Баллы
3
Возраст
54
Местоположение
Москва
ploki сказал(а):
Дык, задача сформулирована была как, обобщая, "встроенная СУБД для работы с локальной базой в однопользовательском режиме, но с полной поддержкой SQL".
Это я помню. Я писал о перспективе использования Zeos. Мало ли что. Вдруг проект разоастется до клиент-сервера. ;)

ploki сказал(а):
Про CodeBase ошибаешься, вначале да, но не сейчас. См.
Угу. Спасибо. Буду знать.
 

Fighter

New member
Регистрация
05.04.2006
Сообщения
1
Реакции
1
Баллы
3
Местоположение
Минск
А почему никто про FireBird никто не вспомнил ?
Одна dll на мег примерно и все навароты SQL на любой машине.
 
Статус
Закрыто для дальнейших ответов.
198 144Темы
635 115Сообщения
3 618 408Пользователи
crankychildНовый пользователь
Верх