БД в виде текстовых файлов
От: glornay  
Дата: 23.11.14 12:52
Оценка:
Здравствуйте.

Есть задача: получить управляемое как БД хранилище данных, которое должно содержать достаточно много (сотни) достаточно крупных (десятки тысяч знаков) кусков текста. Скорость работы не особенно важна. Хочется иметь:
1) Возможность управлять (выборка/создание/удаление/редактирование) как обычной базой — по возможности при помощи SQL
2) Интерфейс управления по типу MS Access/OOo Base или (пожалуй, лучше) JDBC-драйвер к этой базе
3) Хранение данных в виде файла или совокупности файлов, желательно текстовых. Скажем, таблица — каталог в файловой системе, запись — файл в этом каталоге. Идея в том, чтобы при необходимости можно было редактировать и, главное, просматривать записи без помощи СУБД, напрямую, и при соблюдении нужного (и в то же время удобного для человека) формата такая отредактированная запись нормально воспринималась СУБД и ею можно было манипулировать так же, как любой другой.
Последнее условие, в котором, собственно, вся проблема и состоит, — для, во-первых, простой переносимости базы, во-вторых, редактирования данных сторонними средствами, не умеющими работать с БД, зато вполне подходящими для плейнтекста, в-третьих, не завязанного на базу версионирования: хорошо бы использовать с этой целью обычную систему контроля версий, а при этом, понятно, нужна прозрачность на уровне данных, то есть — самое очевидное — как раз текстовые файлы.

Подозреваю, что я не первый, кто сталкивается с подобной задачей, и изобретать велосипед не хочется, но гуглением ничего подходящего найти не сумел. Не знает ли кто о такой БД?
Отредактировано 23.11.2014 12:54 glornay . Предыдущая версия .
Re: БД в виде текстовых файлов
От: bnk СССР http://unmanagedvisio.com/
Дата: 23.11.14 13:08
Оценка:
Здравствуйте, glornay, Вы писали:

А какие требования к бд собственно? Т.е. какие запросы ты собираешься делать например? Если все что нужно, это получить и положить файл, то самое очевидное решение — папка с файлами. Зачем тогда база?
Re: БД в виде текстовых файлов
От: 11molniev  
Дата: 23.11.14 13:25
Оценка:
Здравствуйте, glornay, Вы писали:

G>Подозреваю, что я не первый, кто сталкивается с подобной задачей, и изобретать велосипед не хочется, но гуглением ничего подходящего найти не сумел. Не знает ли кто о такой БД?


Возможно первый Слишком много противоречивых требований. Хотите БД — используйте СУБД и JDBC-драйвер. Хотите файлики — используйте файлики, а SQL к ним делайте уже своими силами, если он так нужен.

Что подразумевается под переносимостью не ясно: ну да, для большинства баз нужно не только скопировать пару файлов, но и выполнить 2-3 команды, но это вроде обычно не проблема.
Для редактирования сторонними средствами данные из БД выгружают (нужную часть) и загружают (правки) — хранить БД в текстовом виде для этого не требуется.
Ну и желание использовать "обычную" (для исходных текстов, я так понимаю) систему контроля версий это странно.

Но есть подозрение, что требования вы сформулировали не самым лучшим образом, поэтому лучше напишите конечную цель.
Re[2]: БД в виде текстовых файлов
От: glornay  
Дата: 23.11.14 13:28
Оценка:
Хотелось бы связи между таблицами по внешним ключам, возможность делать выборки с подзапросами... в общем, просто папка с файлами — вариант возможный, но не лучший.
Re[2]: БД в виде текстовых файлов
От: glornay  
Дата: 23.11.14 14:08
Оценка:
Здравствуйте, 11molniev, Вы писали:

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


