![]() |
|
|
![]()
|
|
| Dubinsky |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 252 Регистрация: 1.6.2005 Репутация: нет Всего: нет |
Вопрос наверное слишком общий но всё же...
Пишу базу данных (никаких там МС Ацесс и пр. всё своё и простое) и как я понял во многих базах данных размер ячейки заранее известен. А что делать если размер записи заранее не известен (туда записывается например прилагаемые картинки , список родственников человека , ну что то чей размер и кол-во неизвестны и неограничены) Везде я натыкался на систему типа : запись делается по длине максимально длинной и заполняется нулями в пустых местах , что облегчает поиск нужной записи , мы всегда знаем начало следующей записи (ну кратное длине записи) Идея то такова может стоит отказатся от базы данных на одном файле и написать базу типа каждая запись - отдельный файл и искать по названию ? вообще стоит работать в этом направлении ? или проблем будет больше чем решений ? Заранее спасибо что не пинаете за глупость. |
|||
|
||||
| Coocky |
|
|||
![]() GUI гуру ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2879 Регистрация: 16.2.2004 Где: Украина. Запорожь е Репутация: 2 Всего: 62 |
Dubinsky
Считаю не стоит изобретать велосипед, только если в учебных целях.. Если б все было так просто с базами, то б их штамповали тысячами. А так серьезных только 5-6... -------------------- Верю в смерть после жизни, в любовь после секса ,в крем после бритья |
|||
|
||||
| vadims |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 305 Регистрация: 8.6.2005 Репутация: нет Всего: 17 |
Вообще-то 200% согласен с Coocky Но если уж приперло самописное, и если это конкретная задача с небольшим кол-вом записей (а не база вообще), то можно попробовать -все зависит от решаемой задачи - сформулируй ее, может подскажу чего, тк у самого более 7 лет пара таких баз работает без сбоев (около 5 тыс. записей каждая) -------------------- Cpu not found ! Press any key for software emulation. |
|||
|
||||
| Coocky |
|
|||
![]() GUI гуру ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2879 Регистрация: 16.2.2004 Где: Украина. Запорожь е Репутация: 2 Всего: 62 |
vadims
а структурировал? Добавлено @ 20:30 А какие алгоритмы сортировки ?Сам придумал, или со стандартных брал?? -------------------- Верю в смерть после жизни, в любовь после секса ,в крем после бритья |
|||
|
||||
| Dubinsky |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 252 Регистрация: 1.6.2005 Репутация: нет Всего: нет |
Подождите это конечно может велосипед или нет, но для темы то неважно.
вопрос влоб Как реализовать то базу с неизвестной длиной записи ? мною предложенный способ глуп или всё же ? если бы кол-во записей было 10 -100 я бы даже не спрашивал , а так записей может быть и 10 и 10 000 пугает кол-во файлов просто ... сама база слишком "гибкая" должна быть , вот что , всё, сдаёмся ? либо по учебнику либо невозможно ? я не прошу написать мне базу , я прошу , всего - лишь мнения о возможных плюсах и минусах такого предложенного подхода . он даже мне кажется самому не очень но выхода как то не вижу Добавлено @ 20:42 уфф вы быстрее чем я ... сейчас соберусь ... |
|||
|
||||
| Coocky |
|
|||
![]() GUI гуру ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2879 Регистрация: 16.2.2004 Где: Украина. Запорожь е Репутация: 2 Всего: 62 |
Dubinsky
Динамические массивы и списки? -------------------- Верю в смерть после жизни, в любовь после секса ,в крем после бритья |
|||
|
||||
| Dubinsky |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 252 Регистрация: 1.6.2005 Репутация: нет Всего: нет |
база легкая ей и сортировка не особо важна ...
важно что есть записи которые ссылаются на разные другие записи , несколько и неизвестно сколько раз (одному Богу известно , зависит только от прихоти пользователя ) , это ладно ещё , а вот что делать со скажем приложенными файлами (картинками , ворд файлами) , их надо как то связать с записью , а каждая связка это пучек данных , кол-во связок неизвестно . я так понял значит размер то будет плавать , тем более что я хотел эти картинки и прочее включить в саму запись но это не так уж нужно. Добавлено @ 21:05 Ну да динамические списки , а что это всё , да ? мне выйти в сад ? |
|||
|
||||
| vadims |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 305 Регистрация: 8.6.2005 Репутация: нет Всего: 17 |
Coocky
Я ж говорю -
может список операций ограничен так, что реально реализовать без особого труда Dubinsky Вот поэтому без конкретики примерно сколько полей в записи и какого типа эти поля, а так же без конкретного списка операций над записями подсказывать не берусь А минусы - в общем случае просто затрахаешься отслеживать изменение и целостность индексов, каталог с 10000 файлами тоже не подарок, обращение к записи - поиск по FAT (или чего еще) + открытие/закрыти файла - те время, попробуй заархивировать свою базу - свихнешся пока ждешь и еще много чего Пока отвечал появился новый пост от автора - мое мнение - бросай эту затею, свихнешься, а четкой работы не получишь Это сообщение отредактировал(а) vadims - 3.7.2005, 21:12 -------------------- Cpu not found ! Press any key for software emulation. |
|||
|
||||
| Coocky |
|
|||
![]() GUI гуру ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2879 Регистрация: 16.2.2004 Где: Украина. Запорожь е Репутация: 2 Всего: 62 |
Dubinsky
Я не понял твоего возмущения? Что конкретно надо? -------------------- Верю в смерть после жизни, в любовь после секса ,в крем после бритья |
|||
|
||||
| Dubinsky |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 252 Регистрация: 1.6.2005 Репутация: нет Всего: нет |
нет нет , возмущения нет .
я просто спросил может (да наверняка) кто то уже наступал на эти грабли , система в которой запись это отдельный файл , записей порядка 10 000 , размер записи в среднем около 4 кБ (ну примерно) может ли работать по этому принципу ? есть ли смысл так делать если используются динамические массивы , или есть другой способ записи ячеек? ведь если размер записи известен то при перезаписи мы с начала записи и до конца перезаписиваем часть файла и никогда не залезем на следующую запись.А если при перезаписи длина стала больше ? залезем на следующую запись ? перезаписываем так сразу ВСЁ ? вообще неужели нет других способов ? не съест ли фрагментация винт ? список всех записей хотел получить посредством FindFirst() FindNext() ... Добавлено @ 21:30 а как по другому то ?сказать бросай это и я могу Добавлено @ 21:36 тип полей в основном то String , их то можно по максимуму ограничить , а вот кол-во связей ? забить типо максимум 10-100 связей и если нет связей меньше то заполняем нулями , а если больше то извини пользователь , больше не дано ... здравствуй типизированный файл ... |
|||
|
||||
| Coocky |
|
||||
![]() GUI гуру ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2879 Регистрация: 16.2.2004 Где: Украина. Запорожь е Репутация: 2 Всего: 62 |
Ты не в жизни без них не обойдеся...Мало того, у тебя еще будут массивы в массивах. Вообщем сложная структура.Это насчет таблиц. Что каксется полей, то можно сделать статические массивы, но с ограничением размера данных
А ты память -то как выделишь, если не будешь знать новый размер. Т.е. сначало считаешь новый размер, потом выделяешь нужный -------------------- Верю в смерть после жизни, в любовь после секса ,в крем после бритья |
||||
|
|||||
| Dubinsky |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 252 Регистрация: 1.6.2005 Репутация: нет Всего: нет |
не ну вообщем спасибо , хоть что то проясняется ...
вот только предложили вы мне как я понял : "пиши типизированными файлами , ограничивай по макс длине , пустоту забивай нулями и не ломай голову , по другому никак !" ну неужели ? вообще может какую информацию посоветуете то по этой тематике ? |
|||
|
||||
| Dubinsky |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 252 Регистрация: 1.6.2005 Репутация: нет Всего: нет |
насчет памяти выделить я её выделю . а вот на харде если запись была записана ,и за ней другие следуют , перезаписываем какую то запись а в записи пользователь добавил новую ссылку , приложил файл новый , и как я могу заранее знать сколько он приложит файлов или связей ?
|
|||
|
||||
| Coocky |
|
|||
![]() GUI гуру ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2879 Регистрация: 16.2.2004 Где: Украина. Запорожь е Репутация: 2 Всего: 62 |
Dubinsky
Делаешь один класс-это база данных. В нем методы для работы с таблицами и поля с именем таблиц(опять же массив, опять же динамический)...с указателями на таблицы Далее еще один класс,вложеный, для таблиц, со своими методами и полями. Тип такой, а вообще покумекать надо.. -------------------- Верю в смерть после жизни, в любовь после секса ,в крем после бритья |
|||
|
||||
| Dubinsky |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 252 Регистрация: 1.6.2005 Репутация: нет Всего: нет |
это вроде разбить базу совсем на ячееччечки махонькие
ну типо имя , фамилия , связка какая то , одного человека это отдельные записи? А соберём человека уже потом по кускам? |
|||
|
||||
![]()
|
| Правила форума "C++: Базы данных" | |
|
|
Данный форум предназначен для обсуждения вопросов прямым образом связанных с C++ и БД. Так, вопросы только по C++ следует задавать в C++:Общие вопросы а вопросы по абстрактным БД в Базах данных или в соответствующих под-форумах. Благодарим за понимание. Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, chipset. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Базы данных | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |