Member
Статус: Не в сети Регистрация: 01.03.2006 Откуда: БССР
Привет, оверы.
Вот, есть проблема: нужно написать СУБД, которая удовлетворяла бы следующим условиям:
1. однопользовательская
2. многозадачная
3. не требовательная к ресурсам
4. структура данных должа легко обновляться (ключевой вопрос)
У кого есть опыт разработки собственной СУБД, пожалуйста, поделитесь если не кодом, то хотя бы идеями. Самые главные для меня проблемы: как хранить данные и быстро их находить.
Просмотрел много форумов, посвященных программированию, а подходящих советов не нашел.
Жду ваших советов.
Advanced member
Статус: Не в сети Регистрация: 12.01.2004
John Mirro По моему мнению, это просто утопическая идея, т.к. в одиночку можно написать только какое-то подобие СУБД, которое будет выполнять лишь десяток базовых операций. Полноценную же, пусть даже самую маленькую, СУБД в одиночку написать практически нереально и займет очень много времени
PS: А зачем требуется писать свое, если есть огромное множество уже написанных?
Advanced member
Статус: Не в сети Регистрация: 12.01.2004
John Mirro
John Mirro писал(а):
Ну хотя бы так: добавление, удаление, поиск по индексу, возможность изменения структуры данных.
Повторю, это очень тяжело. Наработки какие-то у меня были, но ни во что нормальное это воплотиться не смогло
John Mirro писал(а):
Нужно, чтобы получилась софтина не зависящая от других приложений, компонентов и т.д.
Практически любой софт использует какие-либо сторонние компоненты или библиотеки. Какой хоть язык программирования? Возможно, у меня будет пара идей, как это обойти
Advanced member
Статус: Не в сети Регистрация: 12.01.2004
John Mirro Если использовать Delphi, то могу посоветовать в качестве СУБД использовать Interbase/Firebird. Они писались, если мне не изменяет память, специально под Borlandовские среды разработки. Плюс использования этих СУБД в том, что сам сервер базы вкомпиливается в программу и не нужно будет ничего ставить дополнительно (просто рядом с программой будет лежать дополнительная dll с самим движком сервера). Минус - это действительно будет только однопользовательская СУБД, более того, локальная. Если это подходит - в Google.
Еще есть куча мелких СУБД, работающие по тому же принципу (встраиваемость в осносной код), но, насколько я знаю, большинство из них платные
Member
Статус: Не в сети Регистрация: 01.03.2006 Откуда: БССР
--Vel-- С Interbase/Firebird я очень хорошо знаком, однако из-за специфики задачи он не подходит. А именно: по сути, программа является каталогизатором деталей/запчастей и т.д. с возможностью поиска. Пользователь может создавать любое количество разных каталогов и все они должны быть отдельными файлами, которые должны ассоциироваться с программой (как любой документ-кликнул по нему, программа открылась).
Конечно, можно сделать это в интербейс/фаерберд, но вот размер пустой базы данных сам занешь какой А если менять структуру данных, а у пользователя будет несколько десятков каталогов. В интербейсе это будет гиморно. Я думаю ты понял проблему.
Advanced member
Статус: Не в сети Регистрация: 12.01.2004
John Mirro Тогда есть такой вариант. Немного кривой, но другого, чтобы все работало без установки, я пока придумать не могу.
Используем в качестве СУБД DBISam. Это локальная СУБД, каждая таблица хранится в двух/трех отдельных файлах. Каждый каталог будет из себя представлять реальную папку на диске. Насколько я понял постановку задачи, структура базы фиксирована. В таком случае, при работе в другим каталогом просто меняется путь к базе. Теперь по поводу одного файла и его ассоциации с приложением. Есть идея просто заархивировать каждый каталог в отдельный файл без сжатия с со своим расширением (благо модули работы с тем же Gzip есть практически под все среды разработки, так что архиватор есть). Когда пользователь будет кликать на файл, программа запускается, распаковывает содержимое в одну из своих рабочих папок. Когда работа заканчивается, содержимое рабочей папки обратно собирается в один "архив" и перезаписывает предыдущую версию. Все это довольно громоздко и содержит подводные камни, но, по-моему, на много порядков проще, чем писать собственную СУБД
Advanced member
Статус: Не в сети Регистрация: 12.01.2004
Zio Не проще. Тот же PostreSQL требует отдельного сервера. Если же задаться целью локального использования native Win PostrgeSQL, то с той же самой инсталяцией приложения будут огромные трудности (нужно будет установить и настроить сервер). Плюс теряется переносимость каталогов с одного компьютера на другой (бекап/рестор из консоли или фронтэнд вряд ли простой пользователь осилит)
Member
Статус: Не в сети Регистрация: 10.03.2004 Откуда: Минск
А почему нельзя просто использовать Microsoft Access? С приложением поставляться должны будут просто файлики с самими данными. Сервер не требует для работы. У меня в связке с приложение на C# замечательно работает. Никто не жаловался.
Advanced member
Статус: Не в сети Регистрация: 12.01.2004
gsvZolo
gsvZolo писал(а):
Я бы писателей баз данных на Microsoft Access просто
Ну не нужно так грубо, Access очень полезен в некоторых сферах force_sk
force_sk писал(а):
А почему нельзя просто использовать Microsoft Access?
Довольно хороший вариант. Но, в случае, если нет ограничений на установку OBDC (W2K, к примеру, не имеет нативной поддержки Access, точнее, драйвера под него) и, если хранить именно файлы баз, то трудно будет настроить ассоциации в некоторых случаях + базы будут видны всем.
Если же эти пункты не являются препятствием, то, повторюсь, очень толковое решение
Member
Статус: Не в сети Регистрация: 10.03.2004 Откуда: Минск
gsvZolo Очень зря ты так. Я тоже раньше как-то недолюбвивал Access (просто не юзал его, а только слышал), а потом пришлось именно их и использвоать. И нормально прошло. Работает.
Member
Статус: Не в сети Регистрация: 25.06.2005 Откуда: Zolotonosha
force_sk Извиняюсь конечно, могу и ошибаться, но это всё из жизненного опыта. , почему бы просто не взять готовую СУБД например тот же банальный Fox, намного мощнее и менее глючно, чем Access.
_________________ Наша работа настолько грязная, что делать её могут только истинные джентльмены.
Advanced member
Статус: Не в сети Регистрация: 09.06.2003 Откуда: USSR
Зачем заниматься извращениями!??? Базы от Access прекрасно подходят для такого дела. Они не глючат. Глоючат руки у программеров, не умеющих использовать правильно эту систему. Для твоей задачи это просто идеальный вариант!
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 4
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения