Как это - Базы данных...

Тема в разделе "WASM.ZEN", создана пользователем SnugForce, 7 май 2005.

  1. SnugForce

    SnugForce New Member

    Публикаций:
    0
    Регистрация:
    2 май 2005
    Сообщения:
    373
    Адрес:
    Из домУ
    Люди добрые! Объясните как происходит обращение к БД (к примеру BDE) на физическом уровне. Т.е. как это движок базы умудряется все хранить в одном файле, а данные в середине и других местах удалять может?
     
  2. OxD

    OxD New Member

    Публикаций:
    0
    Регистрация:
    7 мар 2005
    Сообщения:
    13
    Хех, да это скорее не вопрос по конкретной базе данных а по программированию... Посмотри функции, винапи - SetFilePointer, а в Си - fseek...
     
  3. Quantum

    Quantum Паладин дзена

    Публикаций:
    0
    Регистрация:
    6 янв 2003
    Сообщения:
    3.143
    Адрес:
    Ukraine
    Поищи в сети про structured storage. В книге Searching & Sorting by Thomas Niemann (книга лежит тут на сайте в разделе документов) есть про деревья B+/B++, что тоже очень кстати.
     
  4. Chingachguk

    Chingachguk New Member

    Публикаций:
    0
    Регистрация:
    2 сен 2002
    Сообщения:
    340
    а данные в середине и других местах удалять может?



    Не всегда удаление записи означает физическое удаление - достаточно пометки об удалении и некоторой перестройки индексов (ключей). Самый простой пример, кажется, процедура оптимизации базы аутглюка.
     
  5. rst

    rst New Member

    Публикаций:
    0
    Регистрация:
    5 май 2003
    Сообщения:
    165
    К данным он обращается используя структуру, которая говорит о положении этих данных в файле.

    Касательно модификации - все просто. Если модификация не увеличивает объем данных - до данные перезаписываются. Если модификация увеличивает объем данных, то старые данные помечаются удаленными, а новые дописываются в конец. Ну и соответсвенно периодически происходит фиксап базы - когда помеченные удаленными данные действительно удаляются. Как вариант использования удаленных данных - при модификации базы, либо при добавлении новых данных происходит поиск пустых "дырок" (по английски gaps) и данные пишутся не в конец файла, а в тот gap, в который они влезут. Это приводит к тому, что период после которого желательно делать фиксап увеличивается намного.
     
  6. SnugForce

    SnugForce New Member

    Публикаций:
    0
    Регистрация:
    2 май 2005
    Сообщения:
    373
    Адрес:
    Из домУ
    Спасибо!

    Сам тоже не много нашел, правда есть вопросы..

    Добавлю еще по способам:

    Индексные файлы (плотный и не плотный индекс)

    B-деревья

    а так хоть принцип более или менее стал...