Переключение на Главную Страницу Страницы: [1]  ОтправитьПечать
Очень популярная тема (более 25 ответов) 1C 7.7 DBF Клиент-сервер. Нужна помощь в тестировании. (число прочтений - 34485 )
Wirth
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 54
Зарегистрирован: 01. Марта 2010
1C 7.7 DBF Клиент-сервер. Нужна помощь в тестировании.
20. Июля 2010 :: 08:33
Печать  
Нужна помощь в тестировании Клиент-серверного решения для 1С:Предприятия 7.7 DBF
Написал его разбираясь с устройством dbeng32. Конечно сам потестил, но сами понимаете...
Разработка главным образом борется с падением скорости при подключении более одного пользователя. Блокировки не использует.
  
Наверх
www  
IP записан
 
Eprst
God Member
*****
Отсутствует



Сообщений: 3397
Зарегистрирован: 08. Октября 2007
Re: 1C 7.7 DBF Клиент-сервер. Нужна помощь в тестировании.
Ответ #1 - 20. Июля 2010 :: 08:52
Печать  
Ну, выкладывай решение, поглядим..
  
Наверх
 
IP записан
 
Wirth
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 54
Зарегистрирован: 01. Марта 2010
Re: 1C 7.7 DBF Клиент-сервер. Нужна помощь в тестировании.
Ответ #2 - 20. Июля 2010 :: 09:08
Печать  
Положил на свой сайт в каталог файлов. Не знаю можно здесь давать ссылки?
  
Наверх
www  
IP записан
 
slawa
Full Member
***
Отсутствует


I Love YaBB 2!

Сообщений: 125
Зарегистрирован: 05. Октября 2006
Re: 1C 7.7 DBF Клиент-сервер. Нужна помощь в тестировании.
Ответ #3 - 20. Июля 2010 :: 09:14
Печать  
Wirth писал(а) 20. Июля 2010 :: 08:33:
Блокировки не использует.


Описание есть ?
Что значит не использует блокировки ?
  
Наверх
 
IP записан
 
Wirth
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 54
Зарегистрирован: 01. Марта 2010
Re: 1C 7.7 DBF Клиент-сервер. Нужна помощь в тестировании.
Ответ #4 - 20. Июля 2010 :: 09:15
Печать  
Да еще, мне хочется верить, что решение будет условно-бесплатным. Ну на самом деле, как пойдет. Это я к тому, что если все-таки пойдет Улыбка , то предоставление бесплатных лицензий, дело само-собой разумеющееся.
Заранее спасибо!
  
Наверх
www  
IP записан
 
Wirth
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 54
Зарегистрирован: 01. Марта 2010
Re: 1C 7.7 DBF Клиент-сервер. Нужна помощь в тестировании.
Ответ #5 - 20. Июля 2010 :: 09:16
Печать  
Описание есть в дистрибьютиве.

Используется принцип не блокировок, а файловых транзакций.
  
Наверх
www  
IP записан
 
Wirth
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 54
Зарегистрирован: 01. Марта 2010
Re: 1C 7.7 DBF Клиент-сервер. Нужна помощь в тестировании.
Ответ #6 - 20. Июля 2010 :: 09:22
Печать  
Выдержки из описания:

Сервер Вирт:V7DBNet – создан специально для работы с 1С:Предприятием 7.7, для повышения производительности работы платформы в режиме DBF. Сервер переводит 1С:Предприятие из режима блокировок в режим транзакций, позволяя тем самым избежать  падения производительности 1С при подключении более чем одного пользователя («проблема второго пользователя»). При отсутствии блокировок, естественным образом, снимается ограничение размера файлов в 1Gb.  Файлы DBF не предоставляются в общий доступ, с ними работает только один сеанс – Сервер Вирт:V7DBNet, что позволяет не использовать специальных серверных операционных систем, а также снизить требования к «железу» сервера. Также тот факт, что файлы находятся на защищенной области диска, интересен с точки зрения политики безопасности организации. Для работы 1С:Предприятия 7.7 с сервером Вирт:V7DBNet, необходимо установить V7DBNet Клиент, в виде расширения платформы. (подробнее в документации клиента).


Как это  работает

Клиент перехватывает обращения к файлам DBF и CDX и передает запросы на сервер, сервер возвращает результат в виде кеш-страниц. Далее клиент работает с такой страницей без обращения к серверу, пока сервер не сообщит о потере  ее актуальности.
Иначе говоря, данные хранятся в оперативной памяти клиентов в виде кеш-страниц, а сервер их обслуживает по мере необходимости.
Запись, все еще происходит поочередно (эксперименты показали, что пока это самый надежный вариант, но в этом направлении еще можно работать). Клиент подает запрос серверу на запись, сервер добавляет его в очередь ожидания, если кто-то уже пишет данные, или сразу дает разрешение. Когда клиенту разрешена запись, он отправляет на сервер обновленные данные, при этом сервер создает транзакцию, отдельный сеанс, в котором тот кто пишет, видит изменения, а остальные нет, Иначе говоря, все остальные клиенты не блокируются. Когда клиент сообщает, что он завершает запись, и других измененных данных не будет, сервер отражает измененные данные в файлах и посылает клиентам уведомление об измененных кеш-страницах.
  
Наверх
www  
IP записан
 
slawa
Full Member
***
Отсутствует


I Love YaBB 2!

Сообщений: 125
Зарегистрирован: 05. Октября 2006
Re: 1C 7.7 DBF Клиент-сервер. Нужна помощь в тестировании.
Ответ #7 - 20. Июля 2010 :: 09:27
Печать  
Wirth писал(а) 20. Июля 2010 :: 09:16:
Описание есть в дистрибьютиве.

Используется принцип не блокировок, а файловых транзакций.


Спасибо. Понял.
Просто скачал, а описания нет.
Ставить все подряд в систему не хочется.
ЗЫ.
Про виртуалки знаю Улыбка
  
Наверх
 
IP записан
 
slawa
Full Member
***
Отсутствует


I Love YaBB 2!

Сообщений: 125
Зарегистрирован: 05. Октября 2006
Re: 1C 7.7 DBF Клиент-сервер. Нужна помощь в тестировании.
Ответ #8 - 20. Июля 2010 :: 09:41
Печать  
Wirth писал(а) 20. Июля 2010 :: 09:22:
... транзакцию, отдельный сеанс, в котором тот кто пишет, видит изменения, а остальные нет, Иначе говоря, все остальные клиенты не блокируются.
Очень интересно. Т.е. остаются в заблуждении?
Цитата:
Когда клиент сообщает, что он завершает запись, и других измененных данных не будет, сервер отражает измененные данные в файлах и посылает клиентам уведомление об измененных кеш-страницах.
и как на 1с-ке реализуется пересчет измененных данных ?
  
Наверх
 
IP записан
 
Wirth
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 54
Зарегистрирован: 01. Марта 2010
Re: 1C 7.7 DBF Клиент-сервер. Нужна помощь в тестировании.
Ответ #9 - 20. Июля 2010 :: 09:49
Печать  
1с опрашивает таблицы на вопрос изменений.
В данном варианте, она опрашивает всегда актуальный собственный кеш, за этим следит сервер. Пока запись не завершена, она не актуальна, и не интересна для тех кто не пишет.
1с перед тем как что-то писать, сообщает об этом (пытается установить виртуальную блокировку), я обрабатываю ее как событие. Запись происходит поочередно. Первый записал, сервер всем кеш актуализировал, далее второй и т.д.
Вроде все должно быть гладко. Но конечно надо протестировать в разных условиях, собственно поэтому и обращаюсь.
  
Наверх
www  
IP записан
 
Eprst
God Member
*****
Отсутствует



Сообщений: 3397
Зарегистрирован: 08. Октября 2007
Re: 1C 7.7 DBF Клиент-сервер. Нужна помощь в тестировании.
Ответ #10 - 20. Июля 2010 :: 09:50
Печать  
Установил, как узнать, что ЭТО работает ?..
А всё, не надо.. нашел описалово..
  
Наверх
 
IP записан
 
Wirth
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 54
Зарегистрирован: 01. Марта 2010
Re: 1C 7.7 DBF Клиент-сервер. Нужна помощь в тестировании.
Ответ #11 - 20. Июля 2010 :: 09:53
Печать  
в документации на сервер есть пример пошаговый с "картинками"
  
Наверх
www  
IP записан
 
slawa
Full Member
***
Отсутствует


I Love YaBB 2!

