|   |   | 
| 
 | v7: Относительные преимущества dbf-файлов Ø (Злопчинский 10.05.2016 00:53) | ☑ | ||
|---|---|---|---|---|
| 0
    
        Emery 07.05.16✎ 21:44 | 
        Я вот недавно открыл для себя преимущества dbf-файлов перед другими форматами баз данных. Понятно, что речь идет не об абсолютных достоинствах, а относительно решения определенной задачи.
 Задача была такая. Есть контрол списка данных (грид), поддерживающий виртуальный режим. Это может быть контрол на базе SysListView32, типа MFC-ешного CListCtrl либо виджет wxGrid из фреймворка wxWidgets либо соответствующий контрол из Qt или еще какой-нибудь. Также имеется конкретный файл базы данных с большим количеством записей, например, порядка сотни миллионов. Нужно организовать подкачку данных (через обработчики виртуального режима) из файла БД в виртуальную таблицу. Т.е. когда обработчик просит нас предоставить ему i-тую запись из файла БД мы должны быстренько получить ее из локальной файловой таблицы и передать обработчику. Нам требуется обеспечить удобную и быструю интерфейсную навигацию по виртуальной таблице, чтобы она отображала нужную нам страницу записей. Действия там такие: переход в начало таблицы данных (Ctrl+Home), в конец (Ctrl+End), перемещения стрелками вверх / вниз на одну запись вверх / вниз, перемещения клавишами PageUp / PageDown на одну страницу записей вверх / вниз, перемещение ползунка вертикального скролбара с помощью мыши в произвольное место, так, чтобы при этом данные в таблице плавно, легко и быстро изменялись. Главная проблема здесь, как организовать быстрый доступ к данным файловой таблицы. В общем случае нам надо проиндексировать файл (для быстрой выборки произвольного блока данных), иметь средства некоторой СУБД, с помощью которой считывать определенные порции данных в буфер, из которого уже и возвращать обработчикам виртуального режима запрашиваемые ими записи. Все это достаточно муторно, если делать самому. Однако если работать непосредственно с dbf-файлами, то ситуация сильно упрощается. Если у нас имеется огромный dbf-файл который мы хотим отображать в собственном клиенте, то виртуальную навигацию по нему организовать очень просто. Достаточно отобразить файл в память и получить к нему произвольный доступ по технологии MMF (Memory-Mapped Files). А поскольку dbf-файл имеет простую табличную структуру, то вычислить адрес начала его произвольной записи проще простого. В свое время я писал подобные тестовые программы, правда, не задумываясь о достоинствах открытой и простой структуры dbf-файлов. Там представлены dbf-файлы небольшого размера, но для больших принцип собственной навигации останется тот же. Просто в то время на этот момент я не обращал внимания. Вот ссылки: «Создание и проецирование в память существующих DBF файлов. . .» ( http://emery-emerald.narod.ru/Cpp/2E14.html ) и «Рабочий алгоритм на С++ внешней сортировки «естественным слиянием». . .»( http://emery-emerald.narod.ru/Cpp/2E1562.html ) Почему создана данная тема? Просто сейчас происходит забвение Visual FoxPro и многие вынуждены оставлять эту систему и переходить, кто на 1С, кто на MS Access или SQL Server. Однако движок VFP очень хорош, очень лёгкий и мощный, лучше, чем, скажем, у опенсорсных Harbour / xHarbour, xBase и др., чего не скажешь о его интерфейсных возможностях. Зато средства создания интерфейса сейчас достаточно развиты в других системах разработки (те же wxWidgets и Qt). Поэтому, как вариант, можно писать собственный интерфейс на одной системе, а выборку данных осуществлять из другой, в данном случае VFP. Причем для случая навигации по виртуальной таблице больших dbf¬-файлов нам даже не нужно, в принципе, использовать движок VFP, что сильно упрощает программирование. А использовать VFP только для выборки данных и других специфических задач СУБД. При этом обмен данными внешнего интерфейса с VFP можно осуществлять различными способами. Это, во-первых, DDE (у меня по этой технологии организован расчет зарплаты во внешнем приложении VFP использующем базу данных 1С77 и отправка запросов от VFP к 1С как DDE-серверу), во-вторых, использование VFP как COM / OLE сервера («Работа с dbf»: http://www.sql.ru/forum/601874/vs-rabota-s-dbf ), в третьих, через dbf-файлы, в-четвертых, через каналы связи организованных в VFP, таких как анонимные и именованные каналы, разделенная память, «почтовые ящики» и т.п. стандартные средства межпроцессного взаимодействия Windows, к которым можно получить доступ из VFP. Я думаю, что здесь перечислены не все возможности, есть еще хакерские методы, которые мы рассматривать не будем. Может быть, кому-то все это покажется сложным, но мне кажется, что при разработке собственного клиента баз данных организацию обмена данных между внешним интерфейсом и движком некоторой СУБД проще не придумаешь. P.S. Что удивительно, первая ссылка продемонстрировала преимущества спроецированных в память dbf-файлов при отображении их в виртуальный список еще семь лет назад. Но понял я это только сейчас. Для этого нужно просто увеличить размер используемых там файлов до сотен тысяч и даже миллиона записей (хотя бы тупым самокопированием). Скорость навигации по этим файлам практически не изменится. А попробуйте покрутить файлы таких размеров в 1С77. Замечу, что в данном случае контрол SysListView32 имеет встроенные ограничения на 100 миллионов записей. Я протестировал случай: три файла размерами по 250 МБ, с количеством записей более 3 миллионов, каждый. Навигация летает что дурная. Можно при желании попытаться выйти на физический предел 2 Гб для каждого dbf-файла либо 100 миллионов записей, смотря чего вы достигните быстрее. P.P.S. Давайте не будем глумиться вопросами, зачем это надо, нафига изобретать велосипед, почему использовался отстойный MFC и т.д. и т.п. Есть факт, который можно принять к сведению либо игнорировать, прочее несущественно. | |||
| 1
    
        Звездец 07.05.16✎ 21:49 | 
        Скока букв. Не осилил. Ты хоть бы вкратце описал. И опять же преимущество перед чем?     | |||
| 2
    
        Pistol 07.05.16✎ 21:51 | 
        (0) Дорогой дневник, я сегодня хорошо покушал.
 Есть факт, который можно принять к сведению либо игнорировать, прочее несущественно. | |||
| 3
    
        DGorgoN 07.05.16✎ 21:51 | 
        (1) Скорость.
 (0) Рановато ты начал. Надо было после выхода 1с 11.8.5.2384 релиза написать. | |||
| 4
    
        Emery 07.05.16✎ 21:53 | 
        (1) Быстрая и простая (во всех смыслах) навигация по сверхбольшим файлам БД.     | |||
| 5
    
        Pistol 07.05.16✎ 21:53 | 
        (4) Замеры есть?     | |||
| 6
    
        Pistol 07.05.16✎ 21:56 | 
        (5)+
 И для сетевого диска, пожалуйста. | |||
| 7
    
        Emery 07.05.16✎ 21:56 | 
        (3) Одно другому не мешает. Кто-то пишет простейших клиентов на Harbour и их ни «восьмерка», ни «девятка» не остановят.     | |||
| 8
    
        Emery 07.05.16✎ 21:58 | 
        (5) (6) Тестируйте сами, только dbf-ки увеличьте в размерах.     | |||
| 9
    
        Pistol 07.05.16✎ 22:01 | 
        (8) Понятно. Тогда см (2).     | |||
| 10
    
        Mikeware 07.05.16✎ 22:01 | 
        Больные люди...
 Нехорошо над ними смеяться.... | |||
| 11
    
        Провинциальный 1сник 07.05.16✎ 22:02 | 
        Нет принципиальной разницы в скорости при произвольном доступе к файлу через mmap или через fseek. И в том и в другом случае узкое место - сам диск. То, что в dbf все записи имеют фиксированную длину - давно известный факт. И то, что размер dbf-файла может быть значительно выше пресловутых 2 гигабайт - тоже. Но это уже не будет стандартные файлы формата dbase или фокспро.     | |||
| 12
    
        dmtrpv 07.05.16✎ 22:09 | 
        Есть специальные базы данных, работающие в оперативной памяти. In memory database. Или я не понял, что автор хочет.     | |||
| 13
    
        Garykom гуру 07.05.16✎ 22:12 | 
        Дорогой дневник, я сегодня хорошо подумал и не понял зачем (0) когда есть веб сервисы?
 И самое главное нафейкуа надо в контроле отображать столько записей с прокруткой? Когда есть поиск/подборп о нескольким ключевым составляющим? И это проще/лучше делается на сервере в sql сервере! | |||
| 14
    
        Emery 07.05.16✎ 22:13 | 
        (11) И что вы хотели этим сказать? MMF работает с файлами быстрее, чем при обычном файловом доступе, как бы по «упрощенной» процедуре, иначе, зачем было бы его изобретать? Но вопрос не в этом. Раньше я долго думал, как организовать навигацию данных в собственном клиенте через некоторую СУБД. Изобретал кольцевые буферы, оптимизировал запросы и т.п. А оказалось, что все проще пареной репы. Для навигации даже сверхбольших данных СУБД вообще не нужна. А если наш клиент готов ограничиться только поиском по индексу, то и в этом случае можно обойтись без СУБД вообще. Это не замена даже «семерки», просто иногда нужны действительно очень простые клиенты, желательно полностью бесплатные.     | |||
| 15
    
        Emery 07.05.16✎ 22:15 | 
        (12) Речь идет о создании собственных простейших клиентов, как при программировании в Harbour / xHarbour.     | |||
| 16
    
        Pixelrat 07.05.16✎ 22:20 | 
        (0) Так что с чем сравнивалось?
 (15) Безотносительно к задаче? | |||
| 17
    
        Garykom гуру 07.05.16✎ 22:20 | 
        (15) Не хочу обламывать но процесс выделения памяти из RAM для проги прпедставляем?
 Что такое дефрагментация в курсе когда на диске? А теперь представьте тоже самое но в памяти. И что будет со временем доступа к отдельным, равным по размеру, записям в этой дефрагментированной памяти? Когда ОСь тупо помрет высчитывая ячейки. ЗЫ Уже давно используются указатели. Они тупо быстрее чем вычисления адресов данных. | |||
| 18
    
        Провинциальный 1сник 07.05.16✎ 22:23 | 
        (14) Представьте себе словарь, где слова неупорядочены, и оглавления нет. Вам надо найти слово - вперед, в навигацию. Может через месяц найдете. А если есть индексы (упорядоченность записей, то есть фактически кластерный индекс) или глоссарий-оглавление - то найдете нужную информацию легко и быстро. И вам не придется листать сотни страниц, как при вашей навигации в гриде.     | |||
| 19
    
        Pistol 07.05.16✎ 22:23 | 
        (12) Паренек получил на синтетическом тесте непередаваемый результат "Навигация летает что дурная" и предлагает нам за него порадоваться.     | |||
| 20
    
        Emery 07.05.16✎ 22:23 | 
        > зачем (0) когда есть веб сервисы? 
 См. (15) > И самое главное нафейкуа надо в контроле отображать столько записей с прокруткой? Обычно реализовывались проекты с реальными данными по несколько десятков тысяч записей. Но тупое программирование навигации данных в списке приводило к непомерному расходованию ресурсов и жутки тормозам. Здесь демонстрируется тестовый режим, показывающий как сделать оптимальную навигацию, независимо от количества записей. > Когда есть поиск/подборп о нескольким ключевым составляющим? > И это проще/лучше делается на сервере в sql сервере! См. (15) | |||
| 21
    
        Pixelrat 07.05.16✎ 22:24 | 
        (14) велкам к nosql     | |||
| 22
    
        Garykom гуру 07.05.16✎ 22:25 | 
        (20) Блин объясните нафига нужен этот (15)? Да еще с громадными файлами dbf? 
 Как представлю юзера который полдня листает грид так оторопь берет... | |||
| 23
    
        Garykom гуру 07.05.16✎ 22:26 | 
        (22)+ Вся информация нужная пользователям в текущий момент должна умещаться в идеальном случае на 1 экран. И без всякого скроллинга.     | |||
| 24
    
        Aleksey 07.05.16✎ 22:27 | 
        (22) ну недавно писали зачем, например журнал доставок в котором данные за 1,5 месяца     | |||
| 25
    
        Aleksey 07.05.16✎ 22:27 | 
        (23) вот кто тебе этот бред сказал?     | |||
| 26
    
        Garykom гуру 07.05.16✎ 22:27 | 
        (23)+ Если инфа не влезает на 1 экран, то нужно ее поделить на классы/группы и засунуть в разные вкладки-табы чтобы юзер мог переключаться по ним.     | |||
| 27
    
        Garykom гуру 07.05.16✎ 22:28 | 
        (24) Нафейхуа нужен этот журнал? С данными за 1,5 месяца? Что там юзер найдет без специнструментов для поиска нахождения/выявления неких зависимостей/данных?     | |||
| 28
    
        Pistol 07.05.16✎ 22:29 | 
        (23) Вот ты сейчас всю концепцию веб-страницы со скроллом убил :)     | |||
| 29
    
        Aleksey 07.05.16✎ 22:29 | 
        я захожу в подбор контрагентов, предлагаешь мне потратить полчаса на установку фильтров, чтобы поместить информацию на 
 экран, а потом понять, что не правильно указала класс в фильтре, поэтому и не нахожу нужной мне инфы? | |||
| 30
    
        Garykom гуру 07.05.16✎ 22:29 | 
        (25) Я сказал - по опыту разработки собственному разных конфиг и прочего.
 И 1С со мной согласны ;) гляньте последние типовые на УФ и БП и УТ | |||
| 31
    
        Провинциальный 1сник 07.05.16✎ 22:29 | 
        (27) Выгрузит в эксель и начнет ВПРы писать, очевидно. И потом с умным видом утверждать "эта ваша 1с ничего не умеет")     | |||
| 32
    
        Aleksey 07.05.16✎ 22:30 | 
        (23) прости но посмотри на этот топик, он у тебя на экран помещается без скролинга??     | |||
| 33
    
        Garykom гуру 07.05.16✎ 22:30 | 
        (29) Это тупо быстрее другой фильтр чем листать. Листают только от безысходности (когда нет инструментов поиска/отбора) 
 или от тупости | |||
| 34
    
        Aleksey 07.05.16✎ 22:30 | 
        (27) У Дениса спроси, он тебе расскажет нафига     | |||
| 35
    
        Garykom гуру 07.05.16✎ 22:31 | 
        (32) А мне нафуй не надо видеть что там выше. Просто навожу на скобочки и вижу пост на этом же экране. Прикинь да?     | |||
| 36
    
        Pistol 07.05.16✎ 22:31 | 
        А. Мальчик просто пиарится :)
 http://www.sql.ru/forum/1212962/otnositelnye-preimushhestva-dbf-faylov | |||
| 37
    
        Aleksey 07.05.16✎ 22:31 | 
        (33) Хочешь  сказать установить 20+ фильтров  и галок быстрее поиска по наименованию ?     | |||
| 38
    
        Garykom гуру 07.05.16✎ 22:32 | 
        (34) Обязательно спрошу что они с ним делают. И могут ли что вручную листая сделать. Готов поспорить что маты складывают и просят/требуют сделать что то "чтобы удобно".     | |||
| 39
    
        Emery 07.05.16✎ 22:32 | 
        (16)  > Так что с чем сравнивалось? 
 Dbf с любым другим файлом БД. Вы можете предложить лучший вариант аналогичной реализации для других форматов БД? > Безотносительно к задаче? Вообще говоря, да. На (x)Harbour пишутся сотни и тысячи простых клиентов по всему миру, для этого он и был изобретен, но какие именно, не суть важно, главное что именно можно реализовать в этой системе. | |||
| 40
    
        Aleksey 07.05.16✎ 22:32 | 
        (35) т.е. пофиг что выше написано, есть только мое мнение, а остальные неправильные, поэтому нет смысла и читать?     | |||
| 41
    
        Garykom гуру 07.05.16✎ 22:33 | 
        (37) *ля... Ключевое слово "поиск по наименованию". По первым или любым символам. С показом не всего хлама и скроллингом а отбором.
 Фильтр автоматом ставится. | |||
| 42
    
        Garykom гуру 07.05.16✎ 22:34 | 
        (40) Прочитай лучше что я написал. Мне нафуй не нужно туда скроллить. Скрипт = навел - показался нужный пост.     | |||
| 43
    
        NorthWind 07.05.16✎ 22:34 | 
        (39) а если надо объединять несколько таблиц, тогда как?     | |||
| 44
    
        Aleksey 07.05.16✎ 22:35 | 
        (41) сначала поиск, потом уже скролинг, ибо хрен его знает как оно там написано     | |||
| 45
    
        Pixelrat 07.05.16✎ 22:36 | 
        (39) dbf - лишь файл единственной таблицы, хранящий данные в текстовом виде, не знающий многих типов данных. 
 (39) на харборе пишут неисправимые старпёры. | |||
| 46
    
        Garykom гуру 07.05.16✎ 22:39 | 
        (44) Походу бесполезно )) 
 Скроллинг это глупость если он не простой линейный с показом нового для чтения. Как на сайтах или форумах. Для поиска нужной информации скроллинг не нужен и только мешает. | |||
| 47
    
        Pixelrat 07.05.16✎ 22:40 | 
        Иногда интересна последовательность.     | |||
| 48
    
        Emery 07.05.16✎ 22:40 | 
        (17) > Не хочу обламывать но процесс выделения памяти из RAM для проги прпедставляем? 
 MMF практически не требует оперативной памяти. > Что такое дефрагментация в курсе когда на диске? А теперь представьте тоже самое но в памяти. > И что будет со временем доступа к отдельным, равным по размеру, записям в этой > дефрагментированной памяти? Когда ОСь тупо помрет высчитывая ячейки. Клиент это не сервер, для него это не критично. Если вы хотите, чтобы ваша система надежно работала, вы должны за ней ухаживать. Ну а если вы желаете систему угробить, то вы всегда сможете добиться этого. > ЗЫ Уже давно используются указатели. Они тупо быстрее чем вычисления адресов данных. В данном случае, не вижу преимуществ. | |||
| 49
    
        Pixelrat 07.05.16✎ 22:42 | 
        (48) Кто сказал, что передовые СУБД не испотзуют MMF?     | |||
| 50
    
        NorthWind 07.05.16✎ 22:43 | 
        (48) для одной таблицы все понятно, хорошо и просто. Но что вы будете делать, если вам нужно будет собрать выборку из 2-3 таблиц хотя бы?     | |||
| 51
    
        Emery 07.05.16✎ 22:44 | 
        (18) Здесь речь не идет об индексации. Это уже другая задача, решаемая различными способами.     | |||
| 52
    
        NorthWind 07.05.16✎ 22:44 | 
        на самом деле я подобные решения видел, причем еще в конце 90-х. Причем реализация была один-в-один - мапированный файл и виртуал лист вью в дельфи (точнее в билдер)     | |||
| 53
    
        Garykom гуру 07.05.16✎ 22:44 | 
        (48) >> ЗЫ Уже давно используются указатели. Они тупо быстрее чем вычисления адресов данных. 
 >В данном случае, не вижу преимуществ. Представим что вместо одного общего куска данных в память записаны отдельные записи и указатели на каждую запись получены и в нужном порядке засунуты в некую структуру (массив). И проблема "скроллинга" решена. Берем нужные указатели из массива и получаем по ним нужные записи. Вместо вычисления адресов записей. И заодно решили проблему индексов и поиска/отбора. Все в этой же структуре уже. Легко искать/отбирать/показывать. | |||
| 54
    
        Emery 07.05.16✎ 22:47 | 
        (22) > Блин объясните нафига нужен этот (15)? Да еще с громадными файлами dbf?
 Если вам не нужны собственные клиенты для БД, то боюсь, что я не смогу убедить вас в их необходимости, просто игнорируйте этот топик. | |||
| 55
    
        Garykom гуру 07.05.16✎ 22:47 | 
        (54) Муахаха. Откройте для себя клиент-серверную архитектуру. На одном клиентском только компе и в броузере. ))     | |||
| 56
    
        Провинциальный 1сник 07.05.16✎ 22:48 | 
        (48) Еще раз. mmap придумали не для скорости, а для удобства программирования. Скорость в любом случае определяется скоростью физического позиционирования и чтения сектора на диске.     | |||
| 57
    
        Pixelrat 07.05.16✎ 22:48 | 
        и mvc     | |||
