Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Самописанная база данных, некоторые глупые идеи и вопросы 
:(
    Опции темы
Dubinsky
Дата 3.7.2005, 19:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 252
Регистрация: 1.6.2005

Репутация: нет
Всего: нет



Вопрос наверное слишком общий но всё же...

Пишу базу данных (никаких там МС Ацесс и пр. всё своё и простое)
и как я понял во многих базах данных размер ячейки заранее известен.

А что делать если размер записи заранее не известен (туда записывается например прилагаемые картинки , список родственников человека , ну что то чей размер и кол-во неизвестны и неограничены)

Везде я натыкался на систему типа : запись делается по длине максимально длинной и заполняется нулями в пустых местах , что облегчает поиск нужной записи , мы всегда знаем начало следующей записи (ну кратное длине записи)

Идея то такова может стоит отказатся от базы данных на одном файле и написать базу типа каждая запись - отдельный файл и искать по названию ?

вообще стоит работать в этом направлении ? или проблем будет больше чем решений ?

Заранее спасибо что не пинаете за глупость.
PM MAIL WWW   Вверх
Coocky
Дата 3.7.2005, 19:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


GUI гуру
****


Профиль
Группа: Участник Клуба
Сообщений: 2879
Регистрация: 16.2.2004
Где: Украина. Запорожь е

Репутация: 2
Всего: 62



Dubinsky
Считаю не стоит изобретать велосипед, только если в учебных целях..
Если б все было так просто с базами, то б их штамповали тысячами. А так серьезных только 5-6...


--------------------
Верю в смерть после жизни, в любовь после секса ,в крем после бритья smile        
PM ICQ   Вверх
vadims
Дата 3.7.2005, 20:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 305
Регистрация: 8.6.2005

Репутация: нет
Всего: 17




Вообще-то 200% согласен с Coocky

Но если уж приперло самописное, и если это конкретная задача с небольшим кол-вом записей (а не база вообще), то можно попробовать -все зависит от решаемой задачи - сформулируй ее, может подскажу чего, тк у самого более 7 лет пара таких баз работает без сбоев (около 5 тыс. записей каждая)



--------------------
Cpu not found ! Press any key for software emulation.
PM MAIL   Вверх
Coocky
Дата 3.7.2005, 20:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


GUI гуру
****


Профиль
Группа: Участник Клуба
Сообщений: 2879
Регистрация: 16.2.2004
Где: Украина. Запорожь е

Репутация: 2
Всего: 62



vadims
а структурировал?
Добавлено @ 20:30
А какие алгоритмы сортировки ?Сам придумал, или со стандартных брал??


--------------------
Верю в смерть после жизни, в любовь после секса ,в крем после бритья smile        
PM ICQ   Вверх
Dubinsky
Дата 3.7.2005, 20:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 252
Регистрация: 1.6.2005

Репутация: нет
Всего: нет



Подождите это конечно может велосипед или нет, но для темы то неважно.

вопрос влоб

Как реализовать то базу с неизвестной длиной записи ?

мною предложенный способ глуп или всё же ?

если бы кол-во записей было 10 -100 я бы даже не спрашивал , а так записей может быть и 10 и 10 000 пугает кол-во файлов просто ...

сама база слишком "гибкая" должна быть , вот что , всё, сдаёмся ?
либо по учебнику либо невозможно ?

я не прошу написать мне базу , я прошу , всего - лишь мнения о возможных плюсах и минусах такого предложенного подхода .

он даже мне кажется самому не очень но выхода как то не вижу
Добавлено @ 20:42
уфф вы быстрее чем я ...

сейчас соберусь ...
PM MAIL WWW   Вверх
Coocky
Дата 3.7.2005, 20:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


GUI гуру
****


Профиль
Группа: Участник Клуба
Сообщений: 2879
Регистрация: 16.2.2004
Где: Украина. Запорожь е

Репутация: 2
Всего: 62



Dubinsky
Динамические массивы и списки? smile


--------------------
Верю в смерть после жизни, в любовь после секса ,в крем после бритья smile        
PM ICQ   Вверх
Dubinsky
Дата 3.7.2005, 21:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 252
Регистрация: 1.6.2005

Репутация: нет
Всего: нет



база легкая ей и сортировка не особо важна ...

важно что есть записи которые ссылаются на разные другие записи , несколько и неизвестно сколько раз (одному Богу известно , зависит только от прихоти пользователя ) , это ладно ещё , а вот что делать со скажем приложенными файлами (картинками , ворд файлами) , их надо как то связать с записью , а каждая связка это пучек данных , кол-во связок неизвестно .

я так понял значит размер то будет плавать , тем более что я хотел эти картинки и прочее включить в саму запись но это не так уж нужно.


Добавлено @ 21:05
Ну да динамические списки , а что это всё , да ? мне выйти в сад ?
PM MAIL WWW   Вверх
vadims
Дата 3.7.2005, 21:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 305
Регистрация: 8.6.2005

Репутация: нет
Всего: 17



Coocky
Я ж говорю -
Цитата(vadims @ 3.7.2005, 20:27)
если это конкретная задача с небольшим кол-вом записей (а не база вообще)

может список операций ограничен так, что реально реализовать без особого труда

Dubinsky
Вот поэтому без конкретики примерно сколько полей в записи и какого типа эти поля, а так же без конкретного списка операций над записями подсказывать не берусь

А минусы - в общем случае просто затрахаешься отслеживать изменение и целостность индексов, каталог с 10000 файлами тоже не подарок, обращение к записи - поиск по FAT (или чего еще) + открытие/закрыти файла - те время, попробуй заархивировать свою базу - свихнешся пока ждешь и еще много чего

Пока отвечал появился новый пост от автора - мое мнение - бросай эту затею, свихнешься, а четкой работы не получишь

Это сообщение отредактировал(а) vadims - 3.7.2005, 21:12


--------------------
Cpu not found ! Press any key for software emulation.
PM MAIL   Вверх
Coocky
Дата 3.7.2005, 21:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


GUI гуру
****


Профиль
Группа: Участник Клуба
Сообщений: 2879
Регистрация: 16.2.2004
Где: Украина. Запорожь е

Репутация: 2
Всего: 62



Dubinsky
Цитата
Ну да динамические списки , а что это всё , да ? мне выйти в сад ?

Я не понял твоего возмущения?
Что конкретно надо?


--------------------
Верю в смерть после жизни, в любовь после секса ,в крем после бритья smile        
PM ICQ   Вверх
Dubinsky
Дата 3.7.2005, 21:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 252
Регистрация: 1.6.2005

Репутация: нет
Всего: нет



нет нет , возмущения нет .

я просто спросил может (да наверняка) кто то уже наступал на эти грабли , система в которой запись это отдельный файл , записей порядка 10 000 , размер записи в среднем около 4 кБ
(ну примерно) может ли работать по этому принципу ?

есть ли смысл так делать если используются динамические массивы , или есть другой способ записи ячеек?
ведь если размер записи известен то при перезаписи мы с начала записи и до конца перезаписиваем часть файла и никогда не залезем на следующую запись.А если при перезаписи длина стала больше ? залезем на следующую запись ? перезаписываем так сразу ВСЁ ?

вообще неужели нет других способов ?

не съест ли фрагментация винт ?



список всех записей хотел получить посредством FindFirst() FindNext() ...






Добавлено @ 21:30
а как по другому то ?сказать бросай это и я могу smile
Добавлено @ 21:36
тип полей в основном то String , их то можно по максимуму ограничить , а вот кол-во связей ?

забить типо максимум 10-100 связей и если нет связей меньше то заполняем нулями , а если больше то извини пользователь , больше не дано ...

здравствуй типизированный файл ... smile
PM MAIL WWW   Вверх
Coocky
Дата 3.7.2005, 21:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


GUI гуру
****


Профиль
Группа: Участник Клуба
Сообщений: 2879
Регистрация: 16.2.2004
Где: Украина. Запорожь е

Репутация: 2
Всего: 62



Цитата
есть ли смысл так делать если используются динамические массивы , или есть другой способ записи ячеек?

Ты не в жизни без них не обойдеся...Мало того, у тебя еще будут массивы в массивах. Вообщем сложная структура.Это насчет таблиц.
Что каксется полей, то можно сделать статические массивы, но с ограничением размера данных
Цитата
А если при перезаписи длина стала больше ?

А ты память -то как выделишь, если не будешь знать новый размер. Т.е. сначало считаешь новый размер, потом выделяешь нужный



--------------------
Верю в смерть после жизни, в любовь после секса ,в крем после бритья smile        
PM ICQ   Вверх
Dubinsky
Дата 3.7.2005, 21:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 252
Регистрация: 1.6.2005

Репутация: нет
Всего: нет



не ну вообщем спасибо , хоть что то проясняется ...

вот только предложили вы мне как я понял : "пиши типизированными файлами , ограничивай по макс длине , пустоту забивай нулями и не ломай голову , по другому никак !"
ну неужели ?

вообще может какую информацию посоветуете то по этой тематике ?
PM MAIL WWW   Вверх
Dubinsky
Дата 3.7.2005, 21:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 252
Регистрация: 1.6.2005

Репутация: нет
Всего: нет



насчет памяти выделить я её выделю . а вот на харде если запись была записана ,и за ней другие следуют , перезаписываем какую то запись а в записи пользователь добавил новую ссылку , приложил файл новый , и как я могу заранее знать сколько он приложит файлов или связей ?
PM MAIL WWW   Вверх
Coocky
Дата 3.7.2005, 21:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


GUI гуру
****


Профиль
Группа: Участник Клуба
Сообщений: 2879
Регистрация: 16.2.2004
Где: Украина. Запорожь е

Репутация: 2
Всего: 62



Dubinsky
Делаешь один класс-это база данных. В нем методы для работы с таблицами и поля с именем таблиц(опять же массив, опять же динамический)...с указателями на таблицы
Далее еще один класс,вложеный, для таблиц, со своими методами и полями.
Тип такой, а вообще покумекать надо..


--------------------
Верю в смерть после жизни, в любовь после секса ,в крем после бритья smile        
PM ICQ   Вверх
Dubinsky
Дата 3.7.2005, 22:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 252
Регистрация: 1.6.2005

Репутация: нет
Всего: нет



это вроде разбить базу совсем на ячееччечки махонькие

ну типо имя , фамилия , связка какая то , одного человека это отдельные записи? А соберём человека уже потом по кускам?
PM MAIL WWW   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C++: Базы данных"
chipset

Данный форум предназначен для обсуждения вопросов прямым образом связанных с C++ и БД. Так, вопросы только по C++ следует задавать в C++:Общие вопросы а вопросы по абстрактным БД в Базах данных или в соответствующих под-форумах.

Благодарим за понимание.


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, chipset.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Базы данных | Следующая тема »


 




[ Время генерации скрипта: 0.0593 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.