Сообщений: 125
Зарегистрирован: 05. Октября 2006
Re: 1C 7.7 DBF Клиент-сервер. Нужна помощь в тестировании.
Ответ #12 - 20. Июля 2010 :: 10:03
Печать  
Wirth писал(а) 20. Июля 2010 :: 09:49:
1с опрашивает таблицы на вопрос изменений.
В данном варианте, она опрашивает всегда актуальный собственный кеш, за этим следит сервер. Пока запись не завершена, она не актуальна, и не интересна для тех кто не пишет.
1с перед тем как что-то писать, сообщает об этом (пытается установить виртуальную блокировку), я обрабатываю ее как событие. Запись происходит поочередно. Первый записал, сервер всем кеш актуализировал, далее второй и т.д.
Вроде все должно быть гладко. Но конечно надо протестировать в разных условиях, собственно поэтому и обращаюсь.

давайте на пальцах:
1. Есть справочник из 5-ти элементов у которых есть числовой реквизит.
2. Первый клиент начал увеличивать (в 1с-ной транзакции) значения числовых реквизитов на 1.
3. После изменения первого элемента, второй клиент начал увеличивать (так-же в транзакции) значение числовых, этих-же, реквизитов в два раза.
4. Что будет в результате завершения обоих транзакций ?
  
Наверх
 
IP записан
 
Wirth
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 54
Зарегистрирован: 01. Марта 2010
Re: 1C 7.7 DBF Клиент-сервер. Нужна помощь в тестировании.
Ответ #13 - 20. Июля 2010 :: 10:03
Печать  
На всякий случай все же приведу выдержки из документации.

Пример переноса базы 1С на сервер Вирт:V7DBNet

Кратко:

1. Установите сервер.

2. Определите где будут располагаться базы данных, и пропишите этот путь в файл
настройки сервера dbnets.ini, fold=путь. Файл доступен из меню «Настройка
сервера».

3. Запустите сервер, убедитесь, что порт разрешен вашей системой безопасности
компьютера, например, открыв Web-интерфейс сервера с компьютера клиента.

4. Установите клиент в платформу 1С:Предприятия 7.7.

5. Создайте каталог имени базы по указанному пути, например: «Бухгалтерия»,
переместите в него файлы DBF и CDX из базы данных 1С.

6. Создайте в каталоге базы данных 1С файл dbnet.ini с параметрами fold=
Бухгалтерия, host=ip или имя сервера

Подробно:

Предположим - у нас есть сервер «serv-1c», с размещенной на нем базой 1С и
административная установка 1С:Предприятие 7.7 в виде ресурса с общим доступом
«D:\1C». И несколько клиентов.


serv-1c:
D:
|-----[ 1C ] - общий ресурс
|-----[ 1Cv77.ADM ] – платформа 1С:Предприятие 7.7
| |-----[ bin ]
| |-----[ Бухгалтерия ]


база данных бухгалтерии организации
|-----[ ExtForms ]
|-----[ Userdef ]
|-----[ ... ]
|-----< 1Cv7.MD >
|-----< 1Cv7.DD >
|-----< ... >
|-----< *.DBF >
|-----< *.CDX >


Предположим, что место для размещения баз сервера Вирт:V7DBNet, мы определили как
D:\V7DBNet\

И так:

1. Установим сервер

2. Откроем файл настроек сервера dbnets.ini через пункт меню «Настройка сервера»
установленной программы «Вирт V7DBNet Сервер»
dbnets.ini
-------------------------------------------------------------
;fold=d:\base
user=Admin
pass=123
-------------------------------------------------------------

3. Включим параметр fold, убрав точку с запятой, и укажем в качестве значения
необходимый нам путь D:\V7DBNet\

dbnets.ini
-------------------------------------------------------------
fold= D:\V7DBNet
user=Admin
pass=123
-------------------------------------------------------------

4. Сохраним файл

5. Запустим сервер как приложение «Сервер как приложение - Запуск» или как сервис
«Сервер как служба - Установка»

6. Для того чтобы убедиться что порт разрешен (ни кем не занят и не заблокирован
системой защиты компьютера) попробуем войти в Web-интерфейс сервера с
компьютера клиента. Запустим на клиенте браузер и в адресной строке укажем:
http://serv-1c:13387/
Если все нормально, браузер предложит указать имя пользователя и пароль на
доступ. Пользователь = Admin, пароль = 123

7. Создадим каталог для размещения баз - V7DBNet, на диске D: сервера.

8. Создадим в нем каталог нашей базы, пусть он будет называться также, как и
исходная база – «Бухгалтерия», хотя названия могут не совпадать.

9. Переместим в каталог базы сервера «D:\V7DBNet\Бухгалтерия\» файлы *.DBF и
*.CDX из каталога базы 1С «D:\1C\Бухгалтерия\»

10. В каталоге базы 1С «D:\1C\Бухгалтерия\» создадим файл dbnet.ini с необходимыми
параметрами:

D\1C\Бухгалтерия\dbnet.ini
-------------------------------------------------------------
host=serv-1c
fold=Бухгалтерия
szcache=15Mb
-------------------------------------------------------------

В итоге имеем:

serv-1c:
D:
|-----[ V7DBNet ]
| |-----[ Бухгалтерия ] – имя базы сервера
| |-----< *.DBF >
| |-----< *.CDX >
|
|-----[ 1C ] - общий ресурс
|-----[ 1Cv77.ADM ]
| |-----[ bin ]
| |-----[ Бухгалтерия ]

база данных бухгалтерии организации
|-----[ ExtForms ]
|-----[ Userdef ]
|-----[ ... ]
|-----< 1Cv7.MD >
|-----< 1Cv7.DD >
|-----< ... >
|-----< dbnet.ini >


11. Установим Вирт: V7DBNet Клиент (в данном случае на сервер, т.к. файлы
платформы 1С:Предприятие 7.7 находятся на нем, в случае, если платформа
установлена на каждом клиенте отдельно, пункты 11-12 выполнить на каждом
клиенте )

12. Инсталлируем компонент в каталог платформы “D:\1C\1Cv77.ADM\Bin\”

Для отмены переноса базы не сервер, переместите файлы DBF и CDX обратно в каталог
базы данных 1С, и удалите из него файл dbnet.ini
  
Наверх
www  
IP записан
 
Wirth
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 54
Зарегистрирован: 01. Марта 2010
Re: 1C 7.7 DBF Клиент-сервер. Нужна помощь в тестировании.
Ответ #14 - 20. Июля 2010 :: 10:13
Печать  
slawa писал(а) 20. Июля 2010 :: 10:03:
давайте на пальцах:
1. Есть справочник из 5-ти элементов у которых есть числовой реквизит.
2. Первый клиент начал увеличивать (в 1с-ной транзакции) значения числовых реквизитов на 1.
3. После изменения первого элемента, второй клиент начал увеличивать (так-же в транзакции) значение числовых, этих-же, реквизитов в два раза.
4. Что будет в результате завершения обоих транзакций ?


Я не создаю параллельные транзакции на запись. Запись происходит по очереди (пока по крайней мере).
И на всякий случай эмуллирую блокировку объекта, чтобы к примеру не могли открыть один документ два пользователя.
Хотя пробовал и без нее - работает нормально, но сохраняется последний записанный вариант. (может потом в настройки выведу включение такого режима. Пока я в нем не уверен).

  
Наверх
www  
IP записан
 
Wirth
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 54
Зарегистрирован: 01. Марта 2010
Re: 1C 7.7 DBF Клиент-сервер. Нужна помощь в тестировании.
Ответ #15 - 20. Июля 2010 :: 10:19
Печать  
На всякий случай повторюсь, я не уверен что все работает, собственно поэтому и прошу помощи в тестировании.
И хотя я провел очень много ночей с отладчиком в обнимку, все равно 1С может подкинуть какую-нибудь неожиданность.

А пример с приращиванием единицы мне кажется довольно интересным, попробую обязательно.
  
Наверх
www  
IP записан
 
Wirth
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 54
Зарегистрирован: 01. Марта 2010
Re: 1C 7.7 DBF Клиент-сервер. Нужна помощь в тестировании.
Ответ #16 - 20. Июля 2010 :: 10:46
Печать  
попробовал пример с приращиванием. при одновременном обращении к элементу обработка прерывается с сообщением "Объект заблокирован". И в стандартном случае и при работе с сервером. Думаю для сервера решу эту проблему, внесу некоторое ожидание в случае если объект не доступен. Сейчас попробую.
  
Наверх
www  
IP записан
 
vandalsvq
1c++ power user
Отсутствует


Я всего лишь als-особиратель
;-)

Сообщений: 2487
Местоположение: Уфа
Зарегистрирован: 18. Июля 2007
Пол: Мужской
Re: 1C 7.7 DBF Клиент-сервер. Нужна помощь в тестировании.
Ответ #17 - 20. Июля 2010 :: 12:21
Печать  
Попробую в выходные поставить и потестить Улыбка. Интересно что получится. Что да как отпишусь.
  

Отхожу от дел. Долго и мучительно.
Наверх
IP записан
 
orefkov
1c++ developer
1c++ moderator
Отсутствует


I Love YaBB 2!

Сообщений: 896
Зарегистрирован: 20. Мая 2006
Re: 1C 7.7 DBF Клиент-сервер. Нужна помощь в тестировании.
Ответ #18 - 20. Июля 2010 :: 18:59
Печать  
Прикольно, судя по описанию получается нечто похожее на версионные БД, типа постгри и оракла (и sqlite с 3.7.0)
Работы hogik'а на инфостарте смотрел?
ЗЫ: я так думаю, что 1sqlite без допиливания не заработает...
  
Наверх
 
IP записан
 
vandalsvq
1c++ power user
Отсутствует


Я всего лишь als-особиратель
;-)

Сообщений: 2487
Местоположение: Уфа
Зарегистрирован: 18. Июля 2007
Пол: Мужской
Re: 1C 7.7 DBF Клиент-сервер. Нужна помощь в тестировании.
Ответ #19 - 20. Июля 2010 :: 20:12
Печать  
orefkov писал(а) 20. Июля 2010 :: 18:59:
ЗЫ: я так думаю, что 1sqlite без допиливания не заработает...

Но если будет "движение" в теме, можно рассчитывать на твой отклик в плане развития 1sqlite? Улыбка
  

Отхожу от дел. Долго и мучительно.
Наверх
IP записан
 
Donat
Full Member
***
Отсутствует


I Love YaBB 2!

Сообщений: 152
Зарегистрирован: 29. Мая 2006
Re: 1C 7.7 DBF Клиент-сервер. Нужна помощь в тестировании.
Ответ #20 - 21. Июля 2010 :: 06:03
Печать  
Да, хочу тоже на выходных потестировать, а так у меня уже есть на примете место где это можно было-бы применить в боевых условиях.
Но 1SQLite, был-бы здесь не лишним.
  
Наверх
 
IP записан
 
Wirth
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 54
Зарегистрирован: 01. Марта 2010
Re: 1C 7.7 DBF Клиент-сервер. Нужна помощь в тестировании.
Ответ #21 - 22. Июля 2010 :: 09:22
Печать  
orefkov: Видел CodeBase, что и натолкнуло на мысль.

---

Хотел победить конкурирующую запись, но видно не получится.

Использую пример - наращивание значения элемента справочника в цикле, причем, элемент в справочнике единственный (чтобы не заморачиваться с одновременным запуском обработки)

1С действует следующим образом:


блокирует таблицу
выбирает элемент
разблокирует таблицу
...работаем с элементом


далее если необходимо записать результат:

вновь выбирает элемент, но без блокировки
сравнивает с начальной выборкой

если они одинаковы:
блокирует элемент
блокирует изменяемые таблицы
вновь выбирает элемент
сравнивает с начальной выборкой

если они одинаковы - записывает
снимает блокировку с элемента и таблиц

В итоге получается, что в начале мы не знаем, будет записан элемент или нет, и если блокировать как 1С, то возникнут блокировки на чтение (а последовательное чтение, это как раз с чем борюсь).

Можно применять ручное объявление транзакции в узких местах. Только по этому поводу выяснился один нюанс. Транзакцию нужно начинать не в рамках доступа к элементу, а перед выборкой списка элементов ( ВыбратьЭлементы() ). Т.к. первый элемент списка, 1С сразу читает и второй раз не перечитывает (при ПолучитьЭлемент()). Т.ч. при использовании транзакции поэлементно, может возникнуть исключительная ситуация (объект заблокирован) при одновременном обращении к первому в списке.

Но очень хочется победить конкурирующую запись не потеряв в скорости доступа на чтение. Буду думать...





  
Наверх
www  
IP записан
 
Wirth
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 54
Зарегистрирован: 01. Марта 2010
Re: 1C 7.7 DBF Клиент-сервер. Нужна помощь в тестировании.
Ответ #22 - 27. Июля 2010 :: 06:12
Печать  
Надо сказать, что конечно не было цели делать аналог CodeBase. Просто увидел что базу можно оторвать от 1с, а первоначальная цель была - шифрование dbf. Но в процессе работы как-то шифрование отошло на второй план.
Попробовал кто-нибудь? Работает?
А то я уже сервер почти полностью переделал. Добавил блокировки записей (все лучше чем блокировки таблиц). Пример с записью справочника в цикле с двух клиентов работает на ура, а стандартная 1с с ним не справляется.
Протестирую и наверное к концу недели выложу эту версию.
  
Наверх
www  
IP записан
 
vandalsvq
1c++ power user
Отсутствует


Я всего лишь als-особиратель
;-)

Сообщений: 2487
Местоположение: Уфа
Зарегистрирован: 18. Июля 2007
Пол: Мужской
Re: 1C 7.7 DBF Клиент-сервер. Нужна помощь в тестировании.
Ответ #23 - 27. Июля 2010 :: 08:36
Печать  
Попробуй протестировать работу 1sqlite и с Александром если надо решить чтобы она работала, вот тогда будет "молоток".
  

Отхожу от дел. Долго и мучительно.
Наверх
IP записан
 
Wirth
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 54
Зарегистрирован: 01. Марта 2010
Re: 1C 7.7 DBF Клиент-сервер. Нужна помощь в тестировании.
Ответ #24 - 27. Июля 2010 :: 16:20
Печать  
А почему думаешь работать не будет? Вроде работает, по крайней мере пример с поиском контрагента пробовал.
  
Наверх
www  
IP записан
 
orefkov
1c++ developer
1c++ moderator
Отсутствует


I Love YaBB 2!

Сообщений: 896
Зарегистрирован: 20. Мая 2006
Re: 1C 7.7 DBF Клиент-сервер. Нужна помощь в тестировании.
Ответ #25 - 27. Июля 2010 :: 18:19
Печать  
Wirth писал(а) 27. Июля 2010 :: 16:20:
А почему думаешь работать не будет? Вроде работает, по крайней мере пример с поиском контрагента пробовал.

Ну, проблемы были как-раз с разработкой CodeBase.
Дело в том, что в штатном движке 1С с каждой таблицей связан "буфер записи" (запись в смысле record, не write), те при передвижении по таблице данные текущей записи из файла копируются в этот буфер. Для получения значения полей из записи и их изменения в dbeng32.dll существует набор методов Fx_xxx (FX_String, FX_Numeric и тп). Сама 1С работает только через эти методы.
Ну а 1sqlite при работе с 1Сными дбфками не пользуется этими методами, а сразу читает значения полей из этого буфера, напрямую. В разработке CodeBase поменялась внутренняя логика работы с записями, и этот буфер при передвижении по таблице не заполняется. Hogik просто реализовал свои варианты методов FX_xxx, которые возвращают значения полей, но 1sqlite ими не пользуется.
Тут надо либо переделывать 1sqlite на работу с полями через FX_xxx, либо переделывать CodeBase, чтобы заполнялся буфер записи.
Если у тебя работа с буфером записи не изменена, то 1sqlite скорее всего будет работать.
  
Наверх
 
IP записан
 
Wirth
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 54
Зарегистрирован: 01. Марта 2010
Re: 1C 7.7 DBF Клиент-сервер. Нужна помощь в тестировании.
Ответ #26 - 27. Июля 2010 :: 20:01
Печать  
Логику работы 1с не нарушал. Мой подход скорее похож на rootkit.
  
Наверх
www  
IP записан
 
Wirth
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 54
Зарегистрирован: 01. Марта 2010
Re: 1C 7.7 DBF Клиент-сервер. Нужна помощь в тестировании.
Ответ #27 - 02. Августа 2010 :: 07:40
Печать  
Идеологически зашел в тупик. Нужен совет, а то сам не могу выбрать путь развития разработки.
В общем во-первых. Реализовал два режима работы сервера: - максимальная работа с кешем, соответственно самый быстрый на чтение ; - блокировки записей, нормальная работы с конкурирующей записью (пессимистический режим транзакции).
С одной стороны хочется быстро строить отчеты, с другой стороны хочется чтобы писал без сообщений "объект заблокирован".
Думаю сделать так:
сервер работает в неком среднем режиме, при котором блокировки декларируются, но не используются. И сделать два метода: DirectRead и SafeWrite, к примеру, которые будут временно переводить сервер в режимы быстрого чтения и безопасной записи?
И вторая мысль. Тут начал разбираться с программой Visual FoxPro (как наиболее прямого средства работы с DBF CDX), короче можно интегрировать часть Fox-а  в сервер. Fox поддерживает SQL, но надо думаю, посредством информации в DD переводить наименования объектов в имена таблиц, для удобства. И еще есть поддержка процедур, можно по идее сделать интерфейс исполнения "хранимых процедур" непосредственно на сервере.
Стоит морочиться?
  
Наверх
www  
IP записан
 
Wirth
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 54
Зарегистрирован: 01. Марта 2010
Re: 1C 7.7 DBF Клиент-сервер. Нужна помощь в тестировании.
Ответ #28 - 02. Августа 2010 :: 16:32
Печать  
Обновил файл на сайте. Версия  с возможностью переключения режимов транзакций.
  
Наверх
www  
IP записан
 
Wirth
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 54
Зарегистрирован: 01. Марта 2010
Re: 1C 7.7 DBF Клиент-сервер. Нужна помощь в тестировании.
Ответ #29 - 02. Августа 2010 :: 20:30
Печать  
По-поводу FoxPro. Все же это велосипед. Пожалуй переписывать "Прямые запросы" смысла нет. Если только действительно разобраться с блокировками и индексами, да так чтобы еще и триггеры работали. но это как-то пока не реально для меня. Времени много займет.
  
Наверх
www  
IP записан
 
vandalsvq
1c++ power user
Отсутствует


Я всего лишь als-особиратель
;-)

Сообщений: 2487
Местоположение: Уфа
Зарегистрирован: 18. Июля 2007
Пол: Мужской
Re: 1C 7.7 DBF Клиент-сервер. Нужна помощь в тестировании.
Ответ #30 - 02. Августа 2010 :: 20:57
Печать  
А чем 1sqlite не устраивает? Работает достаточно быстро. Уступает конечно Fox-у в некоторых моментах, но в целом я думаю скорости достаточно. Ну и наличие поставщика данных для ТП тоже очень гуд.
  

Отхожу от дел. Долго и мучительно.
Наверх
IP записан
 
Wirth
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 54
Зарегистрирован: 01. Марта 2010
Re: 1C 7.7 DBF Клиент-сервер. Нужна помощь в тестировании.
Ответ #31 - 02. Августа 2010 :: 21:13
Печать  
Устраивает, только я так понял что вначале необходимо создать виртуальную таблицу в памяти. А если это журнал документов ~1Gb?
  
Наверх
www  
IP записан
 
Wirth
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 54
Зарегистрирован: 01. Марта 2010
Re: 1C 7.7 DBF Клиент-сервер. Нужна помощь в тестировании.
Ответ #32 - 22. Октября 2010 :: 08:34
Печать  
Вышла в свет вторая версия сервера V7DBNet

Исправлены все глюки первой версии, даже ни так. Сервер был переписан с нуля, учитывая накопившийся опыт.

По предварительной оценке, вторая версия гораздо быстрее первой. И раз в 12 быстрее стандартной платформы 1С в сетевом многопользовательском режиме Улыбка  

Большое спасибо Владимиру Ходакову за помощь в тестировании!
  
Наверх
www  
IP записан
 
simply
God Member
*****
Отсутствует


Мечта: избавиться от 1С

Сообщений: 573
Местоположение: Киев
Зарегистрирован: 31. Декабря 2008
Пол: Мужской
Re: 1C 7.7 DBF Клиент-сервер. Нужна помощь в тестировании.
Ответ #33 - 22. Октября 2010 :: 08:40
Печать  
Wirth писал(а) 22. Октября 2010 :: 08:34:
Вышла в свет вторая версия сервера V7DBNet

Исправлены все глюки первой версии, даже ни так. Сервер был переписан с нуля, учитывая накопившийся опыт.

По предварительной оценке, вторая версия гораздо быстрее первой. И раз в 12 быстрее стандартной платформы 1С в сетевом многопользовательском режиме Улыбка  

Большое спасибо Владимиру Ходакову за помощь в тестировании!


Очень интересно!
Где взять?
  
Наверх
IP записан
 
Wirth
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 54
Зарегистрирован: 01. Марта 2010
Re: 1C 7.7 DBF Клиент-сервер. Нужна помощь в тестировании.
Ответ #34 - 22. Октября 2010 :: 09:18
Печать  
на моем сайте
звучит как-то не скромно... Улыбка
  
Наверх
www  
IP записан
 
simply
God Member
*****
Отсутствует


Мечта: избавиться от 1С

Сообщений: 573
Местоположение: Киев
Зарегистрирован: 31. Декабря 2008
Пол: Мужской
Re: 1C 7.7 DBF Клиент-сервер. Нужна помощь в тестировании.
Ответ #35 - 22. Октября 2010 :: 09:24
Печать  
Wirth писал(а) 22. Октября 2010 :: 09:18:
на моем сайте
звучит как-то не скромно... Улыбка

Ссылку в студию, плз!
  
Наверх
IP записан
 
slawa
Full Member
***
Отсутствует


I Love YaBB 2!

Сообщений: 125
Зарегистрирован: 05. Октября 2006
Re: 1C 7.7 DBF Клиент-сервер. Нужна помощь в тестировании.
Ответ #36 - 22. Октября 2010 :: 09:25
Печать  
  
Наверх
 
IP записан
 
simply
God Member
*****
Отсутствует


Мечта: избавиться от 1С

Сообщений: 573
Местоположение: Киев
Зарегистрирован: 31. Декабря 2008
Пол: Мужской
Re: 1C 7.7 DBF Клиент-сервер. Нужна помощь в тестировании.
Ответ #37 - 22. Октября 2010 :: 09:31
Печать  
Очень очень интересно!
Читаю описание - мой вариант!

Интересно, а как обстоять дела с проблемой нарушения индексов?
  
Наверх
IP записан
 
Wirth
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 54
Зарегистрирован: 01. Марта 2010
Re: 1C 7.7 DBF Клиент-сервер. Нужна помощь в тестировании.
Ответ #38 - 22. Октября 2010 :: 09:41
Печать  
Проблемы нарушения индексов по идеи быть не должно. А вот предлагать переиндексацию может конечно. Дело в том, что при начальном входе и выходе, в таблицу 1susers пишется количество подключений. И как правило, в организации, программу запускают почти одновременно и закрывают одновременно, по окончанию рабочего дня. 1С так устроен что счетчик пользователей наращивает без блокирования таблицы. Поэтому при массовом входе/выходе он может сбиться. Но так работает и стандартная 1С, я принцип не нарушал. Пока в этом проблемы не вижу большой. А сами индексы рушиться не должны, если только сервер не выключить в момент записи на диск.
  
Наверх
www  
IP записан
 
simply
God Member
*****
Отсутствует


Мечта: избавиться от 1С

Сообщений: 573
Местоположение: Киев
Зарегистрирован: 31. Декабря 2008
Пол: Мужской
Re: 1C 7.7 DBF Клиент-сервер. Нужна помощь в тестировании.
Ответ #39 - 22. Октября 2010 :: 09:45
Печать  
Это радует.
А есть возможность изменить ограничение регистрации не по количеству, а по периоду?
Как раз там, где это интересно потестить - больше 3-х компьютеров.
  
Наверх
IP записан
 
Wirth
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 54
Зарегистрирован: 01. Марта 2010
Re: 1C 7.7 DBF Клиент-сервер. Нужна помощь в тестировании.
Ответ #40 - 22. Октября 2010 :: 09:55
Печать  
Я мог бы вобще отключить предложение на реиндексацию. Но реиндексация полезна - уменьшает размер индексов.
В общем если будет доставать вопрос о индексации, добавлю параметр в настройки клиента, который ее будет отключать.

Ограничение переделать не получится, изначально глубоко зашито.
Но как вариант, могу предоставить Вам лицензию, в обмен на отчет о тестировании?
  
Наверх
www  
IP записан
 
simply
God Member
*****
Отсутствует


Мечта: избавиться от 1С

Сообщений: 573
Местоположение: Киев
Зарегистрирован: 31. Декабря 2008
Пол: Мужской
Re: 1C 7.7 DBF Клиент-сервер. Нужна помощь в тестировании.
Ответ #41 - 22. Октября 2010 :: 10:03
Печать  
Wirth писал(а) 22. Октября 2010 :: 09:55:
Я мог бы вобще отключить предложение на реиндексацию. Но реиндексация полезна - уменьшает размер индексов.
В общем если будет доставать вопрос о индексации, добавлю параметр в настройки клиента, который ее будет отключать.

Переиндексация полезна! Не надо ее отключать.

Wirth писал(а) 22. Октября 2010 :: 09:55:
Ограничение переделать не получится, изначально глубоко зашито.
Но как вариант, могу предоставить Вам лицензию, в обмен на отчет о тестировании?

Большое спасибо!
Но сначала хочу изучить всю документацию.
Кстати, не нашел на Вашем сайте условия регистрации, в т.ч. финансовые.
Пошел регистрироваться у Вас на формуе Улыбка
  
Наверх
IP записан
 
Wirth
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 54
Зарегистрирован: 01. Марта 2010
Re: 1C 7.7 DBF Клиент-сервер. Нужна помощь в тестировании.
Ответ #42 - 22. Октября 2010 :: 10:11
Печать  
Условия и порядок регистрации описан в документе "Регистрация" пункт меню установленного сервера.
Думаю стоимость регистрации Вас улыбнет Подмигивание
Не ради денег этот проект. Но и за даром нельзя, как с котятами.
  
Наверх
www  
IP записан
 
simply
God Member
*****
Отсутствует


Мечта: избавиться от 1С

Сообщений: 573
Местоположение: Киев
Зарегистрирован: 31. Декабря 2008
Пол: Мужской
Re: 1C 7.7 DBF Клиент-сервер. Нужна помощь в тестировании.
Ответ #43 - 22. Октября 2010 :: 10:58
Печать  
Wirth писал(а) 02. Августа 2010 :: 21:13:
Устраивает, только я так понял что вначале необходимо создать виртуальную таблицу в памяти. А если это журнал документов ~1Gb?

Я правильно понял, если у меня регистр движения товара занимает почти 1Гб, то мне 1sqlite не подходит?
А V7DBNet - то, что доктор прописал? Улыбка
  
Наверх
IP записан
 
Wirth
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 54
Зарегистрирован: 01. Марта 2010
Re: 1C 7.7 DBF Клиент-сервер. Нужна помощь в тестировании.
Ответ #44 - 22. Октября 2010 :: 11:08
Печать  
Вы попробуйте, очень интересны сравнения работы различных систем.
Кстати  V7DBNet  не исключает использование поверх нее 1sqlite, если в этом есть смысл.

Просто я так понимаю, сам 1sqlite не пользовался, что она кеширует на клиенте таблицу полностью. Вот я вопрос тогда и задал, что случится если таблица большая, но ответа не было.
  
Наверх
www  
IP записан
 
Wirth
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 54
Зарегистрирован: 01. Марта 2010
Re: 1C 7.7 DBF Клиент-сервер. Нужна помощь в тестировании.
Ответ #45 - 22. Октября 2010 :: 11:14
Печать  
simply писал(а) 22. Октября 2010 :: 10:58:
... если у меня регистр движения товара занимает почти 1Гб...

На всякий случай отмечу один момент, если Вы используете vk или патч для решения проблемы 1Гб, то при использовании V7DBNet обязательно уберите его из платформы, а то подерутся Улыбка

И еще V7DBNet тестировался на 25 и 27 релизе платформы.
  
Наверх
www  
IP записан
 
simply
God Member
*****
Отсутствует


Мечта: избавиться от 1С

Сообщений: 573
Местоположение: Киев
Зарегистрирован: 31. Декабря 2008
Пол: Мужской
Re: 1C 7.7 DBF Клиент-сервер. Нужна помощь в тестировании.
Ответ #46 - 22. Октября 2010 :: 11:30
Печать  
Wirth писал(а) 22. Октября 2010 :: 11:14:
simply писал(а) 22. Октября 2010 :: 10:58:
... если у меня регистр движения товара занимает почти 1Гб...

На всякий случай отмечу один момент, если Вы используете vk или патч для решения проблемы 1Гб, то при использовании V7DBNet обязательно уберите его из платформы, а то подерутся Улыбка

И еще V7DBNet тестировался на 25 и 27 релизе платформы.

Ничего не использую. Проблема пока проявляется только в ужасной скорости отчетов.
Релиз 27.
  
Наверх
IP записан
 
orefkov
1c++ developer
1c++ moderator
Отсутствует


I Love YaBB 2!

Сообщений: 896
Зарегистрирован: 20. Мая 2006
Re: 1C 7.7 DBF Клиент-сервер. Нужна помощь в тестировании.
Ответ #47 - 25. Октября 2010 :: 05:17
Печать  
simply писал(а) 22. Октября 2010 :: 10:58:
Wirth писал(а) 02. Августа 2010 :: 21:13:
Устраивает, только я так понял что вначале необходимо создать виртуальную таблицу в памяти. А если это журнал документов ~1Gb?

Я правильно понял, если у меня регистр движения товара занимает почти 1Гб, то мне 1sqlite не подходит?
А V7DBNet - то, что доктор прописал? Улыбка

Одно не исключает другого.
Это просто совершенно разные вещи.
1sqlite - просто предоставляет возможность делать SQL-запросы, которые "унутре" реализуются родными методами 1С по работе с файлами данных. Те она НАДСТРОЙКА над db-движком 1С.
V7DBNet - меняет сам db-движок 1С. А надстройка продолжает работать и на новом движке.

ЗЫ: Создание виртуальной таблицы в 1sqlite отнюдь не означает физическое перекачивание данных из таблицы 1С куда-либо.
На то она и виртуальная таблица. Когда запросу понадобятся данные из виртуальной таблицы, 1sqlite будет читать их непосредственно из таблицы 1С.
  
Наверх
 
IP записан
 
Wirth
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 54
Зарегистрирован: 01. Марта 2010
Re: 1C 7.7 DBF Клиент-сервер. Нужна помощь в тестировании.
Ответ #48 - 25. Октября 2010 :: 05:35
Печать  
Цитата:
Создание виртуальной таблицы в 1sqlite отнюдь не означает физическое перекачивание данных из таблицы 1С куда-либо.
На то она и виртуальная таблица. Когда запросу понадобятся данные из виртуальной таблицы, 1sqlite будет читать их непосредственно из таблицы 1С.

Так это здорово! Иными словами, если я правильно понял, 1sqlite будет использовать кэш V7DBNet. Тогда, по идеи, обе разработки отлично дополняют друг-друга.
  
Наверх
www  
IP записан
 
Wirth
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 54
Зарегистрирован: 01. Марта 2010
Re: 1C 7.7 DBF Клиент-сервер. Нужна помощь в тестировании.
Ответ #49 - 25. Октября 2010 :: 06:18
Печать  
Вечером хочу попробовать потестить на скорость совместного использования 1sqlite и V7DBNet. Подскажите как переписать такой пример под 1sqlite?

     Рег=СоздатьОбъект("Справочник.Тест");
     Ном=0;
     Кол=0;

     Если _DirectRead=1 Тогда                  
           V7DBNet.DirectRead();
     КонецЕсли;
     
     Если Транзакция=1 Тогда
           НачатьТранзакцию();
     КонецЕсли;
           
     Тим=_GetPerformanceCounter();
     Рег.ПорядокНаименований();
     Рег.ВыбратьЭлементы();
     Пока Рег.ПолучитьЭлемент()>0 Цикл
           Если ( Число(Рег.Новый10) % 5 ) = 0 Тогда
                 Кол=Кол+1;                  
           КонецЕсли;
           Ном=Ном+1;
     КонецЦикла;
     Сообщить(Строка(_GetPerformanceCounter()-Тим));
     
     Если Транзакция=1 Тогда
           ЗафиксироватьТранзакцию();
     КонецЕсли;
     
     Сообщить("Всего выбрано: "+ном+", удовлетворяет условию: "+кол);

Пример использую для проверки скорости перебора большого справочника (Самый тяжёлый режим для V7DBNet, т.к. кэш роли в нем не играет).
Новый10 - строка 100
  
Наверх
www  
IP записан
 
simply
God Member
*****
Отсутствует


Мечта: избавиться от 1С

Сообщений: 573
Местоположение: Киев
Зарегистрирован: 31. Декабря 2008
Пол: Мужской
Re: 1C 7.7 DBF Клиент-сервер. Нужна помощь в тестировании.
Ответ #50 - 25. Октября 2010 :: 06:44
Печать  
orefkov писал(а) 25. Октября 2010 :: 05:17:
ЗЫ: Создание виртуальной таблицы в 1sqlite отнюдь не означает физическое перекачивание данных из таблицы 1С куда-либо.
На то она и виртуальная таблица. Когда запросу понадобятся данные из виртуальной таблицы, 1sqlite будет читать их непосредственно из таблицы 1С.

Спасибо!
Это радует Улыбка
  
Наверх
IP записан
 
Dmitry The Wing
God Member
*****
Отсутствует


1C++ rocks!

Сообщений: 839
Местоположение: Где-то в Сибири
Зарегистрирован: 18. Августа 2009
Пол: Мужской
Re: 1C 7.7 DBF Клиент-сервер. Нужна помощь в тестировании.
Ответ #51 - 25. Октября 2010 :: 06:48
Печать  
Wirth писал(а) 25. Октября 2010 :: 06:18:
ЗафиксироватьТранзакцию();

Эй, Изверг, ты почто животинку мучаешь?
Где ж это видано, чтобы фиксировать транзакцию при проведении запросов только на чтение? - это раз ... а два - нафига тут вообще транзакция?
  
Наверх
 
IP записан
 
Wirth
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 54
Зарегистрирован: 01. Марта 2010
Re: 1C 7.7 DBF Клиент-сервер. Нужна помощь в тестировании.
Ответ #52 - 25. Октября 2010 :: 06:52
Печать  
Фиксирую транзакцию по флажку, т.е. не всегда. Тест не мой - идея Владимира Ходакова, немного мной модифицированная.
Тест для сравнения разных режимов: обычного доступа, доступа по транзакции, по DirectRead.
В реальной программе транзакция конечно противопоказана.
  
Наверх
www  
IP записан
 
Dmitry The Wing
God Member
*****
Отсутствует


1C++ rocks!

Сообщений: 839
Местоположение: Где-то в Сибири
Зарегистрирован: 18. Августа 2009
Пол: Мужской
Re: 1C 7.7 DBF Клиент-сервер. Нужна помощь в тестировании.
Ответ #53 - 25. Октября 2010 :: 06:56
Печать  
Wirth писал(а) 25. Октября 2010 :: 06:52:
Фиксирую транзакцию по флажку, т.е. не всегда. Тест не мой - идея Владимира Ходакова, немного мной модифицированная.
Тест для сравнения разных режимов: обычного доступа, доступа по транзакции, по DirectRead.
В реальной программе транзакция конечно противопоказана.

Если движок грамотный, то многое зависит от настроек режима изоляции транзакций.
Хотя, я ни разу не встречал реального случая, когда было бы выгодно использовать что-либо, кроме ReadCommited.
  
Наверх
 
IP записан
 
Wirth
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 54
Зарегистрирован: 01. Марта 2010
Re: 1C 7.7 DBF Клиент-сервер. Нужна помощь в тестировании.
Ответ #54 - 25. Октября 2010 :: 07:05
Печать  
Результаты выглядят примерно так (все хочу видео-ролик сделать про тестирование, руки не доходят):
Два сеанса, в одном выполняется обработка, второй просто открыт.
1С:
Простой режим ~90 сек
Режим транзакции ~17-20 сек
V7DBNet:
Простой режим ~6-7 сек
Режим транзакции ~6-7 сек
DirectRead (специально увеличен кэш) ~3 сек

Вот думаю оформить в виде статьи с видео роликами (скринами с экрана) и заодно посмотреть как 1sqlite поведет себя.

PS. Сеансы открыты на разных компьютерах в реальной сети.
  
Наверх
www  
IP записан
 
JohnyDeath
1c++ power user
1c++ donor
Отсутствует



Сообщений: 3050
Местоположение: Волгоград
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: 1C 7.7 DBF Клиент-сервер. Нужна помощь в тестировании.
Ответ #55 - 25. Октября 2010 :: 07:08
Печать  
Wirth писал(а) 25. Октября 2010 :: 06:18:
Вечером хочу попробовать потестить на скорость совместного использования 1sqlite и V7DBNet. Подскажите как переписать такой пример под 1sqlite?
//

Пример использую для проверки скорости перебора большого справочника (Самый тяжёлый режим для V7DBNet, т.к. кэш роли в нем не играет).
Новый10 - строка 100

Примерно так:
Код
Выбрать все
Процедура Сформировать()
	Транзакция=1;

	База = СоздатьОбъект("SQLiteBase");
	База.Открыть(":memory:");
	Запрос = База.НовыйЗапрос();

	Если Транзакция = 1 Тогда
		Запрос.ВыполнятьВТранзакции = 1;
	КонецЕсли;

	ТекстЗапроса = "
	|SELECT SUM(1) Всего
	|	,SUM(case
	|			when (CAST(Тест.Новый10 as REAL) % 5) = 0 then 1
	|			ELSE 0
	|		end) ПоУсловию
	|FROM [Справочник.Тест] Тест
	|ORDER BY Descr
	|";

	//Запрос.Отладка(1);
	т1 = _GetPerformanceCounter();
	тзРезультат = Запрос.ВыполнитьЗапрос(ТекстЗапроса);
	т2 = _GetPerformanceCounter();
	Если тзРезультат.КоличествоСтрок()>0 Тогда
		Сообщить("Время выполнения 1SQLITE = "+((т2-т1)));
		Сообщить("Всего элементов = "+тзРезультат.получитьЗначение(1,"Всего")+", удовлетворяют условию = "+тзРезультат.получитьЗначение(1,"ПоУсловию"));
	Иначе
		Сообщить("Нет результата!","!");
	КонецЕсли;
КонецПроцедуры 



Но тестировать, как мне кажется, лучше на задачах с хитрожопыми условиями, приближенными к реальности, где будет попадание/не попадание в индекс и т.п.
В данном примере идет такой же тупой перебор и, думаю, вряд ли получится быстрее твоего кода.

И еще одно примечание. При конверации строки в число получится 0, если там "слово".
Цитата:
When casting a BLOB value to a REAL, the value is first converted to TEXT.

When casting a TEXT value to REAL, the longest possible prefix of the value that can be interpreted as a real number is extracted from the TEXT value and the remainder ignored. Any leading spaces in the TEXT value are ignored when converging from TEXT to REAL. If there is no prefix that can be interpreted as a real number, the result of the conversion is 0.0.
  
Наверх
 
IP записан
 
Wirth
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 54
Зарегистрирован: 01. Марта 2010
Re: 1C 7.7 DBF Клиент-сервер. Нужна помощь в тестировании.
Ответ #56 - 25. Октября 2010 :: 07:12
Печать  
JohnyDeath:
Спасибо!
Можно и похитрее. Но идея протестить именно прокачку данных.
Собственно предложите тест, интересно по всякому погонять.

Цитата:
И еще одно примечание. При конверации строки в число получится 0, если там "слово".

Там числа Улыбка
  
Наверх
www  
IP записан
 
orefkov
1c++ developer
1c++ moderator
Отсутствует


I Love YaBB 2!

Сообщений: 896
Зарегистрирован: 20. Мая 2006
Re: 1C 7.7 DBF Клиент-сервер. Нужна помощь в тестировании.
Ответ #57 - 25. Октября 2010 :: 07:17
Печать  
Wirth писал(а) 25. Октября 2010 :: 06:18:
Вечером хочу попробовать потестить на скорость совместного использования 1sqlite и V7DBNet. Подскажите как переписать такой пример под 1sqlite?

     Рег=СоздатьОбъект("Справочник.Тест");
     Ном=0;
     Кол=0;

     Если _DirectRead=1 Тогда                  
           V7DBNet.DirectRead();
     КонецЕсли;
     
     Если Транзакция=1 Тогда
           НачатьТранзакцию();
     КонецЕсли;
           
     Тим=_GetPerformanceCounter();
     Рег.ПорядокНаименований();
     Рег.ВыбратьЭлементы();
     Пока Рег.ПолучитьЭлемент()>0 Цикл
           Если ( Число(Рег.Новый10) % 5 ) = 0 Тогда
                 Кол=Кол+1;                  
           КонецЕсли;
           Ном=Ном+1;
     КонецЦикла;
     Сообщить(Строка(_GetPerformanceCounter()-Тим));
     
     Если Транзакция=1 Тогда
           ЗафиксироватьТранзакцию();
     КонецЕсли;
     
     Сообщить("Всего выбрано: "+ном+", удовлетворяет условию: "+кол);

Пример использую для проверки скорости перебора большого справочника (Самый тяжёлый режим для V7DBNet, т.к. кэш роли в нем не играет).
Новый10 - строка 100


Наверное так:

