|
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) По предложению автора - ветка закрыта. Ждем публикации продукта. С учетом того. что нет даже роадмапа хотя бы какого-нибудь - нам дождаться продукта - не светит...
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |