Официальный сайт студ.городка НГТУ
Программирование и БД » хранение данных в файле 

#1  16.02.08 12:35

хранение данных в файле

До сих пор работала с СУБД MSSQL и немного firebird и interbase(informix не в счет :))) ). Необходимо написать приложение именно в Делфи, работающее с данными и которое по разным причинам не может использовать эти три СУБД. Идеальный вариант - это вообще хранение данных в файле без какой-либо СУБД.  Просто ситуация такая, что программа предположительно будет стоять на большом количестве машин, не связанных в сети. Таким образом, на каждой машине должна стоять СУБД. А заказчик дуб дубом, пожелание такое "чтобы скопировал экзешник, запустил и все работало". Т.е никакую СУБД он ставить не будет. Инсталяторы писать я не умею :( (Кстати, буду благодарна за любую информацию по технологии, которая позволяет из VS2005 создовать setup проэкты. В инете про это написано не много ). Вот и возникла потребность хранить данные в файле. Теперь вопрос: как луче это организовать?

Offline

#2  16.02.08 13:57

Я
Профиль

Re: хранение данных в файле

Есть такая субд sqllite. Почитай про нее - это как раз БД в файле, если уж тебе удобнее работать с данными через SQL запросы. А про инсталяторы - так их полно сторонних. Самое простое, это самораспаковывающийся rar архив )

Offline

#3  16.02.08 16:20

rzk
Профиль

Re: хранение данных в файле

MS Access. В крайнем случае - XML.

Offline

#4  16.02.08 18:16

Я
Профиль

Re: хранение данных в файле

rzk, :)
Tigrishka, Да, раз уж делфи и interbase, то что тебе мешает дальше его использовать? Файлы interbase тоже тупо копируются.

Offline

#5  17.02.08 00:29

Re: хранение данных в файле


Предубеждения заказчика. У них сейчас есть действующий проект (СУБД firebird) ОЧЕНЬ коряво написанный. Они с ним  намучались уже, кое что и я исправляла. Все конечно от криворукости разработчиков, но осадок остался. А с Interbase у них раньше проблемы были. Кроме того, не  знаю как с другими версиями, но firebird 1.5 конфликтовал с вистой. В общем не хотят они две этих субд использовать и все.

ЗЫ. забыла сказать, что возможность того, что пропадут данные за 1-2 недели не сильно волнует, так что такая система сохранности данных как в oracle или mssql (ну, типа механизм отката транзакций и пр.) не особенно нужна. И еще. Все  данные помещаются в одной таблице. Собственно, и интересует, а нужна ли вообще субд? или можно тупо как-нибудь с каким-нибудь файлом работать?

Offline

#6  17.02.08 10:48

Я
Профиль

Re: хранение данных в файле

Tigrishka, Ну и задачка )))
Бери и пиши структуру, которая  будет содержать нужные тебе поля, и эти структуры записывай в двоичный файл. Конечно возникнут проблемы с выборкой/сортировкой, но это мелочи.

Offline

#7  17.02.08 13:48

rzk
Профиль

Re: хранение данных в файле

Я написал(а):

Бери и пиши структуру, которая  будет содержать нужные тебе поля, и эти структуры записывай в двоичный файл.

Зачем это делать, если есть xml придуманный как раз для хранения данных и куча библиотек для работы с ним? Изобретение велосипеда.

Offline

#8  17.02.08 17:59

Re: хранение данных в файле

Paradox! :) Delphi/Builder замечательно работают с этой СУБД через BDE, который ( если его нет в венде пользователя ) можно легко вшить в будущий дистрибутив с помощью InstallShield. В понятиях это СУБД как я помню БД - это папка, таблицы это файлы :)))

Offline

#9  17.02.08 19:09

Re: хранение данных в файле

для хранения данных одной таблицы БД тебе вряд ли нужна. как уже написали, xml лучший вариант

Offline

#10  17.02.08 23:06

Я
Профиль

Re: хранение данных в файле

rzk, Тоже верно. Но работать с ним в делфи не пробовал, а советовать то что не пробовал - глупо. И это не самый эффективный вариант с точки зрения производительности / времени на написание кода, если ты с этим не работал.

Offline

#11  19.02.08 12:15

Re: хранение данных в файле

Гораздо проще, удобнее и быстрее будет написать инсталяшку.
Начнется все с простого "нам нужна всего одна табличка и не нужна целостность данных", потом будет "ой, данные пропали, а как сделать чтобы не пропадали?" ну и т.п. и т.д. Это суровые реалии.
Берите СУБД (можно MS SQL Server 2000 версию MSDE).  В Inno Setup есть под нее скрипт, если дойдете до этого, могу выслать кусок кода инсталлятора (в inno setup)

Offline

#12  19.02.08 17:38

Re: хранение данных в файле

rzk написал(а):

XML

однозначно.

Offline

#13  19.02.08 20:57

Re: хранение данных в файле

Всем спасибо за обсуждение. Уже начала реализацию варианта, в котором данные будут тупо храниться в файле. Заказчик был поставлен в известность и о возможных проблемах с "пропажей данных" и о проблемах с  "выборкой/сортировкой". Его все устраивает.... Ну и пожалуйста :)

