0 / 0 / 0
Регистрация: 22.01.2012
Сообщений: 5
|
|
1 | |
Создание собственного формата файла22.01.2012, 11:56. Показов 3782. Ответов 5
Метки нет (Все метки)
Я уверен что данный вопрос уже рассматривался на форуме но поискав ничего такого не смог найти. По этому поясню что мне надо.
Появилась желание написать простенькую консольную СУБД - это я сделал. Но данные она хранит в текстовых файлах к тому же каждый тип столбца это отдельный файл. Это очень не удобно и если можно так сказать не безопасно Захотел доработать проектик. Данные должны хранится не в текстовых файлах а в архивах или папках зашифрованных (не знаю как это точно сказать), к каждой базе отдельный файл. Надеюсь вы меня поняли о чем я. Помогите мне разобраться как это все реализовывается и что почитать можно на эту тему.
0
|
22.01.2012, 11:56 | |
Ответы с готовыми решениями:
5
Создание собственного класса Создание списка объектов собственного класса (SQL) Степенной метод нахождения наибольшего по модулю собственного значения и соответствующего ему собственного вектора Подключение собственного заголовочного файла |
Псевдослучайный
1946 / 1145 / 98
Регистрация: 13.09.2011
Сообщений: 3,215
|
|
22.01.2012, 12:08 | 2 |
Зачем это делается? Если нужна база данных для дальнейшего использования где бы то ни было, не нужно городить велосипеды, есть SQLite, Berkeley DB и ещё весомое количество всяких заведомо рабочих, быстрых и фичастых решений.
Если в учебных целях, то надо несколько подробней сформулировать задачу. В общем случае "строки" данных имеют фиксированную длину и в случае необходимости содержат указание на положение и размер данных полей изменяемой длинны.
0
|
0 / 0 / 0
Регистрация: 22.01.2012
Сообщений: 5
|
|
22.01.2012, 12:52 [ТС] | 3 |
Это все в учебных целях. Попробую подробно описать что требуется. Сейчас моя программа хранит данные в текстовых фалах тоесть если в базе есть поле Фамилия то существует текстовый фал в котором записаны Фамилии. Так же с именем и прочими полями. Но проблема появляется если таких баз скажем 10 штук и по 10 полей в каждой из них. Получается 100 файлов в одном каталоге где лежит сама программа. Я хочу написать архив который будет содержать текстовые файлы с данными. Каждый архив это отдельная БД. Ну и к этому архиву доступ может получить только моя СУБД. На счет шифровки пока вопрос не стоит мне бы просто с архивом разобраться.
0
|
Псевдослучайный
1946 / 1145 / 98
Регистрация: 13.09.2011
Сообщений: 3,215
|
|
22.01.2012, 13:01 | 4 |
В принципе в этом нет ничего плохого: "Если вы используете дополнительный слой для хранения данных, у вас просто плохая файловая система". Если ту часть полей, которая имеет фиксированную длину ещё имеет смысл объединить в один файл, то с данными переменной длинны будет достаточное количество гемора, особенно если их надо менять постоянно. Дабы не разводить помойку, можно сделать иерархию директорий.
0
|
0 / 0 / 0
Регистрация: 22.01.2012
Сообщений: 5
|
|
22.01.2012, 13:24 [ТС] | 5 |
А если файлов не 100 а 1000 или больше (такого конечно не будет) В 1 файл несколько полей я не смогу засунуть потому как в txt каждая строчка это определенная фамилия или имя по этому для каждого поля отдельный файл.
P.S. Погуглив я вроде бы понял что такая реализация называется VFS - виртуальная файловая система. Но как ее разработать?? P.P.S. Ну и еще причина того зачем я это делаю мне просто очень интересно, я жажду это сделать
0
|
Псевдослучайный
1946 / 1145 / 98
Регистрация: 13.09.2011
Сообщений: 3,215
|
|
22.01.2012, 13:41 | 6 |
Ну хорошо, рассмотрим структуру файла, хранящего записи из двух строк каждая.
Первый вариант: допущение: пусть в них нет нулевого символа и переносов. Тогда банально пишем в строки файла, разделенные переносами, строки-поля данных, разделяя их нулевым символом. Можно взять специальный символ, ЕМНИП, в ansii имеется аж три таких, специально предназначенных для разделения. Строки файла тоже можно делить одним из них. Второй вариант: в начале файла имеем массив структур вида {смещение для первого поля, смещение для второго поля}, заканчивающиеся, например, структурой с нулевыми значениями или можно ещё раньше(в самом начале) записать их количество. Дальше идут непосредственно поля с данными. Итого: знаем откуда читать и знаем сколько(смещение нужного поля вычитаем из смещения следующего). Это просто простые примеры, можно развивать долго и упорно.
0
|
22.01.2012, 13:41 | |
22.01.2012, 13:41 | |
Помогаю со студенческими работами здесь
6
Создание собственного класса var для учебы, аналог auto Запись в собственного класса бинарный файл собственного Создание собственного оператора С++ Создание файла собственного формата(Работа с файлами) Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |