powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Файл читается целиком?
25 сообщений из 26, страница 1 из 2
Файл читается целиком?
    #33211537
AntonGart
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Господа, скажите пожалуйста. Если dbf лежит на файл-сервере, то при чтении его на клиенте и изменении сколько данных будет физически прочитано и отправленно по сети? Рассмотрим несколько сценариев: 1) поиск записи по индексу 2) поиск записи без индекса 3) изменение записи

Спасибо заранее!
...
Рейтинг: 0 / 0
Файл читается целиком?
    #33211548
Фотография Анатолий Широков
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
1) поиск записи по индексу

несколько страниц B+ дерева (максимум logN RECCOUNT, где N - число узлов в странице B+ дерева) + страница содержащая искомую запись (страница - это внутренний буфер)

2) поиск записи без индекса

в худшем случае вся таблица

3) поиск записи без индекса

страница содержащая изменяему запись
...
Рейтинг: 0 / 0
Файл читается целиком?
    #33211771
Flex0
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
автор(страница - это внутренний буфер)
Страница = 4 Кб. Так фокс и грузит данные в память вне зависимости от располжения талицы. Постранично. В принципе, странно было бы если было бы не так. Без этого эффективное преобразование из линейных адресов процесса в физические были бы затруднительны.
...
Рейтинг: 0 / 0
Файл читается целиком?
    #33212519
AntonGart
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ага, т.е., грубо говоря, будут прочитаны все страницы пока не будет найдена запись (по индексу - путь по дереву до листа, без индекса - секвенциально пока не наткнется)? Примечание: клиент не фокс, а Visual Objects и генератор отчетов.
...
Рейтинг: 0 / 0
Файл читается целиком?
    #33212576
Flex0
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
По индексу - методом половинного деления, простым перебором , пока не упреться.
...
Рейтинг: 0 / 0
Файл читается целиком?
    #33212822
Фотография Анатолий Широков
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Flex0

авторСтраница = 4 Кб. Так фокс и грузит данные в память вне зависимости от располжения талицы. Постранично. В принципе, странно было бы если было бы не так. Без этого эффективное преобразование из линейных адресов процесса в физические были бы затруднительны.

Почему именно 4 Кб? Fox не осуществляет прямое чтение, поэтому размер страницы может быть произвольным. На пути к странице фокса куча буферов: драйвера, системы файловой или сетевой. Так что, фокс физической страницей, в принципе, не оперирует.
...
Рейтинг: 0 / 0
Файл читается целиком?
    #33212982
PaulWist
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Попытка поиска истины была здесь http://forum.foxclub.ru/read.php?f=5&i=89572&t=89181, там рассматривался пример наложения фильтра под гридом ("тяжелая задача"), тем не менее какое-то рациональное зерно можно почерпнуть, как происходит чтение записей с файл-сервера.
...
Рейтинг: 0 / 0
Файл читается целиком?
    #33213709
Flex0
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Анатолий Широков, потому что так устроена OC Win32.
...
Рейтинг: 0 / 0
Файл читается целиком?
    #33214023
Igor Korolyov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hi Flex0!

Не совсем "половинным делением". От одной страницы индексного тега может
идти >2 ссылок на "нижележащие" страницы. В идеале, до 55 страниц (в
компактном индексе для "промежуточных" страниц формат отводит 500 байт на
информацию о самом ключе + адрес страницы + ещё 4 байта для не очень ясного
"intra-index pointer") - это если размер ключа - 1 байт (логическое поле без
NULL например, или CHAR(1) поле). Таким образом даже для вырожденного
случая - таблицы с 1Млрд записей (каждая размером 2 байта - 1 из которых
Delete Mark) в идеале потребуется всего 5 считываний индексных страниц (на
уровне страницы "листа" формат позволяет хранить от 120 до 240, но обычно
160 записей - в зависимости от "разброса" номеров строк (т.е. будет отведено
на Recno+BitCount 2, 3 или все 4 байта в "упакованном" формате - разбросом
самих "ключевых значений" в данном случае можно пренебречь, считая что на
них уходит 1 или 2 байта)). Кстати говоря это чисто теоретический пример -
т.к. такой индекс создать не получится - он по размеру будет превосходить
2Гб чего фокс не допускает. Впрочем для максимального же 2Гб cdx все эти
рассуждения также справедливы - в общем всё зависит от длины ключевого
выражения...

P.S. Естественно что огромную роль тут играет "сбалансированность" дерева и
степень заполненности оконечных индексных "листов" - тут кстати есть большие
различия, обусловленные использованием той или иной версии фокса. Известно
что VFP7 создаёт наиболее "разряжённые" индексы (они больше по объёму -
вплоть до 1.5 раз по сравнению с другими версиями фокса) - зато они более
эффективны при большом числе операций вставки (и возможно замены)...

P.P.S. для всех желающих понаблюдать за внутренней работой фокса с dbf можно
рекомендовать утилиту FileMon от небезызвестного Марка Руссиновича (сайт
раньше был sysinternals.com)

Posted via ActualForum NNTP Server 1.2
...
Рейтинг: 0 / 0
Файл читается целиком?
    #33214043
Flex0
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Igor Korolyov, еще раз ты доказал кривую реализацию столь простого матеатического алгоритма
...
Рейтинг: 0 / 0
Файл читается целиком?
    #33214122
Фотография Анатолий Широков
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Flex0
авторАнатолий Широков, потому что так устроена OC Win32.

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

Код: plaintext
Igor Korolyov, еще раз ты доказал кривую реализацию столь простого матеатического алгоритма 

Ничего Игорь не доказывал. Он показал. У тебя же есть возможность реализацию B дерева сделать "прямой".
...
Рейтинг: 0 / 0
Файл читается целиком?
    #33214254
Flex0
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Анатолий Широков, ссылку не дам. Но это написано в любом учебнике по системному программированию, например Зубков. . (не помню инициалов), программирование на ASM для Win32. В том числе и там подробненько расписано почему страница 4К, сейчас помню точно, что это упираеться в специфику устройства локальной таблицы дискрипторов процесса, глобальной таблицы дискрипторов системы и собсвенно самого дискриптора и целого ряда служебных регистров для защиты страниц+ алгоритм эффективного преобразования страницных адресов в физический адреса OC.
...
Рейтинг: 0 / 0
Файл читается целиком?
    #33214260
Flex0
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
На счет "в пользу бедных" и "ссылку не дашь" - я по ключевым словам "системное программирование" нарыл на 12 страниц ссылок :) -ищите да обрящите.
...
Рейтинг: 0 / 0
Файл читается целиком?
    #33214278
Фотография Redrik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Скорее бы 1-ое сентября... :-)
...
Рейтинг: 0 / 0
Файл читается целиком?
    #33214285
Flex0
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Соскучился ? ;) Или решил начать все занаво, увидев свою проф. непригодность ?
...
Рейтинг: 0 / 0
Файл читается целиком?
    #33214300
Фотография Redrik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ага! Именно ты, о Несравненный Гнущийся_Ноль, открыл мне глаза! :-)

P.S. Тс-с-с-с... О паяльниках ни слова! ;-)
...
Рейтинг: 0 / 0
Файл читается целиком?
    #33214302
Flex0
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну если ты дорос до состояния реального своего самоосознания, то думаю ты понимаешь, что я сделал тебе великое одолжение ;)
...
Рейтинг: 0 / 0
Файл читается целиком?
    #33216600
Igor Korolyov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hi Flex0!

Если кое-кто не в состоянии понять что данный алгоритм ЭФФЕКТИВНЕЕ простого
бинарного дерева (как по скорости поиска, так и по эффективности
использования дискового пространства, по минимизации операций доступа к
физическому носителю), то мне искренне жаль этого человека... Тем более что
он (алгоритм) даже и не называется нигде B-tree... Просто похож на каком-то
уровне абстракции. Я кажется встречал термин B+ tree или что-то в этом духе,
но точно не помню. Одно 100% - это НЕ бинарное дерево в чистом виде.

Насчёт страницы в 4К даже не знаю что и сказать - приведенные цитаты с одной
стороны справедливы - да именно так устроена память в IA32 процессорах (хотя
это лишь один из уровней абстракции - сегментная адресация уже будет
несколько сложнее простой страничной... Хотя в Windows не используются ВСЕ
возможности процессоров данной архитектуры). С другой стороны НИЧЕГО
БЛИЗКОГО к тому как ЧИТАЕТСЯ ФАЙЛ, в частности индексный в память, и как он
затем используется фоксом нет. Заметь, что я не говорю о всяких косвенно
влияющих факторах, типа секторов и кластеров имеющихся на большинстве типов
накопителей, про размеры сетевых пакетов (при сетевом размещении файлов) и
т.п.

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

Posted via ActualForum NNTP Server 1.2
...
Рейтинг: 0 / 0
Файл читается целиком?
    #33216605
Фотография Анатолий Широков
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторТем более что
он (алгоритм) даже и не называется нигде B-tree... Просто похож на каком-то
уровне абстракции. Я кажется встречал термин B+ tree или что-то в этом духе.

Да, конечно, это все навсего структура данных являющая сбалансированным сильноветвящимся деревом. Эта структура была создана для организации внешнего поиска, когда файл не может быть целиком вмещен в оперативную память. B-деревья, а так же их улучшения (B+ и B*) подробно описаны у Д.Кнута т.3 Сортировка и поиск.
...
Рейтинг: 0 / 0
Файл читается целиком?
    #33216859
Flex0
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторПорой одного знания голой теории недостаточно - надо ещё и думать, и
экспериментировать. Повторюсь - любой желающий ознакомится с тем как именно
фокс работает с файлами (абстрагируясь от тонкостей реализации драйверов как
жёстких дисков, CD и прочих, так и файловой системы), может это сделать
скачав и запустив утилиту FileMon.

Я тебе про слонов, ты мне про козлов. Если для тебя это голая теория и ты дальше FileMon не зашел, не нужно делать таких категорических заявлений.
Или ты думаешь, что в VFP реализован свой механизм управления памятью :)
Да блин, сам фокс - псего , навсего процесс. Ему 4 Гига OC выделяет, как и всем другим запущенным в Win32. Можно петь любые дифирамбы про тот как фокс работает с файлами, что он там открывает и по сколько. На уровне ОС это происходит именно так как я описал.
...
Рейтинг: 0 / 0
Файл читается целиком?
    #33218146
Igor Korolyov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hi Flex0!

1) ВНИМАТЕЛЬНО ЧИТАЙ ИЗНАЧАЛЬНЫЙ ВОПРОС!!!! то что за привычка - мы тут про
Фому, а ты про Ерёму.
2) Процессу в Win32 системах выделяется всего 2Гига памяти (3Гига под
некоторыми серверными версиями ОС) - остальные 2 Гига (или соответственно 1)
резервируются для самой системы, и собственно пользовательскому коду
недоступны (для фокса код рантайма это ТОЖЕ пользовательский код фокс вообще
написан на C++ и НИЧЕМ не отличается от других приложений на нём
написанных).
3) Фокс запрашивает себе память штатными механизмами - если ты внимательно
почитаешь про Heap, а заодно про File IO (хотя-бы банальнейший ReadFile) то
перестенешь говорить явные глупости - страничная организация памяти НЕ
МЕШАЕТ приложению запрашивать себе блоки размером скажем в 1 байт. Если
довести твои рассуждения до абсурда, и вспомнить что физически ОЗУ компа
представляет собой от 4 до пары десятков микросхем, то твои высказывания
аналогичны тому, что раз приложение запросило себе 1 байт памяти, то оно
отхватило себе целиком всю микросхему, и следующий запрос захватит следующую
микросхему :) Поверь мне, что если приложение запросит себе 100 блоков по 1
байту, то оно скорее всего получит все эти "кусочки" в рамках одной и той-же
страницы, даже учитывая накладные расходы на хранение управляющих структур.
> Можно петь любые дифирамбы про тот как фокс работает с файлами, что он там
> открывает и по сколько. На уровне ОС это происходит именно так как я
> описал.
ЧТО происходит? Чтение файла с носителя??? Т.е. если у меня имеется 10000
файлов по 1 байту, то по твоей логике для их считывания мне
потребуется 40 Мегабайт памяти??? Или если у меня имеется один файл размером
2Гига, то я не могу его обработать по частям, не считывая ЦЕЛИКОМ в память -
т.е. не выделяя себе как минимум 2Гига памяти??? Странно, но вот прямо
сейчас я могу работать ОДНОВРЕМЕННО с несколькими dbf-ами, суммарный размер
которых (вместе с cdx) превышает 2Гига, на ОС которая выделяет <2Гиг памяти
на процесс (учитывая что в эту-же память грузятся и все системные dll-ки,
фоксовый рантайм...) Парадокс?
Только не надо начинать тут рассказывать про Memory-Mapped files - для
dbf/cdx/fpt фокс не использует эту технологию, он совершенно трививально
считывает необходимые кусочки файла в локальные блоки памяти - размер
которых НЕ кратен размеру страницы памяти ОС - да и с чего-бы это ему было
необходимо. Ты можно подумать при написани C# программ тоже выравниваешь все
структуры по границе 4Кб :) Особенно учитывая что в C# в принципе невозможно
это сделать, т.к. там работа НЕ ведётся через указатели, и физическая
организация памяти скрыта от программиста.
В общем предлагаю заканчивать валять ваньку, и признать что не про то ты
поешь, как минимум не тот вопрос прочитал.

Posted via ActualForum NNTP Server 1.2
...
Рейтинг: 0 / 0
Файл читается целиком?
    #33218696
AntonGart
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Попробую высказать свое мнение: размер страницы возможно имеет смысл соотносить с размером блока на диске, таким образом можно оптимизировать операции чтения с диска. В RDMBS это называется иногда тоже блок, неделимая логическая частица при I/O-операциях. Организация памяти тут может быть и не причем...
...
Рейтинг: 0 / 0
Файл читается целиком?
    #33218772
Фотография Анатолий Широков
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Файл читается целиком?
    #33218789
Фотография Анатолий Широков
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 AntonGart

А сетевые устройства? Вообщем, Игорь, правильно сказал, что FOX ничем не отличается от других виндовс приложений и ему не ведом ни размер кластера ни другие низкоуровневые вещи. У фокса есть только WinAPI.
...
Рейтинг: 0 / 0
Файл читается целиком?
    #33219051
AntonGart
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну это логично, вообще говоря, у меня не фокс, и принцип может немного отличаться. Главное, что я выяснил, что нормально будут прочитаны страницы, необходимые для поиска записи, а не весь файл целиком.
...
Рейтинг: 0 / 0
25 сообщений из 26, страница 1 из 2
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Файл читается целиком?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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