Уважаемые любители XML! Если можно, скиньте, пожалуйста, какой-нить демонстрационный проэкт (луче на делфи), в котором приводится пример работы с XML. На данный момент встречала XML только когда работала Vs2005, там ета IDE скидывает описание классов и прочее в XML файл. Конечно понимаю, в инете все есть, но на примерах все же быстрее.

2Мерзкий 
Вообще была мысль реализовать все на MS SQL Express 2005 (что такое MSDЕ не знаю). Заглохло по двум причинам. Во-первых, и это главное, на некоторых машинах, на которых предполагается использование этого проекта уже имеется SQL 2000, и возможен конфликт (по крайней мере, были преценденты, когда после установки express 2005 умирал sql2000 personal edition). А во вторых, это надо опять же писать инсталяшку. Самый доступный вариант, который я  попробовала это использование setup projects в VS2008. В итоге мой первый инсталяционный проект устанавливал сервер, но как создать  там БД , таблицы и пр. я не нашла:( Конечно, можно поставить query analyzer и сказать заказчику самому пропускать скрипты, но , думаю, не согласится. Что такое inno setup тожа пока не знаю.

Offline

#14  19.02.08 23:00

Re: хранение данных в файле

погугли "dephi xml"
вот с первой страницы - http://edocs.phpclub.net/xml/Delphi_XML.html


к сожалению, я на дельфи уже года 3 как не пишу...

Исправлено CbIP (19.02.08 23:01)

Offline

#15  20.02.08 18:18

Re: хранение данных в файле

блин храни все в бинарном файле или в текстовом, что мешает то?
Если есть необходимость напиши класс оболочку или заюзай хмл.
В свободном доступе куча прог для создания инсталяторов, даже от того же микрософта.

Offline

#16  20.02.08 18:31

Re: хранение данных в файле

да у самого борланда есть инсталшилд

Offline

#17  20.02.08 20:37

Re: хранение данных в файле

Думаю, что Вы рано или поздно придете к мысли о том, что лучше использовать нормальную СУБД, чем использовать обычный файл. Повторюсь, что разобраться с инсталлятором гораздо проще, быстрее и удобнее, чем разрешать проблемы с файлом в больших и малых количествах. MSDE - это DesktopEngine, тот же 2005EE, но 2000-й.
Создавать базу и обьъекты в ней можно обычными SQL-скриптами, которые выполняются из osql.exe из командной строки (все делается в инсталляторе).
Пользователю при установке надо будет 2-3 раза нажать "Далее". Это только на первый взгляд сложно и запутанно, но, поверьте, ничуть не сложнее работы с обычным файлом :)

Offline

#18  20.02.08 20:39

Re: хранение данных в файле

efferson написал(а):

Delphi/Builder замечательно работают с этой СУБД через BDE, который ( если его нет в венде пользователя ) можно легко вшить в будущий дистрибутив с помощью InstallShield

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

Tigrishka, посмотри в сторону DBF... сам на билдере писал в свое время выгрузку в дбф... особых проблем в работе нет... одна таблица - один файл дбф... кстати, были в инете и компоненты для работы с бдф

Offline

#19  20.02.08 22:41

Re: хранение данных в файле

2Мерзкий
Конечно, Вы  правы. Просто не было опыта создания каких-либо инсталяторов. Не могли бы вы порекомендовать версию Inno Setup  (в инете их очень много) и где можно почитать поподробнее, что это и с чем его едят. Желательно на русском :)

Offline

#20  20.02.08 22:51

Re: хранение данных в файле

Jaguar написал(а):

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

через БДЕ с ИБ-клонами работают только криворукие приверженцы старья.
ФБ работает отлично. у нас на одном объекте до 100000 транзакций в день, под линуксом сервер не перезагружается годами. никаких тормозов (они бывают в основном при неоптимизированных запросах), никаких глюков, всё пучком. сейчас уже даже и не знаю сколько база весит... гбайты...

Jaguar написал(а):

Tigrishka, посмотри в сторону DBF... сам на билдере писал в свое время выгрузку в дбф... особых проблем в работе нет... одна таблица - один файл дбф... кстати, были в инете и компоненты для работы с бдф

БДФ полное уЁ.

Offline

#21  20.02.08 23:11

Re: хранение данных в файле

гагага 100000 запросов в день 8))))
ясенпень нет проблем
вот когда будет 10000000000000 запросов в день, вот тогда то и будут проблемы.

Offline

#22  20.02.08 23:20

Re: хранение данных в файле

otaku, не просто запросов, а записей добавляется столько и в разные таблицы.
покажи мне предприятие где 10000000000000 пусть даже запросов?
если автора устраивает работа с файлом, зачем думать о

otaku написал(а):

10000000000000

?

Offline

Программирование и БД » хранение данных в файле 

ФутЕр:)

© Hostel Web Group, 2002-2025.   Сообщить об ошибке

Сгенерировано за 0.237 сек.
Выполнено 14 запросов.