powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Другие СУБД [игнор отключен] [закрыт для гостей] / Paradox Format - фиксирована ли длина записи?
12 сообщений из 12, страница 1 из 1
Paradox Format - фиксирована ли длина записи?
    #36185454
Chys
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Навеяно дискуссией про формат Paradox вот в этой теме .

В Описание формата файлов PARADOX v3.*, v4.* сказано следующее:

Файл данных Paradox (*.db) состоит из заголовка и набора страниц.
Страницы связаны в двусвязный список в соответствии с основным индек-
сом. Каждая страница хранит переменное число записей фиксированной
длины.
Но ни в PARADOX 4.x FILE FORMATS , ни в PARADOX SPECIFICATIONS ничего толком не сказано действительно ли длина записи фиксированная...



Небольшой тест в Database Desktop:

Создается таблица в формате Paradox 7 при BLOCK SIZE = 16Kb с полями
col1 - string(5) - key field
col2 - integer
col3 - string(250)
col4 - string(250)
col5 = string(250)

Размер файла при пустой таблице - 2Kb.
Начинаем заполнять key field значениями от 1-10, выделяется блок и размер таблицы выростает до 18Kb.
Заполняем дальше от 10 до 29, снова выделяется блок и размер файла выростает до 34Kb.
Дальше от 30 до 40, снова выделяется блок и размер файла выростает до 50Kb.

Пакуем таблицу - размер файла падает до 34Kb - значит остается 2 блока.

Интересно, связано ли это как-то с размером записей?...
...
Рейтинг: 0 / 0
Paradox Format - фиксирована ли длина записи?
    #36185473
Chys
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Gluk (Kazan)ChysGluk (Kazan)Paradox хранит данные в B-деревьях, а не записях фиксированной длиныА не индексы, случайно?

ссылкаФайл DB имеет страничную организацию - записи распределены по страницам (блокам)
фиксированного размера.

Индекс имеет структуру B-дерева
Это страницы B-дерева, чудак :)
Не веришь мне, распотроши db-файл да посмотри
А как распотрошить db-файл?
...
Рейтинг: 0 / 0
Paradox Format - фиксирована ли длина записи?
    #36185487
Фотография Gluk (Kazan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ChysGluk (Kazan)ChysGluk (Kazan)Paradox хранит данные в B-деревьях, а не записях фиксированной длиныА не индексы, случайно?

ссылкаФайл DB имеет страничную организацию - записи распределены по страницам (блокам)
фиксированного размера.

Индекс имеет структуру B-дерева
Это страницы B-дерева, чудак :)
Не веришь мне, распотроши db-файл да посмотри
А как распотрошить db-файл?

Много вариантов :)

1. Пошукать доки
2. Открыть для себя HexView
3. Посмотреть OpenSource
4. Подумать много ли известных структур позволяют хранить данные в дисковой памяти отсортированными по первичному ключу
...
Рейтинг: 0 / 0
Paradox Format - фиксирована ли длина записи?
    #36185498