Код
Выбрать все
Процедура Сформировать()
	ЗагрузитьВнешнююКомпоненту("1sqlite.dll");
	база = СоздатьОбъект("SQLiteBase");
	база.Открыть(":memory:");
	запрос = база.НовыйЗапрос();
	Если Транзакция=1 Тогда
		НачатьТранзакцию();
	КонецЕсли;

	Тим=_GetPerformanceCounter();
	тз = запрос.ВыполнитьЗапрос("
	|select
	|	count(*) [ном],
	|	sum(case when cast(ст.Новый10 as integer) % 5 = 0 then 1 else 0 end) [кол]
	|from [Справочник.Тест] ст
	|");
	Сообщить(Строка(_GetPerformanceCounter()-Тим));

	Если Транзакция=1 Тогда
		ЗафиксироватьТранзакцию();
	КонецЕсли;

	Сообщить("Всего выбрано: "+тз.ном+", удовлетворяет условию: "+тз.кол);
КонецПроцедуры
 


  
Наверх
 
IP записан
 
orefkov
1c++ developer
1c++ moderator
Отсутствует


I Love YaBB 2!

Сообщений: 896
Зарегистрирован: 20. Мая 2006
Re: 1C 7.7 DBF Клиент-сервер. Нужна помощь в тестировании.
Ответ #58 - 25. Октября 2010 :: 07:32
Печать  
JohnyDeath писал(а) 25. Октября 2010 :: 07:08:
В данном примере идет такой же тупой перебор и, думаю, вряд ли получится быстрее твоего кода.

Ну, за счет того, что интерпретатор sqlite наверняка работает побыстрее интерпретатора 1С, все же будет чуть быстрее.
  
Наверх
 
IP записан
 
Wirth
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 54
Зарегистрирован: 01. Марта 2010
Re: 1C 7.7 DBF Клиент-сервер. Нужна помощь в тестировании.
Ответ #59 - 27. Октября 2010 :: 01:31
Печать  
Оформил тестирование в статью:
http://www.wirth.ru/publ/test_1_v7dbnet/1-1-0-1
  
Наверх
www  
IP записан
 
Dmitry The Wing
God Member
*****
Отсутствует


1C++ rocks!

Сообщений: 839
Местоположение: Где-то в Сибири
Зарегистрирован: 18. Августа 2009
Пол: Мужской
Re: 1C 7.7 DBF Клиент-сервер. Нужна помощь в тестировании.
Ответ #60 - 27. Октября 2010 :: 04:19
Печать  
Wirth писал(а) 27. Октября 2010 :: 01:31:
Оформил тестирование в статью:
http://www.wirth.ru/publ/test_1_v7dbnet/1-1-0-1

А что там должно быть видно между заголовками тестов?
Цитата:
Тест 1: Перебор справочника в одном активном сеансе: 1С в сетевом DBF режиме, и в режиме сервера V7DBNet

Цитата:
Тест 2: Перебор справочника в одном активном сеансе: 1С в сетевом DBF режиме при помощи ВК 1sqlite,  и в режиме сервера V7DBNet + 1sqlite

Я вижу только много пустого места ... как в последнем огнелисе, так и в IE7...
  
Наверх
 
IP записан
 
JohnyDeath
1c++ power user
1c++ donor
Отсутствует



Сообщений: 3050
Местоположение: Волгоград
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: 1C 7.7 DBF Клиент-сервер. Нужна помощь в тестировании.
Ответ #61 - 27. Октября 2010 :: 05:34
Печать  
Там видео  Улыбка
ИМХО, можно было просто результаты тестов и обработку тестирования выложить, мы б поверили. А смотреть по 2 мин. на экран, на котором ничего не происходит, как-то не кузяво.
Да и тест по 1sqlite будет проходить намного быстрее во второй раз, когда виртуальная таблица уже создана.
  
Наверх
 
IP записан
 
orefkov
1c++ developer
1c++ moderator
Отсутствует


I Love YaBB 2!

Сообщений: 896
Зарегистрирован: 20. Мая 2006
Re: 1C 7.7 DBF Клиент-сервер. Нужна помощь в тестировании.
Ответ #62 - 27. Октября 2010 :: 05:35
Печать  
Wirth писал(а) 27. Октября 2010 :: 01:31:
Оформил тестирование в статью:
http://www.wirth.ru/publ/test_1_v7dbnet/1-1-0-1

Эм....
Я конечно понимаю, просмотр видео погружает нас в атмосферу тестирования и сравнения, но хотелось бы помимо видео сухие итоговые цифры.
  
Наверх
 
IP записан
 
orefkov
1c++ developer
1c++ moderator
Отсутствует


I Love YaBB 2!

Сообщений: 896
Зарегистрирован: 20. Мая 2006
Re: 1C 7.7 DBF Клиент-сервер. Нужна помощь в тестировании.
Ответ #63 - 27. Октября 2010 :: 05:42
Печать  
И кстати, нет самого главного теста с таким сценарием- все копии 1С-Предприятия и сервер V7DBNet2 работают на одном сервере терминалов.
  
Наверх
 
IP записан
 
Dmitry The Wing
God Member
*****
Отсутствует


1C++ rocks!

Сообщений: 839
Местоположение: Где-то в Сибири
Зарегистрирован: 18. Августа 2009
Пол: Мужской
Вопрос к автору по принципу действия
Ответ #64 - 27. Октября 2010 :: 07:54
Печать  
К сожалению, пока не было времени попробовать сие творение, но каков принцип действия? Даст ли его применение, например, грамотный разрыв соединения при падении клиента 1С? (чтобы не было переиндексаций)
  
Наверх
 
IP записан
 
Wirth
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 54
Зарегистрирован: 01. Марта 2010
Re: 1C 7.7 DBF Клиент-сервер. Нужна помощь в тестировании.
Ответ #65 - 27. Октября 2010 :: 08:18
Печать  
Да, табличку надо с цифрами нарисовать.
А видео - для зрелещности. Одно дело когда читаешь что что-то медленнее/быстрее другого, другое дело сам чувствуешь.

Цитата:
И кстати, нет самого главного теста с таким сценарием- все копии 1С-Предприятия и сервер V7DBNet2 работают на одном сервере терминалов.

Если все работают на одном компьютере, т.е. все сессии локально? Проблемы сетевых приложений не в скорости локальной работы, а скорости обмена пакетами. Очень много времени потратил на уменьшение количества пакетов. Т.к. время на посылку одного пакета будет = время пересылки данных + TTL (время отклика сервера). Собственно вряд ли я смогу тягаться с алгоритмами кэширования файлов самим файл-сервером, но сейчас попробую.

Цитата:
можно было просто результаты тестов и обработку тестирования выложить, мы б поверили

Так я и выложил.

Цитата:
Да и тест по 1sqlite будет проходить намного быстрее во второй раз, когда виртуальная таблица уже создана.

Так цель теста не скорость 1sqlite, а доступ к данным. Для тестирования 1sqlite необходимы алгоритмы нормальные. Не тупого перебора.

Мне интересным показался именно тот факт, что 1sqlite ускоряет выборку в режиме V7DBNet. Иными словами, работу 1sqlite ограничивает скорость доступа к данным. V7DBNet - снимает ограничение.

Цитата:
Да и тест по 1sqlite будет проходить намного быстрее во второй раз, когда виртуальная таблица уже создана.

Если установить szcache=100Mb (при весе всей базы ~60Mb) скорость V7DBNet тоже значительно возрастет. Улыбка
  
Наверх
www  
IP записан
 
Wirth
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 54
Зарегистрирован: 01. Марта 2010
Re: 1C 7.7 DBF Клиент-сервер. Нужна помощь в тестировании.
Ответ #66 - 27. Октября 2010 :: 08:23
Печать  
Цитата:
Даст ли его применение, например, грамотный разрыв соединения при падении клиента 1С? (чтобы не было переиндексаций)


Грамотный разрыв сделает, т.е. просто отменит транзакцию сеанса. А вот индексацию предложит, так как в 1susers будет отмечено что сеанс упал.
  
Наверх
www  
IP записан
 
Wirth
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 54
Зарегистрирован: 01. Марта 2010
Re: 1C 7.7 DBF Клиент-сервер. Нужна помощь в тестировании.
Ответ #67 - 27. Октября 2010 :: 08:33
Печать  
Локальные замеры:
Три сессии на одном компьютере, сервер V7DBNet и данные тоже на нем.

1С:
первое выполнение - 5653
повторное выполнение - 1948

V7DBNet:
первое выполнение - 5480
повторное выполнение - 3805

V7DBNet с кэш = 100Mb:
первое выполнение - 3803
повторное выполнение - 1193

Если честно думал, хуже будет.
  
Наверх
www  
IP записан
 
simply
God Member
*****
Отсутствует


Мечта: избавиться от 1С

Сообщений: 573
Местоположение: Киев
Зарегистрирован: 31. Декабря 2008
Пол: Мужской
Re: 1C 7.7 DBF Клиент-сервер. Нужна помощь в тестировании.
Ответ #68 - 27. Октября 2010 :: 08:34
Печать  
Добрый день, Анатолий!
Ознакомился со статьей, результаты впечатляют (опустим видео)!

Есть возможность добавить в эту статью только результаты этого же теста с использованием V7DBNet, но если добавить еще 2-3 неактивных пользователя?

З.Ы.: тесты простой dbf не интересуют. А пользователей можно и в терминал загнать. Лишь бы были.
  
Наверх
IP записан
 
Wirth
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 54
Зарегистрирован: 01. Марта 2010
Re: 1C 7.7 DBF Клиент-сервер. Нужна помощь в тестировании.
Ответ #69 - 27. Октября 2010 :: 08:48
Печать  
Добавил картинку-график в статью.

Цитата:
Есть возможность добавить в эту статью только результаты этого же теста с использованием V7DBNet, но если добавить еще 2-3 неактивных пользователя?


Можно и активных.
Вас интересует падение скорости работы от количества сеансов?
  
Наверх
www  
IP записан
 
Dmitry The Wing
God Member
*****
Отсутствует


1C++ rocks!

Сообщений: 839
Местоположение: Где-то в Сибири
Зарегистрирован: 18. Августа 2009
Пол: Мужской
Re: 1C 7.7 DBF Клиент-сервер. Нужна помощь в тестировании.
Ответ #70 - 27. Октября 2010 :: 08:50
Печать  
Wirth писал(а) 27. Октября 2010 :: 08:23:
Цитата:
Даст ли его применение, например, грамотный разрыв соединения при падении клиента 1С? (чтобы не было переиндексаций)


Грамотный разрыв сделает, т.е. просто отменит транзакцию сеанса. А вот индексацию предложит, так как в 1susers будет отмечено что сеанс упал.

А может реально эту запись обработать? Чтобы переиндексация требовалась только при падении всей схемы? А в случае корректного обрыва соединения также корректно гасилась бы и эта запись. Это реально?
  
Наверх
 
IP записан
 
simply
God Member
*****
Отсутствует


Мечта: избавиться от 1С

Сообщений: 573
Местоположение: Киев
Зарегистрирован: 31. Декабря 2008
Пол: Мужской
Re: 1C 7.7 DBF Клиент-сервер. Нужна помощь в тестировании.
Ответ #71 - 27. Октября 2010 :: 08:59
Печать  
Wirth писал(а) 27. Октября 2010 :: 08:48:
Добавил картинку-график в статью.

Цитата:
Есть возможность добавить в эту статью только результаты этого же теста с использованием V7DBNet, но если добавить еще 2-3 неактивных пользователя?


Можно и активных.
Вас интересует падение скорости работы от количества сеансов?

Да. В DBF она имеет геометрическую прогрессию
  
Наверх
IP записан
 
simply
God Member
*****
Отсутствует


Мечта: избавиться от 1С

Сообщений: 573
Местоположение: Киев
Зарегистрирован: 31. Декабря 2008
Пол: Мужской
Re: 1C 7.7 DBF Клиент-сервер. Нужна помощь в тестировании.
Ответ #72 - 27. Октября 2010 :: 09:01
Печать  
И очень жаль, что нельзя официально купить в Украине.

З.Ы.: о предложении бесплатного теста в обмен на отчеты помню.
  
Наверх
IP записан
 
Wirth
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 54
Зарегистрирован: 01. Марта 2010
Re: 1C 7.7 DBF Клиент-сервер. Нужна помощь в тестировании.
Ответ #73 - 27. Октября 2010 :: 09:03
Печать  
Можно отказываться от индексации. По идеи индексы могут быть испорчены только в случае, если отключить сервер в момент коммита транзакции.
Предложение на индексацию не стал отключать, т.к. индексация полезна - она упаковывает индексные файлы.
  
Наверх
www  
IP записан
 
Wirth
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 54
Зарегистрирован: 01. Марта 2010
Re: 1C 7.7 DBF Клиент-сервер. Нужна помощь в тестировании.
Ответ #74 - 27. Октября 2010 :: 09:05
Печать  
Цитата:
Да. В DBF она имеет геометрическую прогрессию

Тест могу провести ночью, т.к. сейчас юзверы сервер грузят.

Цитата:
З.Ы.: о предложении бесплатного теста в обмен на отчеты помню.

И я помню, и жду от Вас регистрационный код. Подмигивание
  
Наверх
www  
IP записан
 
simply
God Member
*****
Отсутствует


Мечта: избавиться от 1С

Сообщений: 573
Местоположение: Киев
Зарегистрирован: 31. Декабря 2008
Пол: Мужской
Re: 1C 7.7 DBF Клиент-сервер. Нужна помощь в тестировании.
Ответ #75 - 27. Октября 2010 :: 09:10
Печать  
Wirth писал(а) 27. Октября 2010 :: 09:05:
Цитата:
З.Ы.: о предложении бесплатного теста в обмен на отчеты помню.

И я помню, и жду от Вас регистрационный код. Подмигивание

Боюсь начать.
Предполагаю, что настолько понравится, что трудно будет отказаться. А у меня пока только 20  магазинов.
Налоговая в наши магазины часто заглядывает. Они никак не понимают, что с лицензией на MS Office 2007 можно использовать MS Office 2003 - штрафы выписывают
  
Наверх
IP записан
 
Dmitry The Wing
God Member
*****
Отсутствует


1C++ rocks!

Сообщений: 839
Местоположение: Где-то в Сибири
Зарегистрирован: 18. Августа 2009
Пол: Мужской
Re: 1C 7.7 DBF Клиент-сервер. Нужна помощь в тестировании.
Ответ #76 - 27. Октября 2010 :: 09:14
Печать  
Wirth писал(а) 27. Октября 2010 :: 09:03:
Можно отказываться от индексации. По идеи индексы могут быть испорчены только в случае, если отключить сервер в момент коммита транзакции.
Предложение на индексацию не стал отключать, т.к. индексация полезна - она упаковывает индексные файлы.

То, что переиндексация полезна - никто не спорит, но когда она длится час - лучше делать ее тогда, когда точно знаешь, что необходима и в моменты, специально отведенные под профилактику ... Отказываться, не зная, необходима ли она - тоже глупо. Уже пробовали как-то работать с поврежденными индексами - такая мистика творилась ... Понятное дело, что народ честно верил, что индексы верны, потому решили сэкономить время на переиндексации...
  
Наверх
 
IP записан
 
Wirth
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 54
Зарегистрирован: 01. Марта 2010
Re: 1C 7.7 DBF Клиент-сервер. Нужна помощь в тестировании.
Ответ #77 - 27. Октября 2010 :: 09:22
Печать  
Узнать поврежден индекс или нет нельзя (или я не знаю как), пока не выскочит сообщение 1С "Bad index".
Запись производится сервером самостоятельно, при успешном завершении транзакции. Т.ч. если в этот момент сервер не валить, портиться не должно.
Мне самому интересен этот момент, поэтому своих пользователей попросил всегда отказываться от индексации. Пока работают.
  
Наверх
www  
IP записан
 
Dmitry The Wing
God Member
*****
Отсутствует


1C++ rocks!

Сообщений: 839
Местоположение: Где-то в Сибири
Зарегистрирован: 18. Августа 2009
Пол: Мужской
Re: 1C 7.7 DBF Клиент-сервер. Нужна помощь в тестировании.
Ответ #78 - 27. Октября 2010 :: 09:25
Печать  
Wirth писал(а) 27. Октября 2010 :: 09:22:
Пока работают.
Потом будут очень веселые сюрпризы - данные вообще будут нелогичные появляться, но далеко не везде и не сразу, что есть наиболее неприятно, - не будешь знать о наличии глюков...
  
Наверх
 
IP записан
 
Wirth
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 54
Зарегистрирован: 01. Марта 2010
Re: 1C 7.7 DBF Клиент-сервер. Нужна помощь в тестировании.
Ответ #79 - 27. Октября 2010 :: 09:27
Печать  
Говорю же портиться не должны. Улыбка
Но время покажет конечно.
На худой конец можно в полночь настроить реиндексацию принудительную.
  
Наверх
www  
IP записан
 
Wirth
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 54
Зарегистрирован: 01. Марта 2010
Re: 1C 7.7 DBF Клиент-сервер. Нужна помощь в тестировании.
Ответ #80 - 28. Октября 2010 :: 22:54
Печать  
simply:

Замеры провел, результаты на статью не тянут, поэтому решил открыть тему в форуме: http://www.wirth.ru/forum/11-6-1
  
Наверх
www  
IP записан
 
Wirth
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 54
Зарегистрирован: 01. Марта 2010
Re: 1C 7.7 DBF Клиент-сервер. Нужна помощь в тестировании.
Ответ #81 - 31. Октября 2010 :: 20:46
Печать  
Dmitry The Wing:

В версии 2.0.0.3 сделал попытку запрашивать реиндексацию более адекватно. Если свалился сеанс который в этот момент ни чего не писал, то и запроса не будет.

Добавил метод ErrorCount() к объекту V7DBNet, по нему можно определять ошибки записи, и предлагать пользователям выйти из программы для реиндексации.
  
Наверх
www  
IP записан
 
simply
God Member
*****
Отсутствует


Мечта: избавиться от 1С

Сообщений: 573
Местоположение: Киев
Зарегистрирован: 31. Декабря 2008
Пол: Мужской
Re: 1C 7.7 DBF Клиент-сервер. Нужна помощь в тестировании.
Ответ #82 - 03. Ноября 2010 :: 12:01
Печать  
Mои тесты.
Отчеты запускались параллельно.
  

v7dbnet_test.jpg ( 112 KB | Загрузки )
v7dbnet_test.jpg
Наверх
IP записан
 
Kalen
Full Member
***
Отсутствует


1C++ rocks!

Сообщений: 185
Зарегистрирован: 29. Марта 2010
Пол: Мужской
Re: 1C 7.7 DBF Клиент-сервер. Нужна помощь в тестировании.
Ответ #83 - 16. Декабря 2010 :: 12:34
Печать  
Т.е. под терминал нет смысла это прикручивать?
Или это как раз возможность отказаться от терминала?
Как оно относится к потере сетевых пакетов?
Смешаного доступа к базе быть не может, всех клиентов надо переводить в этот режим. Правильно?
  
Наверх
GTalkICQ  
IP записан
 
Переключение на Главную Страницу Страницы: [1] 
ОтправитьПечать