Наши преимущества

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

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

Ognev

ex-Team ITcluB
Команда форума
Credits
0
Всем доброго времени суток!
Давно уже ищу чего-нибудь, что бы позволило обращаться к локальной БД с помощью SQL без установки дополнительного ПО, ну и, само собой, без написания обработчика запросов SQL. Может кто посоветует готовое решение в виде компонента, позволяющих работать с какими-нибудь известными форматами файлов, или предложит еще какое-нибудь решение. Был бы очень благодарен!
Заранее всем спасибо!

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

1. Порт SQLite под Delphi (Как увидеть ссылки? | How to see hidden links?, совсем бесплатно).

2. AbsoluteDatabase (Как увидеть ссылки? | How to see hidden links?, круче, бесплатна для некомерческого использования, $ 195 за исходники).

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

4. NexusDB V2 Embedded (Как увидеть ссылки? | How to see hidden links?, не дам оценки, так как сам не юзал, говорят, что вторая версия вполне ничего, первая версия мне не нравилась, $ 275 с исходниками).

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

Дополнение: нашёл старое сравнение некоторых СУБД - Как увидеть ссылки? | How to see hidden links?, интересно, как источник ссылок.

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

Ну и ещё ссылку на Torry для порядка (Как увидеть ссылки? | How to see hidden links?.

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

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

Как увидеть ссылки? | How to see hidden links?
 
Последнее редактирование модератором:
Честно, говоря, вопрос не очень понятен. Лучше описать задачу.
Непонятно, что такое "дополнительное ПО". Например, MDAC - это дополнительное или нет? Локальная БД уже есть? Если есть, то в каком формате? Если нет, то какие к ней требования по возможностям, защите, масштабируемости?

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

Дополнение: а на чём собственно пишется прога?
 
Грубо, ситуация следующая. Есть программа (пусть на Delphi, я только на ней пишу, но не суть, думаю), в ней копится информация, а именно, есть несколько переменных, которые обновляются, при изменении любой, их текущие значения скидываются в строку (переменные при этом разделяются, например, табуляцией, ну или еще чем). При выходе все накопленное пишется в текстовый файл, дабы юзеру было потом чего смотреть.
Хочется все писать не в текстовый файл, а в некий файл, который будем условно называть далее БД (мне все равно, в каком он формате). От этой БД требуется всего лишь одно - чтобы программа могла из нее получать данные запросами SQL. Желательно, чтобы ими же могла в нее писать. Ничего более мне не надо - пусть это будет элементарная локально-однопользовательская БД без всяких наворотов. А без дополнительного ПО, это означает, что я не должен на машине ставить, например, Oracle, прежде чем моя прога заработает :) Должно быть так - я принес ехе-шник на любой комп (ну, максимум dll-ки какие-нибудь) и все работает.
Решил добавить в продолжение темы. Может есть дрова под dbExpress для работы с текстовыми файлами, dbf-ками или еще чем нибудь подобным. Это вполне бы устроило.
 
Последнее редактирование модератором:
1. Попробуй покопаться в XML.
2. Смотри на _realco_ding.net_ и _sql._ru там что-то похожее поднимается с завидной периодичностью :)
3. А что значит ДРОВА для dbExpress &)
 
Ognev
Никаких дров тебе не надо. Используй формат MS Access - *.mdb. Соединяешься с базой через компоненты на вкладке ADO (эти компоненты есть в стандартном дистрибутиве) и работаешь записываешь/читаешь данные в/из неё через SQL запросы. Единственное что тебе нужно предварительно сделать - это создать сам файл базы данных, т.к. программно создавать её муторно (сам не знаю как это делать, если честно). Просто создай через Access базу (то бишь структуру), обзови её как хочешь и таскай со своей прогой. Если возникнут вопросы пиши на alexplyus[dog]mail.ru
 
Последнее редактирование модератором:
Попробуй покопаться в XML
XML имею ввиду, но вопрос был про готовые решения. Если есть готовые компоненты для работы с этим форматом, то можно поподробнее?

Используй формат MS Access
Не пользовался никогда ADO, но подозрева, что для его работы на компе что-нибудь надо устанавливать, типа BDE. А если да, то проще BDE поставить и работать с dbf-ками или текстовым форматом.
 
Для работы с XML есть много готовых решений. Самое известное - MSXML (Microsoft XML Core Services). XML плох тем, что занимает очень много места, к томуже для твоей задачи он избыточен.

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

Слегка повторюсь, теперь уже более осмысленно:
Поскольку пишешь на Delphi, попробуй для начала использовать TClientDataSet (Удобно, просто. Кстати, поддерживает XML. Информации по нему полно в Инете, например с ходу: Как увидеть ссылки? | How to see hidden links?, Как увидеть ссылки? | How to see hidden links?).
Затем можно посмотреть полноценные СУБД, которые интегрируются в EXE-файл. AbsoluteDatabase (Как увидеть ссылки? | How to see hidden links?) - весьма неплохая СУБД, надёжная, нормально поддерживает SQL.
 
Последнее редактирование модератором:
ploki сказал(а):
ADO входит в состав MDAC (Microsoft Data Access Components). Какая-нибудь версия стоит на любом компе
Добавлю, что на WinXP ничего не надо ставить, а вот под Win98 версия старовата, но все равно пашет, гарантированно (писал прогу под WinXP в Delphi 7, прога работала на Win98 машине без проблем). Единственно проблемы могут возникнуть с Win95 (!!!) - там придется ставить новый МDAC.
 
Хорошо, ADO буду иметь в виду, но есть внутреннее ощущение, что с этим будет больше гемороя, чем пользы :)

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

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

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

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

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

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

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

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

Ну а на счет смешивания понятий ... Нет, если есть желание написать статью, так никто ж не против :) Полезно, думаю, будет. Только глянь сначала по поиску, может кто-то уже это делал.
 
DataSet'ы вообще запросы не выполняют. Запросы выполняют TQuery (который тебе и нужен), TADOQuery, TSQLQuery и др.
По использованию TClientDataSet cмотри раздел справки BDS "Using Client Datasets: Overview" и, особенно, "Using a Dedicated File on Disk".

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

Дополнение: я не очень понял, зачем вообще связываться с SQL, если уже есть фильтрация, поиск, вычисляемые поля. Или у тебя всё-таки несколько таблиц со сложными отношениями?
 
Последнее редактирование модератором:
Тоже неплохой вариант. В первую очередь бесплатностью.
Но SQLite - DLL библиотека (причём Сишная), поэтому придётся изучить API и написать юнит для поддержки. Кстати, кто-то уже это сделал.

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

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