Фотография Gluk (Kazan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Chys
Интересно, связано ли это как-то с размером записей?...

Нет, это связано со страничной организацией файла.
Записи то фиксированной длинны, но страницы не обязательно заполнены полностью.
Если страница пуста, она не удаляется из файла, а попадает в список свободных блоков.

В общем, с DBF это имеет мало сходства
...
Рейтинг: 0 / 0
Paradox Format - фиксирована ли длина записи?
    #36185526
Chys
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Gluk (Kazan)Записи то фиксированной длинны, но страницы не обязательно заполнены полностью.То есть записи все таки в Paradox фиксированной длины?
...
Рейтинг: 0 / 0
Paradox Format - фиксирована ли длина записи?
    #36185555
Chys
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Gluk (Kazan)Нет, это связано со страничной организацией файла.
Записи то фиксированной длинны, но страницы не обязательно заполнены полностью.
Если страница пуста, она не удаляется из файла, а попадает в список свободных блоков.
Если страницы не заполнены послностью, на кой выделять новую? у меня так вышло, что при заполнении key field данными было добавлено 3 блока, а потом при упаковке один блок куда-то делся.
...
Рейтинг: 0 / 0
Paradox Format - фиксирована ли длина записи?
    #36185597
Фотография Gluk (Kazan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Chys
Если страницы не заполнены послностью, на кой выделять новую? у меня так вышло, что при заполнении key field данными было добавлено 3 блока, а потом при упаковке один блок куда-то делся.

А с чего ты взял что так происходит ?
Просто вставка в B-дерева записей в произвольном порядке приводит к тому, что страницы не наполнены полностью. Сжатием ты переливаешь записи уже в отсортированном порядке, что позволяет расположить их более плотно.

Ты знаком с B-деревьями ? У меня складывается впечатление, что ты исходишь из неверных предпосылок
...
Рейтинг: 0 / 0
Paradox Format - фиксирована ли длина записи?
    #36185679
Chys
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Gluk (Kazan)А с чего ты взял что так происходит ?
Просто вставка в B-дерева записей в произвольном порядке приводит к тому, что страницы не наполнены полностью. Сжатием ты переливаешь записи уже в отсортированном порядке, что позволяет расположить их более плотно.
Я сужу по вот этому документу - PARADOX 4.x FILE FORMATS .
Согластно ему записи вставляются уже в отсортированном порядке
и поэтому, по сути, не должно быть никакого свободного места:

Records are stored contiguously. There are no gaps between
records. Records contain no slack bytes between fields.
...
Records are stored in key sequence. If a record is inserted in
the block, then records with higher keys "move down" to make
room for the new record. Record length is added to the last
record offset in the block header.


Gluk (Kazan)Ты знаком с B-деревьями ? У меня складывается впечатление, что ты исходишь из неверных предпосылок
Очень, очень поверхностно...
...
Рейтинг: 0 / 0
Paradox Format - фиксирована ли длина записи?
    #36185720
Фотография Gluk (Kazan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Chys
Я сужу по вот этому документу - PARADOX 4.x FILE FORMATS .
Согластно ему записи вставляются уже в отсортированном порядке
и поэтому, по сути, не должно быть никакого свободного места:


Термины термины ...
записи могут отсортироваться при вставке, но вставлять их в отсортированном порядке можешь только ты сам (или упаковщик). Чудес то не бывает

В общем то насколько разбухнет B-дерево зависит от того в каком порядке кормить ему записи
...
Рейтинг: 0 / 0
Paradox Format - фиксирована ли длина записи?
    #36185785
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я продублирую свой пост из изначальной ветки:

Chys пишет:

> Я это... Могу, конечно, ошибаться... Но может не B-tree, а binary tree?

Это почти одно и то же. По-хорошему это надо называть B+-tree.
B+-tree -- это то же самое, что бинарное дерево поиска, только,
в отличие от бинарного дерева, каждый узел в B+-tree обычно
может содержат от двух до сколько влезет дочерних подузлов
(ссылок на них), в то время как классическое бинарное дерево
имеет только два подузла: левый и правый. Поэтому и термин -
B+-tree, подузлов от двух и больше.
...
Рейтинг: 0 / 0
Paradox Format - фиксирована ли длина записи?
    #36185812
Фотография Gluk (Kazan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZiv
Это почти одно и то же. По-хорошему это надо называть B+-tree.


Ээээ я не стал бы так с плеча :)
B-дерево может быть представлено двоичным деревом (например красно-черное дерево ни что иное как 2-3-4 дерево). Что касается B+ там важный нюанс, что все листовые блоки связаны в двунаправленный список и все элементы лежат исключительно в листовых блоках, что позволяет сканировать диапазоны, не прыгая с уровня на уровень.

B-дерево относится к сильно ветвящимся деревьям, никак не к бинарным (не смотря на то что использует бинарный поиск)
...
Рейтинг: 0 / 0
Paradox Format - фиксирована ли длина записи?
    #36187572
Chys
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Что касактся фиксированной длины - мне читать внимательно File Format спецификации нужно было... Первое же поле Header Block содержит установленную длину для записей в таблице.
...
Рейтинг: 0 / 0
12 сообщений из 12, страница 1 из 1
Форумы / Другие СУБД [игнор отключен] [закрыт для гостей] / Paradox Format - фиксирована ли длина записи?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]