Речь не об исходниках; БД предполагается использовать для хранения многолинейного и, возможно, разветвляющегося сюжета, описываемого словами. То есть будет два вида работ: выстраивание собственно сюжета на уровне логики (это удобно делать через СУБД: связывать события причинно-следственными связями, привязывать к ним участников, локации и так далее) и создание достаточно объёмных текстовых описаний (это уже хотелось бы делать в обычных плейнтекстовых редакторах со всеми их возможностями). Причём, очень возможно, заниматься этим будут люди, довольно смутно представляющие себе, что такое БД и как иметь с ними дело.
Re[3]: БД в виде текстовых файлов
От: bnk СССР http://unmanagedvisio.com/
Дата: 23.11.14 14:46
Оценка:
Здравствуйте, glornay, Вы писали:

G>Хотелось бы связи между таблицами по внешним ключам, возможность делать выборки с подзапросами... в общем, просто папка с файлами — вариант возможный, но не лучший.


А как предполагается хранить онформацию о связях? В самих документах, или предполагается какая-то мета-информация (т.е. связи хранятся в неких данных связанных с документом-описанием)

Можно допустим просьо взять какую-нибудь готовую систему управления документами. Тот же шарепоинт. Не вариант?
Re: БД в виде текстовых файлов
От: Olaf Россия  
Дата: 24.11.14 04:07
Оценка:
Здравствуйте, glornay, Вы писали:

G>Здравствуйте.


G>Есть задача: получить управляемое как БД хранилище данных, которое должно содержать достаточно много (сотни) достаточно крупных (десятки тысяч знаков) кусков текста. Скорость работы не особенно важна. Хочется иметь:

G>1) ...
G>2) ...
G>3) ...

G>Подозреваю, что я не первый, кто сталкивается с подобной задачей, и изобретать велосипед не хочется, но гуглением ничего подходящего найти не сумел. Не знает ли кто о такой БД?


В Microsoft SQL Server, начиная с версии 2012, реализована технология FileTable, которая отчасти позволяет решить вашу задачу. Если кратко, то в БД создается специальная таблица FileTable с заранее предопределенной схемой и соответствующий ей шаренный каталог. Внутренние драйвера обеспечивают синхронизацию содержимого папки и таблицы. Т.е. каждый элемент в каталоге файл/папка представляет собой запись в таблице с учетом иерархий. Возможны два варианта работы – нетранзакционный, когда пользователи напрямую работают с шарой, например через Windows Explorer/FAR, фактически через WinAPI. Вся работа ведется прозрачно, любая операция с каталогом (файлом) приводит к синхронным операциям на таблице. Возможен и другой вариант, транзакционный через таблицу с использованием T-SQL, когда например удаление записи, приводит к удалению файла на шаренном ресурсе. Т.к. FileTable создается в специальной файловой группе, то вы получаете все преимущества по бэкапу и восстановлению данных.
Что касается версионности, то здесь не совсем понял, что под этим подразумевается. По всей видимости, это требование придется реализовывать самостоятельно.
Re: БД в виде текстовых файлов
От: sereginseregin Россия http://daremanager.sourceforge.net/ru/
Дата: 25.11.14 19:07
Оценка:
Здравствуйте, glornay, Вы писали:

G>Здравствуйте.


G>Есть задача: получить управляемое как БД хранилище данных...

G>1) Возможность управлять (выборка/создание/удаление/редактирование) как обычной базой — по возможности при помощи SQL
G>2) Интерфейс управления по типу MS Access/OOo Base или (пожалуй, лучше) JDBC-драйвер к этой базе
G>3) Хранение данных в виде файла или совокупности файлов, желательно текстовых. ...

Есть личный опыт:
— База данных — файл Excel, таблица — лист Excel , пользователь легко откроет и внесет нужные изменения
— Интерфейс форм выборки/редактирования рисуется тоже на ячейках Excel
— Есть готовые VBA скрипты (типа фреймворк) для обработки событий форм выборки/редактирования данных
— Для работы с базой данных используется SQL через Microsoft.Jet.OLEDB (поддерживает SELECT, INSERT, UPDATE, кроме DELETE для базы в Excel)

Исходники с примером лежат в открытом доступе на sourceforge.net. Подробности в личке...
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.