| 58
    
        Garykom гуру 07.05.16✎ 22:49 | 
        (57) опередил (( тока дописать хотел...     | |||
| 59
    
        Emery 07.05.16✎ 22:50 | 
        (23) > Вся информация нужная пользователям в текущий момент должна умещаться в идеальном случае на 1 экран. И без всякого скроллинга.
 Мой друг – программист придерживается аналогичных взглядов (использует всегда одну перегружаемую форму в Акцессе). Мы не согласны друг с другом, но это не мешает нам мирно сосуществовать :) . | |||
| 60
    
        H A D G E H O G s 07.05.16✎ 22:52 | 
        (56) Ему тебя не понять.     | |||
| 61
    
        Emery 07.05.16✎ 22:53 | 
        (36) К сожалению, там народ не такой активный как здесь : ( .     | |||
| 62
    
        H A D G E H O G s 07.05.16✎ 22:54 | 
        Прекрасные dbf файлы разбиваются первым же вопросом юзера
 "как тут найти по ИНН" | |||
| 63
    
        Garykom гуру 07.05.16✎ 22:55 | 
        (62) +1
 и как найти "ненужных" контрагентов (с кем более года не было документов) или неплательщиков | |||
| 64
    
        H A D G E H O G s 07.05.16✎ 22:57 | 
        Я даже и представить себе не могу, где я могу использовать простой dbf.
 обычно либо csv(тупо текст) либо sql (ms sql express, или ms sql ce) | |||
| 65
    
        Garykom гуру 07.05.16✎ 22:59 | 
        (64) DBF хорош для обмена данными структурированными линейными. Тупо шустрее выгрузка/загрузка чем парсинг CSV если там накосячили с """" и разделителями.     | |||
| 66
    
        Emery 07.05.16✎ 23:00 | 
        (45) > dbf - лишь файл единственной таблицы, хранящий данные в текстовом виде, не знающий многих типов данных. 
 Никто не говорит о самодостаточном решении. Любая задача подразумевает несколько этапов. Первый пройден на ура. Следующий этап индексация. Тут уже имеется несколько неплохих вариантов и т.д. > на харборе пишут неисправимые старпёры. Давайте не опускаться до критиканства. | |||
| 67
    
        Garykom гуру 07.05.16✎ 23:01 | 
        (65)+ Если данные сложные по структуре (иерархические) то преимущества DBF превращаются в недостатки и лучше уже XML или JSON.     | |||
| 68
    
        Провинциальный 1сник 07.05.16✎ 23:02 | 
        (66) dbf неплохой вариант для задачи "телефонный справочник села Гадюкино", для чего-то большего лучше sql-база.     | |||
| 69
    
        Garykom гуру 07.05.16✎ 23:03 | 
        (66) >Первый пройден на ура. Следующий этап индексация. Тут уже имеется несколько неплохих вариантов и т.д. 
 советую всегда продумывать вперед... а то рефакторинг с "переписать все это нафиг" замучает | |||
| 70
    
        Pixelrat 07.05.16✎ 23:04 | 
        (66) Нежелание прогрессировать достойно порицания.
 На следующих этапах скорость если и была, то быстро испарится. | |||
| 71
    
        Garykom гуру 07.05.16✎ 23:04 | 
        (68) Как раз плохой вариант с телефонным справочником. Что делать с нормализацией? Бить на несколько таблиц если у одного адреса/абонента несколько телефонов, причем разных?     | |||
| 72
    
        Провинциальный 1сник 07.05.16✎ 23:05 | 
        (71) Одно из двух, нормализация либо нужна (тогда будет несколько таблиц) либо не нужна)     | |||
| 73
    
        Emery 07.05.16✎ 23:06 | 
        (49) > Кто сказал, что передовые СУБД не испотзуют MMF?
 Да, многие используют, даже 1С77 использует MMF для файла подкачки, при организации DDE. Но что из этого следует? Вы можете реализовать аналог для другого формата БД? | |||
| 74
    
        Garykom гуру 07.05.16✎ 23:06 | 
        (72) И будет в случае одной таблицы полная тупость с дублированием данных в разных строках. Да оно сжимается хорошо архиватором, но нафуя?
 Не проще JSON или банальный древний XML? | |||
| 75
    
        Pixelrat 07.05.16✎ 23:08 | 
        (73) Я возложу эту головную боль на плечи СУБД и буду озадачиваться совсем другим.     | |||
| 76
    
        Emery 07.05.16✎ 23:11 | 
        (50) > для одной таблицы все понятно, хорошо и просто. 
 В демонстрационном примере использованы три таблицы. > Но что вы будете делать, если вам нужно будет собрать выборку из 2-3 таблиц хотя бы? А это уже третий этап. Второй организация собственной индексации безотносительно СУБД. Третий – использование СУБД. Для простейших клиентов – д.б. простейшая СУБД. Это Visual FoxPro. Все про все – занимает несколько мегабайт. О способах связей внешнего клиента с VFP говориться в топике. Причем там перечислены не все методы. Но это уже отдельный разговор. | |||
| 77
    
        Провинциальный 1сник 07.05.16✎ 23:12 | 
        (76) Велосипедостроение как хобби вполне имеет право на жизнь..     | |||
| 78
    
        Garykom гуру 07.05.16✎ 23:12 | 
        (76) >Это Visual FoxPro
 может пора уже оставить окаменелости в музее? | |||
| 79
    
        Garykom гуру 07.05.16✎ 23:13 | 
        (77) Угу примерно как сча на QBASIC писать учетную систему...     | |||
| 80
    
        Emery 07.05.16✎ 23:16 | 
        (52) > на самом деле я подобные решения видел, причем еще в конце 90-х. 
 > Причем реализация была один-в-один - мапированный файл и виртуал лист вью в дельфи (точнее в билдер) Вот, молодцы! Правильные мысли имеют свойство переоткрываться. Однако различия будут в нюансах реализации. Вся прелесть в том, что все можно сделать под себя. | |||
| 81
    
        Garykom гуру 07.05.16✎ 23:17 | 
        (80) Скажите где сейчас эти "молодцы" с их супер решениями?     | |||
| 82
    
        Emery 07.05.16✎ 23:22 | 
        (53) > И проблема "скроллинга" решена.
 Проблема скроллинга и так решена, причем в соответствии с требованием обработчиков виртуального режима. > И заодно решили проблему индексов и поиска/отбора. Если есть дерево индексов (для cdx-файлов это B+ деревья, т.е. бинарные деревья + двусвязный список), то дальше работа с индексами будет стандартной. | |||
| 83
    
        Garykom гуру 07.05.16✎ 23:24 | 
        (82) А хотя бы в курсе в каком виде в cdx-файлах хранятся "указатели" на конкретные записи?     | |||
| 84
    
        Emery 08.05.16✎ 10:11 | 
        (69) > советую всегда продумывать вперед... а то рефакторинг с "переписать все это нафиг" замучает
 Не замучает, я давно знаю чего хочу, вопрос только в должной самомотивации. | |||
| 85
    
        Emery 08.05.16✎ 10:15 | 
        (70) > Нежелание прогрессировать достойно порицания. 
 Спорное утверждение. Проблема не в прогрессе, а в том, что на «вкус и цвет. . .» > На следующих этапах скорость если и была, то быстро испарится. То же пальцем в небо. Проблемы всегда будут, но и решения их так же. | |||
| 86
    
        Emery 08.05.16✎ 10:17 | 
        (77) Велосипедостроение как хобби вполне имеет право на жизнь..
 Это настолько избитый штамп, что уже не цепляет. Более оригинальных мыслей нет? | |||
| 87
    
        Emery 08.05.16✎ 10:21 | 
        (78) >> Это Visual FoxPro 
 > может пора уже оставить окаменелости в музее? За деревьями так трудно увидеть лес. . . Сказано же, VFP это самая легкая и шустрая СУБД, всего несколько мегабайт, которые даже инсталлировать не обязательно. Очень удобно для простых задач. Для сложных будем выбирать другие средства. Что же тут непонятного? | |||
| 88
    
        Emery 08.05.16✎ 10:26 | 
        (81) Скажите где сейчас эти "молодцы" с их супер решениями?
 Сверхлегкие решения не могут претендовать на обозримый рынок. Это естественно, так же естественно, как и использовать их при необходимости. Разных программ существуют миллионы. Среднее количество их пользователей будет весьма скромным, но это не отменяет необходимость в них. | |||
| 89
    
        Emery 08.05.16✎ 10:33 | 
        (83) > А хотя бы в курсе в каком виде в cdx-файлах хранятся "указатели" на конкретные записи?
 Я в свое время интересовался алгоритмом создания CDX файлов ( http://www.sql.ru/forum/686605/algoritm-sozdaniya-cdx-faylov ). Более конкретной информации в открытом доступе найти трудно. Однако у меня есть закрытые исходники, где реализована технология создания cdx-файлов. На базе всего этого я готовлю собственный вариант, как альтернатива, построение компаундных индексов с помощью VFP. Если у вас есть конкретная информация по этим вопросам, то можете ли дать ссылку? | |||
| 90
    
        Garykom гуру 08.05.16✎ 14:17 | 
        Вот умный же спец, а такой дурью мается...     | |||
| 91
    
        Mikeware 08.05.16✎ 16:23 | 
        (89) в комплекте с клиппером 5.3 была дока по разным типам индексов. Кроме мелкомягковского Rushmore. Но и рашмор появился к 2000-м годам в открытом доступе...     | |||
| 92
    
        Mikeware 08.05.16✎ 16:24 | 
        (90) "Эту бы энергию, да в мирных целях!"©     | |||
| 93
    
        Emery 08.05.16✎ 18:34 | 
        (91) > Но и рашмор появился к 2000-м годам в открытом доступе...
 Что-то я ничего путного в Интернете не нашел. Кстати, значимость технологии Рашмор лишний раз доказывает, что от VFP еще рано отказываться. Для легких клиентов это самое то. | |||
| 94
    
        hhhh 08.05.16✎ 18:41 | 
        (93) в 1с то ты зачем пришел? Тут тебя не оценят. Тебе на другие форумы надо.     | |||
| 95
    
        hhhh 08.05.16✎ 18:43 | 
        (93) Волшебнику то заплатил 5000 за рекламу своего поделия?     | |||
| 96
    
        Emery 08.05.16✎ 18:50 | 
        (94) > в 1с то ты зачем пришел? Тут тебя не оценят. Тебе на другие форумы надо.
 Я не против, если тему перенесут в политический офтопик. Ценить меня не надо, я сам себя ценю. А некоторым не мешало быть повежлевее. В России уже даже армия вежливая, про Президента я вообще молчу. А вот «мирняк», иногда позволяет себе лишнее :) . | |||
| 97
    
        Emery 08.05.16✎ 18:53 | 
        (95) > Волшебнику то заплатил 5000 за рекламу своего поделия?
 А вот люди неравнодушные к чужим деньгам явно лишние на этом форуме. | |||
| 98
    
        Asmody 08.05.16✎ 19:00 | 
        (0) "сейчас происходит забвение Visual FoxPro" - только мне кажется, что ТС 15 лет назад украли инопланетяне и только сейчас вернули?     | |||
| 99
    
        Звездец 08.05.16✎ 19:05 | 
        сталкивался с Visual FoxPro еще в далеком 2004 году примерно. Это и тогда было анахронизмом     | |||
| 100
    
        Звездец 08.05.16✎ 19:06 | 
        (97) ути какой, тебе ли решать кто на форуме нужный, кто лишний     | |||
| 101
    
        ДенисЧ 08.05.16✎ 19:07 | 
        ТС, а занафига тебе вообще 1с?     | |||
| 102
    
        spock 08.05.16✎ 19:15 | 
        (0) а почему бы не использовать современные компактные СУБД? Например, тот же sqlite?     | |||
| 103
    
        spock 08.05.16✎ 19:16 | 
        +102 или там не работает MMF и потому не подходит?     | |||
| 104
    
        Mikeware 08.05.16✎ 19:16 | 
        (98) ну что ты уж так сразу... Может, он просто спал...     | |||
| 105
    
        Звездец 08.05.16✎ 19:17 | 
        Быстородействие - это конечно хорошо, но что делать когда все это чудо анахронизма с миллионами записей рухнет? DBF не самый отказоустойчивый формат     | |||
| 106
    
        Mikeware 08.05.16✎ 19:21 | 
        (105) не доводить до " миллионов".
 Для мелких поделок дбф, да и вижуал фокспро - вполне проканают, несмотря на моральное устаревание.. | |||
| 107
    
        Emery 08.05.16✎ 19:21 | 
        (101) > ТС, а занафига тебе вообще 1с?
 «Семерка» или «восьмерка»? | |||
| 108
    
        Звездец 08.05.16✎ 19:22 | 
        (106) Это понятно, но ТС то про миллионы записей речь завел     | |||
| 109
    
        Mikeware 08.05.16✎ 19:22 | 
        (105) кстати, было дело - дбф собрал из кусочков. А вот с мдф сиквельным так не прокатило...     | |||
| 110
    
        Звездец 08.05.16✎ 19:22 | 
        (107) Да любая. Почему не пилишь свои велосипеды на dbf?     | |||
| 111
    
        Mikeware 08.05.16✎ 19:23 | 
        (108) "и ты говори..."©     | |||
| 112
    
        Звездец 08.05.16✎ 19:24 | 
        (109) было и я собирал, пару раз и не собралось в итоге, но шансов уронить сиквел так чтоб база не поднялась на порядок меньше, чем dbf.     | |||
| 113
    
        Звездец 08.05.16✎ 19:25 | 
        (112) опять же возможности резервного копирования, даже если упадет сиквел, то имея правильно настроенное резервное копирование, даже пытаться восстанавливать не буду, восстановлю бекап с минимальными потерями и все     | |||
| 114
    
        Emery 08.05.16✎ 19:38 | 
        (102) > а почему бы не использовать современные компактные СУБД? Например, тот же sqlite?
 Можно и Sqlite и MySQL и Postgree и т.д. Ну, вел бы я сейчас разговор о MySQL, а вы бы спросили, почему не VFP? Любую задачу нужно решать минимальными средствами. Зачем стрелять из пушки по воробьям? Dbf – простейший формат базы данных, проще него, пожалуй, только txt-формат. VFP тоже простейшая, легкая и шустрая БД. Устраивает? Вполне! Если бы вы мне предоставили аналогичную моей реализацию на Sqlite, то я бы сравнил ее со своей. Если она окажется проще и удобней в использовании, то с удовольствием на нее перешел. А так у меня только небольшой опыт работы с Sqlite и MySql из Qt. Не скажу, что в большом восторге от них. Как вариант, да, лежит в запасе. Хотя в Qt и c dbf работать не слишком очевидно, но можно. Там я к VFP цеплялся как к OLE-серверу (где-то на sql.ru опубликовано). Сейчас можно попробовать работать напрямую. Также интересен wxWidgets и его wxGrid в виртуальном режиме. В общем, я пробую разные варианты. Сейчас главный вопрос для меня выбрать оптимальное межпроцессное взаимодействие. | |||
| 115
    
        Emery 08.05.16✎ 19:52 | 
        (105) > Быстородействие - это конечно хорошо, но что делать когда все это чудо анахронизма с миллионами записей рухнет? 
 Для легкого клиента это не проблема. Рухнет, подымем и восстановим. Кстати, dbf-файлы очень просто восстанавливать из-за их простой открытой структуры. С другими форматами проблем больше будет. Вот у меня написан драйвер на Си (тоже есть ссылка на sql.ru), для системы учета рабочего времени, который сбрасывает данные со считывателей, на которых пользователи отмечаются своими карточками, в дбф-формат. Система работает непрерывно уже более трех лет. И ни разу dbf-файлы с данными отметок не «упали». Хотя мы обращаемся к ним по «живому». Причем немало было проблем с электричеством, а нетбуки у меня работают безо всяких упс-ников. Записей там уже много миллионов. > DBF не самый отказоустойчивый формат. Мой опыт их использования говорит об обратном. Их отказоустойчивости вполне достаточно для поставленных нами целей. | |||
| 116
    
        Звездец 08.05.16✎ 19:55 | 
        (115) что-то я совсем не понимаю уже прикладного значения велосипеда твоего.
 Одно дело, когда в dbf пишет/читает одна прога (например система пропусков) и совсем другое, когда куча клиентов, да еще и по сети (например та же 1с 77) | |||
| 117
    
        Emery 08.05.16✎ 19:58 | 
        (110) > Да любая. Почему не пилишь свои велосипеды на dbf?
 Не вполне понял наезд. И с «семеркой» и с «восьмеркой» я тоже имею дело. Только работаю я с ними нестандартно в режиме «1С:Несовместимо». От меня не требуют «шашечки», а требуют «ехать». Я и «еду», но так как мне нравиться. Когда начнут требовать «шашечки» в ущерб «ехать», тогда будем решать проблему по мере ее поступления. | |||
| 118
    
        Звездец 08.05.16✎ 20:03 | 
        (117) что-то тема, которая начиналась как ниочем скатилась в никуда.
 Ты своим постом в (0) что нам донести то хотел? | |||
| 119
    
        Emery 08.05.16✎ 20:14 | 
        (116) > Одно дело, когда в dbf пишет/читает одна прога (например система пропусков) и совсем другое, когда куча клиентов, да еще и по сети (например та же 1с 77)
 Ну, vfp9t.dll мультитредовая библиотека, поэтому с ней можно пытаться организовывать разделенный доступ к dbf-файлам. Но до этого я пока еще не дошел. | |||
| 120
    
        Звездец 08.05.16✎ 20:16 | 
        (119) чтож до этого и 1с не дошла, если она такая хорошая     | |||
| 121
    
        Emery 08.05.16✎ 20:17 | 
        (118) > Ты своим постом в (0) что нам донести то хотел?
 Ровно то, что там написано, сообщить факт, который мне показался важным. Все остальное уже не более, чем объяснение деталей. Если все понятно, тему можно прекращать. | |||
| 122
    
        Emery 08.05.16✎ 20:29 | 
        (120) > чтож до этого и 1с не дошла, если она такая хорошая
 Зато до этого дорулил Парус. Только Парус допустил концептуальную ошибку, на мой взгляд, из-за чего его система не так распространена, как ему хотелось бы. Он задействовал интерфейс самого VFP, а он все-таки не настолько хорош, как хотелось бы. Ну и платформу свою оставил закрытой, как и БЭСТ-5. По этим причинам эти системы не взлетели. «Семерка» поступила умнее, у них почти идеальный интерфейс (на то время, а сейчас недостатки компенсируются внешними компонентами), открытый формат БД и наличие конфигуратора. Поэтому, то, что они не воспользовались движком VFP – понятно. Да, они потеряли в производительности, и может быть в надежности, но это оказалось некритичным. Главное наличие конфигуратора и открытой БД позволили системе взлететь. А вот по бабкам фирма «1С» не прогадала. Кстати, я когда-то сравнивал аналогичные запросы в «семерке» и в VFP. В последнем они работали в 15 раз быстрее! | |||
| 123
    
        Звездец 08.05.16✎ 20:32 | 
        (122) формат БД хоть и открытый в 77, но доступ к данным в обход считается нарушением ЛС     | |||
| 124
    
        Провинциальный 1сник 08.05.16✎ 20:34 | 
        (122) "я когда-то сравнивал аналогичные запросы в «семерке» и в VFP."
 В семерке штатно нет sql-подобных запросов. То, что в семерке делает объект "Запрос", вообще не сравнимо с sql - это просто велосипед с квадратными колесами от фирмы 1с. | |||
| 125
    
        Emery 08.05.16✎ 20:44 | 
        (123) > формат БД хоть и открытый в 77, но доступ к данным в обход считается нарушением ЛС
 Что-то я ни разу не слышал, чтобы фирма «1С» наезжала на rainbow.dll, 1cpp.dll, 1sqlite.dll и прочим вещам, которые обеспечивают прямой доступ к ее dbf-ной базе данных. Разговоры были только относительно БД на SQL-сервере, но до конкретных обвинений дело практически никогда не доходило. Вы знаете прецеденты? Ну, хорошо, пусть будет нарушение. И вот у вас летит база данных или вы изучаете ее формат, чтобы сделать собственный экспорт-импорт (помимо существующих обработок). Благодаря открытости БД, вы ремонтируете свою базу, сохраняете свои нервы и деньги или осуществляете экспорт-импорт данных в производственных целях. Это что, уголовно наказуемое деяние? Может быть мы стали заложниками неких мифов? | |||
| 126
    
        Emery 08.05.16✎ 20:47 | 
        (124) > В семерке штатно нет sql-подобных запросов. То, что в семерке делает объект "Запрос", вообще не сравнимо с sql - это просто велосипед с квадратными колесами от фирмы 1с.
 Об этом и речь. Именно поэтому я никогда не пользуюсь запросами в 1С77. Для запросов (при работе моей зарплатной конфигурации) прекрасно подходит VFP, соединенный с «семеркой» по DDE-каналу. | |||
| 127
    
        spock 08.05.16✎ 21:03 | 
        (122) На дворе шел 2016 год. Нам открывали глаза на то, что было известно лет 10-ть назад.     | |||
| 128
    
        spock 08.05.16✎ 21:05 | 
        Уважаемый Emery, что же с Вами было в период с 2007-2015 гг?     | |||
| 129
    
        hhhh 08.05.16✎ 21:13 | 
        (128) как настоящий ученый, углубился в свои исследования, он наверно и не знает,  что с 1с теперь только в браузерах и на айфонах работают.     | |||
| 130
    
        Звездец 08.05.16✎ 21:15 | 
        Да и вообще, подход к выбору СУБД со стороны ее проще восстановить, а не со стороны ее сложно уронить, заведомо провальный     | |||
| 131
    
        Emery 08.05.16✎ 21:32 | 
        (127) > На дворе шел 2016 год. Нам открывали глаза на то, что было известно лет 10-ть назад.
 Я вас разочарую. Txt-формат известен с времен Царя Гороха, а им пользуются до сих пор и, подозреваю, будут пользоваться еще наши правнуки. Тоже касается dbf. «Отменить» этот формат БД не сможет никто, и он также будет существовать если не вечно, то достаточно долго. Вы еще о нем на пенсии услышите. Так же еще не скоро исчезнут 32-х разрядные приложения, даже если рядом будут 256-разрядные. Не зря говорят: «Кесарю кесарево, а слесарю – слесарево» :) . Ниша dbf может упасть в разы, но не потому, что он плохой, а потому, что законодателям мод ПО не выгодно все дешевое и эффективное. Пример из жизни. Мы, будучи студентами в СССР, купили неподгораемую сковородку из тонкой листовой стали за 80 копеек! Вся общага жарила на ней многие годы, никогда ничего не подгорало, хоть жарь на воде (и жарили картошку, когда заканчивалась стипендия). А что сейчас бы сказали? Да это отстой, есть современные солидные (в смысле тяжелые и дорогие) тефлоновые монстры, которые супер-пупер как модные. Только за ними уход должен быть очень нежный, не дышать на них, соблюдать регламент, тогда, быть может, пару лет они прослужат. Вот ваши сентенции у меня вызывают подобные ассоциации. | |||
| 132
    
        Emery 08.05.16✎ 21:34 | 
        (128) > Уважаемый Emery, что же с Вами было в период с 2007-2015 гг?
 Ничего не было, я просто занимался другими проектами. А сейчас тем, что нравиться. | |||
| 133
    
        Джордж1 08.05.16✎ 21:35 | 
        Плюсую автору. До сих пор пользуюсь 7-кой файловой. Надежна как автомат Калашникова.
 SQL-запросы и dbf совместимы? Как реализуется по правильному сетевой режим работы - без падения производительности? | |||
| 134
    
        Garykom гуру 08.05.16✎ 21:36 | 
        (98) Это сейчас стандартная проблема когда болото затягивает. Люди десятки лет сидят на одном и том же а потом когда спохватываются - или рвать жилы и напрягать мозги чтобы тупо догнать. Или на пенсию ну еще вариант к таким же пенсионерам на работу.     | |||
| 135
    
        Злопчинский 08.05.16✎ 21:37 | 
        (126)  вместо чегото зублолмного с дде - не проще было непосредственно в семерке юзать прямые запросы?     | |||
| 136
    
        Emery 08.05.16✎ 21:38 | 
        (129) > как настоящий ученый, углубился в свои исследования, он наверно и не знает,  что с 1с теперь только в браузерах и на айфонах работают.
 Да пусть работают хоть в очках Google, меня это мало трогает. Человек не должен прогибаться под модные тенденции, только потому, что они модные. Один вон деятель, тоже пел: «Пусть лучше мир прогнется под нас», но не сдержал своего обещания. Забыл наверное. . . | |||
| 137
    
        Звездец 08.05.16✎ 21:38 | 
        (133) в семерке только терминальный режим, никаких других способов совместной работы большого числа пользователей(комфортной и надежной) нет     | |||
| 138
    
        Злопчинский 08.05.16✎ 21:38 | 
        На vfp много примеров приложений для многопользовательской работы с бд?     | |||
| 139
    
        Garykom гуру 08.05.16✎ 21:39 | 
        (131) Применение DBF это проблема тупизны специалистов. Еще в 2005-2007 году столкнулся. 
 Что люди типа ИТ-ники и типа программисты тупо в DBF выгрузить могут а в XML нет. Не понимают что это такое и с чем его едят. Идиотизм если честно. | |||
| 140
    
        Злопчинский 08.05.16✎ 21:40 | 
        Восьмерку не знаю, 
 Как хобби пишу wms на 7.7 Что автор полезного может предложить? | |||
| 141
    
        Джордж1 08.05.16✎ 21:40 | 
        (137)ну есть же какая-то приблуда для 1С - реализующая клиент-сервер для dbf     | |||
| 142
    
        Джордж1 08.05.16✎ 21:41 | 
        и еще вопрос - есть что-то для dbf стандартное для защиты данных?     | |||
| 143
    
        Garykom гуру 08.05.16✎ 21:41 | 
        (140) Автор предлагает засунуть БД целиком в RAM и не обращаться к диску совсем.
 Причем RAM сетевая и распределенная на всех клиентов. | |||
| 144
    
        Злопчинский 08.05.16✎ 21:41 | 
        (139)  херня какая
 от саповцев почемуто в основном эксели приходят | |||
| 145
    
        Злопчинский 08.05.16✎ 21:42 | 
        (143)  хм
 А как сделать сетевую рам? | |||
| 146
    
        Emery 08.05.16✎ 21:42 | 
        (133) > SQL-запросы и dbf совместимы? 
 В VFP без сомнения, в 1С77 не совсем. > Как реализуется по правильному сетевой режим работы - без падения производительности? Исключительно терминал сервер. Правда будут вопросы по терминальным клиентским лицензиям, но Интернет позволяет решить этот вопрос. | |||
| 147
    
        Звездец 08.05.16✎ 21:42 | 
        (141) использование 77 с SQL только повышает степень сохранности данных и позволяет работать с базами, которые в dbf существовать не могут, причем скорость иногда даже падает при этом.
 Если бы она была, то 77 была бы сейчас на коне | |||
| 148
    
        Звездец 08.05.16✎ 21:43 | 
        (142) нет     | |||
| 149
    
        Garykom гуру 08.05.16✎ 21:43 | 
        (144) Потому что выгрузка в XLS это "де факто де стандарте". Аналогично с DBF который почти табличка экселя.     | |||
| 150
    
        Звездец 08.05.16✎ 21:43 | 
        (146) интернет не позволяет решить вопрос дядьки в погонах и собственной совести     | |||
| 151
    
        Злопчинский 08.05.16✎ 21:44 | 
        (141)  http://www.wirth.ru     | |||
| 152
    
        Джордж1 08.05.16✎ 21:45 | 
        (147)да точно есть такая
 http://www.wirth.ru/ | |||
| 153
    
        Звездец 08.05.16✎ 21:45 | 
        (149) причем xls можно не формировать, а формировать штатный таб док и сохранять средством платформы     | |||
| 154
    
        spock 08.05.16✎ 21:45 | 
        (131) Да ради бога :)     | |||
| 155
    
        Злопчинский 08.05.16✎ 21:46 | 
        Так нихера не поеял
 Что автор от нас хочет/предлагает? | |||
| 156
    
        Emery 08.05.16✎ 21:46 | 
        (138) > На vfp много примеров приложений для многопользовательской работы с бд?
 Смотрите в сторону Паруса. Ну а то, что не много, так это потому, что библиотеки VFP рантайм это нестандартный COM-сервер, с которым никто не умеет работать, хотя можно делать exe-шники из VFP. | |||
| 157
    
        Djelf 08.05.16✎ 21:47 | 
        (151) Ага! Опередил на минуту ;)
 И, кстати, стала бесплатная. А как стала бесплатная так ее удалось на Linux под Wine запустить. Ибо не надо было связываться с ms`овскими криптопрвайдерами... | |||
| 158
    
        Злопчинский 08.05.16✎ 21:48 | 
        нехай автор возьмет http://www.pobedit.com
 Прикрутит к нему дбф через что хочет Обеспечит многопользовательский режим И будет убийца 1с | |||
| 159
    
        Звездец 08.05.16✎ 21:49 | 
        (151) (152) а за сохранность данных в этом случае кто в ответе? и почему-то не пошла она в массы. Да и год назад стала бесплатной и разработка прекратилась     | |||
| 160
    
        Злопчинский 08.05.16✎ 21:49 | 
        (156)  на парус я смотреть не буду
 У меня к не у стойкое отвращение еще со времен появления седбмой версии одноэс | |||
| 161
    
        Emery 08.05.16✎ 21:51 | 
        (142) > и еще вопрос - есть что-то для dbf стандартное для защиты данных?
 Если критична безопасность используйте промышленные БД. А так защита только административная, не разрешать доступ к компьютеру с БД. То же самое обстоит в семерке. | |||
| 162
    
        Злопчинский 08.05.16✎ 21:51 | 
        (159)  на форуме вообщем достаточно отзывов об успешной работе     | |||
| 163
    
        Emery 08.05.16✎ 21:52 | 
        (143) > Автор предлагает засунуть БД целиком в RAM и не обращаться к диску совсем. 
 Не «засунуть», а спроецировать. Это абсолютно разные вещи. | |||
| 164
    
        Злопчинский 08.05.16✎ 21:56 | 
        (163)  мну похрен будет это спроецировано или засунуто. Мне как девелоперу - что дает?     | |||
| 165
    
        Звездец 08.05.16✎ 22:22 | 
        (163) "те не умничай, а пальцем покажи" (с)     | |||
| 166
    
        Garykom гуру 08.05.16✎ 22:30 | 
        (165) Если по простому то табличка из БД "спроецирована в память" и контрол (таблица/грид/форма списка) прямо по ней крутит ))
 Но нафуя это надо не понял все равно. Да быстро хоть лямы/лярды записей листать в гриде только нафуя? | |||
| 167
    
        Звездец 08.05.16✎ 22:31 | 
        (166) да это я знаю, я о том чтоб пальцем показан на..я оно нам надо     | |||
| 168
    
        Звездец 08.05.16✎ 22:34 | 
        (167) но судя по ответам автора, он и сам не знает для чего надо то "открытие", которое он нам тут преподнес     | |||
| 169
    
        Mikeware 08.05.16✎ 22:56 | 
        (123) в 7.7 доступ минуя 1с ничем не запрещен.
 (137) под сотню юзверей вполне комфортно работали с сиквельной базой без терминала. | |||
| 170
    
        Звездец 08.05.16✎ 23:04 | 
        (169) спорить не буду, может этот пункт только в 8 появился, но вопроса в (167) это не отменяет     | |||
| 171
    
        Emery 09.05.16✎ 19:26 | 
        (135) > вместо чегото зублолмного с дде - не проще было непосредственно в семерке юзать прямые запросы?
 Хороший вопрос. Этот путь предлагают все создатели внешних компонент и т.п. расширений. Но я вообще не вижу особого смысла гонять большие объемы данных через память по межпроцессному каналу. Не проще ли совместно использовать БД «семеркой» и VFP? По этому принципу работает моя «зарплата». А через DDE отправляются только параметры и вызовы глобальных функций 1С77 и Фокса. Правда, сейчас я бы не стал из VFP задействовать индексы, формируемые в «семерке». Пожалуй, Фокс должен создавать и использовать собственные индексы на разделяемой с 1С базой. Хотя базу можно делать и параллельной (тогда все клиенты «семерки» могут быть монопольными, аналогичная идея применима и к «восьмерке»). Это еще она концепция хранения и использования распределенных данных. Сам же VFP у меня работает, как внешнее приложение (ехе-шник сгенерированный в VFP). | |||
| 172
    
        Злопчинский 09.05.16✎ 19:32 | 
        (171)  нихрена не понял
 Опиши подробно и внятно в чем заключается "совместное использование бд 77 и vfp | |||
| 173
    
        Звездец 09.05.16✎ 19:38 | 
        (171) ну допустим совместное, ладно. Ты наконец-то можешь сказать на.р.на нам это надо и что хорошего это даст?     | |||
| 174
    
        Emery 09.05.16✎ 19:40 | 
        (168) > но судя по ответам автора, он и сам не знает для чего надо то "открытие", которое он нам тут преподнес
 Это не открытие, а известные технологии. Позволяют удобно осуществлять навигацию данных, когда их очень много. Вон стандартные примеры работы с БД в Qt сильно тормозят на подкачке данных при навигации даже относительно небольшого количества данных (несколько тысяч записей). Поэтому, чуть меняем концепцию и все летает. Смысл подобных техник в создании сверхлегких клиентов. В принципе, если добавить сюда построение индексов и сортировку (что относительно легко можно сделать без привлечения сторонних СУБД), то можно юзать данные в стиле «семерки»: быстрый поиск, отбор, какие-то несложные вычисления и выгрузка обработанных данных, хотя бы в тот же Эксель. А если добавить бесплатную СУБД (рантайм VFP, говорят, бесплатен) и правильно организовать межпроцессное взаимодействие, то индексацию и выборку данных можно делать средствами этой СУБД. Опять же, в отличие от того же (x)Harbour легкий клиент не только быстро создается, но при этом еще имеет малый вес и GUI. | |||
| 175
    
        Pixelrat 09.05.16✎ 19:42 | 
        (174) Только в Qt мы крутим целый view, а не табличку.     | |||
| 176
    
        Злопчинский 09.05.16✎ 19:43 | 
        (174)  нихрена опять не понял
 На данный момент, нам, девелоперам, что с этим вфп делать акромя прямых запросов? | |||
| 177
    
        Звездец 09.05.16✎ 19:44 | 
        (174) а теперь объясни мне, зачем я должен разбираться во всем этом анахронизме, придумывая какую бы библиотеку прикрутить, как бы там индекс извратить и тп, вместо того, что бы использовать удобный, современный и хорошо документированный инструмент (читать как СУБД)?     | |||
| 178
    
        Pistol 09.05.16✎ 20:21 | 
        (174) Мой юный друк. Сверхлегкие клиенты, которые заточены под быструю навигацию и чтение - нахрен не нужны никому, кроме как курсовикам и дипломникам.
 Как только ты добавишь в свое поделие добавление, изменение и удаление данных, и, прости Господи, транзанкции и логи отката, UDF, ты резко изменишь свое мнение о dbf. Пойди про sqlite, что-ли почитай. Или про nosql и in memory databases | |||
| 179
    
        Emery 09.05.16✎ 20:23 | 
        (172) > Опиши подробно и внятно в чем заключается "совместное использование бд 77 и vfp
 В моей конфигурации на «семерке»: 1. В справочнике ПервТабеля в группах Год / Месяц / Фирма вручную или полуавтоматически из системы учета рабочего времени вводятся табеля, рапорта, наряды, прочие документы в удобно структурированные группы. Непосредственно запись вноситься подчиненный справочник ПервТабель. Часть расчетов при этом осуществляется сразу, другая часть подлежит последующему расчету. 2. Есть обработка РасчетЗП. Она позволяет считать любую группу либо конкретного сотрудника. Эта обработка вызывает внешнее приложение, написанное на VFP. Вот строка вызова: ЗапуститьПриложение(КаталогПрограммы()+"LionUZP.exe "+q+СтрОтчДата+qq+КодГруппы+qq+СтрПризнГруппы+qq+PersId+qq+LgKatId+qq+КаталогИБ()+q); Это приложение подключается к БД «семерки» и ее индексам и начинает «колбасить» данные. При этом VFP инициализирует DDE-соединение с 1С, как DDE-сервером: PUBLIC gn_DDEChanNum && Номер DDE канала для обмена данными с "1С" gn_DDEChanNum = DDEINITIATE("1CV7", "DDE") При этом VFP запрашивает от 1С77 дополнительные данные, вроде: IF gn_DDEChanNum > -1 gs_FullDescr1C = ALLTRIM(DDEREQUEST(gn_DDEChanNum, "глПолнНаим")) gn_PlanDays1C = VAL(DDEREQUEST(gn_DDEChanNum, "глПланДней")) gn_PlanHours1C = VAL(DDEREQUEST(gn_DDEChanNum, "глПланЧасов")) && И т.д. и т.п. ELSE DO ErrorMessage WITH "Не могу открыть канал DDE для обмена данными!" IN Errors ENDIF Функции из 1С вызываются вроде: && Общая база индексации сотрудников предприятия PUBLIC gs_CommonIndexingBase gs_CommonIndexingBase = CTOD(Get1CConst("ОбщаяБазаИндексации", gs_NachOtchPer)) После расчета очередного сотрудника, его данные сбрасываются в справочник ВторТабеля, повторяющий отчасти структуру первичных табелей. Удобен тем, что соответствующую группу расчетов можно легко удалить, если расчет неверен и пересчитать все заново. Первичные данные при этом остаются без изменений. Кроме этого данные по конкретному сотруднику поступают в ТЗ, где мы можем наблюдать расчет в режиме реального времени. Расчет на одного человека в пределах нескольких секунд. Количество сотрудников порядка тысячи, база данных за 12 лет. Этот режим был создан для отладки, но он мне понравился и я его оставил без изменений. Также ведется полный протокол расчета во внешние текстовые файлы (по одному на каждого человека). После расчета, VFP обращается к DDE-серверу 1С77 обновить данные в ТЗ (для отладочных целей): = DDEREQUEST(gn_DDEChanNum, "глDDE("+ ; s_CurRec+","+ ; s_AllRecs+","+ ; s_No+","+ ; s_PodrPersId+","+ ; s_VidRaschId+","+ ; s_NachZachPer+","+ ; s_KonZachPer+","+ ; s_KoefVidaRasch+","+ ; s_Rate+","+ ; s_WorkDays+","+ ; s_HoursPerDay+","+ ; s_WorkHours+","+ ; s_FactVwrabotka+","+ ; s_PlanVwrabotka+","+ ; s_Summa+","+ ; s_PlanDays+","+ ; s_PlanHours+")") При этом те же данные уже присутствуют во вторичных табелях. 3. В сформированных данных в справочнике ВторТабеля можно уже строить отчеты и делать прочие необходимые процедуры, типа, проведение данных, формирование учета задолженности и выплат, формирование выгрузок для спецотчетов и т.д. и т.п. Это очень краткое изложение. | |||
| 180
    
        Pistol 09.05.16✎ 20:28 | 
        (179) Расчет зарплаты на справочниках, это сильно. Жму руку. Предлагаю считать план-факт отпусков на бухитогах.     | |||
| 181
    
        Emery 09.05.16✎ 20:31 | 
        (173) > ну допустим совместное, ладно. Ты наконец-то можешь сказать на.р.на нам это надо и что хорошего это даст?
 1. Используя легкого клиента на 1С77 в связке с VFP можно построить достаточно мощные и удобные конфигурации. 2. Для сверхлегких клиентов можно вообще обойтись без «семерки» и даже, при желании, без внешней СУБД, вроде VFP. Разве эти решения не интересны, чтобы их применять на своей работе? | |||
| 182
    
        b_ru 09.05.16✎ 20:31 | 
        >>Почему создана данная тема? Просто сейчас происходит забвение Visual FoxPro и многие вынуждены оставлять эту систему и переходить, кто на 1С, кто на MS Access или SQL Server. 
 Если б ты это лет десять назад написал, оно бы так и было. А в 2016 увидеть столько раз упомянутые слова dbf, vfp, dde(!) можно только в обзорных статьях по истории развития информационных систем и в этой теме. Автор, ты переплюнул всех мИстных мастодонтов. Признавайся, Царя живого видел? Если да, то дай автограф. | |||
| 183
    
        Злопчинский 09.05.16✎ 20:41 | 
        (179)  нихера не понял
 Имхается мне что с помощью прямых запросов то же самое можно и на клюшках посчитать примерно с тем же самым быстродействием Смысл этой твоей зп? | |||
| 184
    
        Злопчинский 09.05.16✎ 20:42 | 
        (181)  как девелопер не вижу пока никаких существенных преимуществ     | |||
| 185
    
        Pixelrat 09.05.16✎ 20:47 | 
        (181) Видел много клиентов разной сверхлёгкости, а чем бы данное ноухау в них пригодилось, не нахожу.     | |||
| 186
    
        Pistol 09.05.16✎ 20:47 | 
        http://emeryemerald.blogspot.ru
 Вопросов больше не имею... | |||
| 187
    
        Звездец 09.05.16✎ 20:48 | 
        (184) как, а дальнейшая поддержка данного велоипеда, от которого все другие 1с-ники будут шарахаться?     | |||
| 188
    
        Emery 09.05.16✎ 20:50 | 
        (175) > Только в Qt мы крутим целый view, а не табличку.
 Там все можно делать многими способами ( http://www.sql.ru/forum/actualfile.aspx?id=15291607 Файл dbf можно взять отсюда http://www.sql.ru/forum/actualfile.aspx?id=15291616 Если будете использовать бинарник, то подключите его к библиотекам Qt. Также у вас должен быть доступен объект "VisualFoxPro.Application.9"). | |||
| 189
    
        Emery 09.05.16✎ 20:55 | 
        (176) > На данный момент, нам, девелоперам, что с этим вфп делать акромя прямых запросов?
 Мне вообще трудно понять вашу логику. Если тема вас не цепляет, игнорируйте ее. Если интересна, думайте сами, где это можно использовать. Раз я вас должен уговаривать применять эту технику? Мне она интересна, я делюсь информацией, но я не преподаватель систем программирования. | |||
| 190
    
        Emery 09.05.16✎ 20:58 | 
        (175) > а теперь объясни мне, зачем я должен разбираться во всем этом анахронизме, придумывая какую бы библиотеку прикрутить, как бы там индекс извратить и тп, вместо того, что бы использовать удобный, современный и хорошо документированный инструмент (читать как СУБД)?
 Если неинтересно, то не должны. Используйте любой «удобный, современный и хорошо документированный инструмент», который вам нравиться и нам расскажите, какие вы видите в нем преимущества перед используемыми здесь. | |||
| 191
    
        Звездец 09.05.16✎ 20:59 | 
        (189) пока ты делишься только кучей ссылок на разные форумы. То что есть куча разных технологий я еще из института знаю. Ты мне кстати преподов напоминаешь, они примерно так же учили: смотрите есть такая штука, такая, и еще вот такая, а как это применять, для чего и тп думайте сами. 
 Приводи конкретные примеры, тот что выше как-то не самый удачный имхо. Тут и так человека 4 осталось в этой теме, кто хоть как-то пытается понять что ты тут такого преподнести пытаешься. | |||
| 192
    
        Звездец 09.05.16✎ 21:02 | 
        (190) изложенное здесь пока что для меня как каталог ссылок смежной направленности. Если я захочу написат нечто на том же Qt, то почему бы не заюзать тотже Postrage или FireBerd (который и файловым бывает кроме того)     | |||
| 193
    
        Emery 09.05.16✎ 21:04 | 
        (183) > Имхается мне что с помощью прямых запросов то же самое можно и на клюшках посчитать примерно с тем же самым быстродействием 
 Наверное, да, только работать с нормальной СУБД, в среде этой СУБД, на порядок удобнее. Прямые запросы хороши для индивидуальных запросов. У меня же их на порядок больше. > Смысл этой твоей зп? Мне не нравиться концепция существующих «зарплат». Сделал так, как мне удобно. Причем ее еще можно существенно оптимизировать. Но это вопрос времени и стимула. | |||
| 194
    
        Emery 09.05.16✎ 21:06 | 
        (184) > как девелопер не вижу пока никаких существенных преимуществ
 Вот и хорошо, появился хороший повод прекратить «допрос» : ) . | |||
| 195
    
        Emery 09.05.16✎ 21:08 | 
        (186) > http://emeryemerald.blogspot.ru 
 > Вопросов больше не имею... А что вас смущает? То, что любой русский разбирается во всех вещах на свете : ) ? | |||
| 196
    
        Emery 09.05.16✎ 21:12 | 
        (187) > как, а дальнейшая поддержка данного велоипеда, от которого все другие 1с-ники будут шарахаться?
 Система планируется бесплатной (после ее оптимизации и публикации). А, как известно, дареному коню в зубы не заглядывают. Будут открыты исходники, кто хочет, пусть сам сопровождает. Если появятся коммерческие предложения, «будем посмотреть». | |||
| 197
    
        Звездец 09.05.16✎ 21:14 | 
        (196) я имел ввиду в данном случае твою переписанную зарплату на семерке     | |||
| 198
    
        Pistol 09.05.16✎ 21:20 | 
        (195) Очень хорошо показыает уровень бардака в голове.
 Ну и отношение "если вам что-то надо, сделайте это сами", и тут же "расскажите, какие вы видите преимущества" и прочие "поделитесь ссылками" | |||
| 199
    
        Emery 09.05.16✎ 21:51 | 
        (191) > Тут и так человека 4 осталось в этой теме, кто хоть как-то пытается понять что ты тут такого преподнести пытаешься.
 Так может пора уже забить на тему? Я ведь пришел не с готовым продуктом, а всего лишь с одним соображением на конкретную идею. Ну да, VFP мне нравиться, dbf тоже, «семерку» тоже люблю. В «восьмерке» ценю только толстого клиента, Qt и WxWidgets также не оставляют равнодушным. Ваши предпочтения, естественно, другие. Если бы вы написали подобный топик, то я бы относился к его содержимому более нейтрально, даже если бы был не согласен с идеями авторов. Разве все должны мыслить одинаково? Это скорее исключение, чем правило. Я вот удивляюсь прямолинейным попыткам других доказать, что я не прав. Поверьте, это опыт, от которого просто так никто не откажется. Я уже писал здесь, что мой друг программист придерживается более радикальных взглядов, но это не мешает нам обсуждать нам общее, а не различия. В общем, предлагаю завершать тему. | |||
| 200
    
        Garykom гуру 09.05.16✎ 21:54 | 
        (199) > В «восьмерке» ценю только толстого клиента,
 Думаю дальше можно не слушать. | |||
| 201
    
        Djelf 09.05.16✎ 22:25 | 
        Конечно другие предпочтения... 
 Вот в sqlite Memory-Mapped I/O уже давно есть https://www.sqlite.org/mmap.html А к базе sqlite я могу присоединится из чего угодно, скоро с утюга уже смогу присоединятся! Зачем мне этот не понятный, не рабочий, но теоретически возможный костыль? | |||
| 202
    
        EvgeniuXP 09.05.16✎ 23:14 | 
        Я лучше скажу главный недостаток дбф файла: где гарантия что дбф выгружен нормально полностью? Т.е. выгрузка действительно дошла до самой последней строки?     | |||
| 203
    
        EvgeniuXP 09.05.16✎ 23:16 | 
        Хмл-е это дерево и там гарантия есть, в дбф-е - нет.     | |||
| 204
    
        Злопчинский 10.05.16✎ 00:46 | 
        (193) "Мне не нравиться концепция существующих «зарплат». Сделал так, как мне удобно."
 - мне как девелоперу - класть с большим хреном на то что тебе удобно. дай мне продукт, который "Я" смогу использовать. никто не отрицает что сделанное "как мне удобно" - имеет право на жизнь. только vfp скорее мертв чем жив. видимо потому - что МНЕ НУДОБНО. мне удобнее в 77. или в 8.3 | |||
| 205
    
        Злопчинский 10.05.16✎ 00:50 | 
        (196) Модераторы - перенесите в тему "Убийцы 1С"
 Пока никто декларировавших всяких "убивцев" и вкусностей - не готов отвечать за "базар". видать потому что силенок не хватает сделать ПРОДУКТ. хрен с ним. пусть он будет таким же простым как клюшки. и бесплатным. и сравнимым по функционалу. только пусть это будет ПРОДУКТ. а не набор плоскогубцев и гаечных ключей. пусть это будет ушастый запорожец. чтобы ездил. | |||
| 206
    
        Злопчинский 10.05.16✎ 00:51 | 
        (196) "Система планируется бесплатной (после ее оптимизации и публикации)."
 - ждем. с удовольствием посмотри и может быть попробуем. | |||
| 207
    
        Злопчинский 10.05.16✎ 00:53 | 
        (199) По предложению автора - ветка закрыта. Ждем публикации продукта. С учетом того. что нет даже роадмапа хотя бы какого-нибудь - нам дождаться продукта - не светит...     | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |