Подойдет ли In-Memory Database Driver?

Программы на Clarion, шаблоны, библиотеки и пр.
Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
Аватара пользователя
ingasoftplus
Старожил
Сообщения: 265
Зарегистрирован: 26 Декабрь 2006, 17:07
Откуда: Оттуда :)

Подойдет ли In-Memory Database Driver?

Сообщение ingasoftplus » 09 Ноябрь 2015, 20:40

Есть у нас в словаре несколько таблиц ТПС, которые используются внутри некоторых процедур в разных приложениях (используется 1 словарь). Эти таблицы используются как временные, для подготовки сводных данных, одноразово, при открытии процедур. После выхода из процедуры как правило данные из этих таблиц никому не нужны и отдельно от процедуры - не актуальны. А все остальное крутится на СКЛ таблицах.

Вот и озадачилось наше руководство - вообще уйти от ТПС. Говорят - будем все переделывать под очереди (взамен тех ТПС). легко сказать - под очереди, там и логику и код придется менять, и ошибки можно допустить, и потом отлаживать код, который до этого годами работал...

Вот я вспомнил - про In-Memory Database Driver! Поможет ли оно мне??? Если я для тех ТПСов заменю драйвер на MEMORY - все останется неизменным?? код править будет не надо???

Расскажите мне про In-Memory Database Driver - что за зверь вообще, и поможет ли мне в частности!

Спасибо!!
Последний раз редактировалось ingasoftplus 09 Ноябрь 2015, 20:50, всего редактировалось 1 раз.

Developer
Ветеран
Сообщения: 456
Зарегистрирован: 26 Март 2012, 16:18

Подойдет ли In-Memory Database Driver?

Сообщение Developer » 09 Ноябрь 2015, 20:47

ingasoftplus писал(а): Если у нас в словаре несколько таблиц ТПС, которые используются внутри некоторых процедур в разных приложениях (используется 1 словарь). Эти таблицы используются как временные, для подготовки сводных данных, одноразово, при открытии процедур. После выхода из процедуры как правило данные из этих таблиц никому не нужны и отдельно от процедуры - не актуальны. А все остальное крутится на СКЛ таблицах.

Вот и озадачилось наше руководство - вообще уйти от ТПС. Говорят - будем все переделывать под очереди (взамен тех ТПС). легко сказать - под очереди, там и логику и код придется менять, и ошибки можно допустить, и потом отлаживать код, который до этого годами работал...

Вот я вспомнил - про In-Memory Database Driver! Поможет ли оно мне??? Если я для тех ТПСов заменю драйвер на MEMORY - все останется неизменным?? код править будет не надо???
Если всё перефразировать - необходима замена временных таблиц хранящихся в физических файлах TPS
на временные таблицы хранящиеся в "виртуальных файлах" оперативной памяти - правильно?
С Уважением, Developer

Аватара пользователя
ingasoftplus
Старожил
Сообщения: 265
Зарегистрирован: 26 Декабрь 2006, 17:07
Откуда: Оттуда :)

Подойдет ли In-Memory Database Driver?

Сообщение ingasoftplus » 09 Ноябрь 2015, 20:50

Developer писал(а):
ingasoftplus писал(а):
Вот и озадачилось наше руководство - вообще уйти от ТПС. Говорят - будем все переделывать под очереди (взамен тех ТПС). легко сказать - под очереди, там и логику и код придется менять, и ошибки можно допустить, и потом отлаживать код, который до этого годами работал...

Вот я вспомнил - про In-Memory Database Driver! Поможет ли оно мне??? Если я для тех ТПСов заменю драйвер на MEMORY - все останется неизменным?? код править будет не надо???
Если всё перефразировать - необходима замена временных таблиц хранящихся в физических файлах TPS
на временные таблицы хранящиеся в "виртуальных файлах" оперативной памяти - правильно?
да! и чтоб код не трогать :cat:

и еще, проги собираются с локал моде (1 ехе), под с63, с8 и с10 (в будущем).

Developer
Ветеран
Сообщения: 456
Зарегистрирован: 26 Март 2012, 16:18

Подойдет ли In-Memory Database Driver?

Сообщение Developer » 09 Ноябрь 2015, 21:03

Если как только временные таблицы без общего доступа (монопольный доступ) - думаю такой вариант пройдёт.

А какие объёмы информации в промежуточных файлах TPS - если в пределах до 1/10 RAM разумный подход :wink:


Проще создать виртуальный RAM диск и переместить туда временные файлы TPS - и нет проблем :D

И никакой перестройки кода Clarion :wink:
С Уважением, Developer

gopstop2007
Ветеран
Сообщения: 1179
Зарегистрирован: 25 Март 2009, 21:55

Подойдет ли In-Memory Database Driver?

Сообщение gopstop2007 » 09 Ноябрь 2015, 21:10

И мне тоже было бы интересно, только ноги не дошли :) Хотя пробовал, но что-то не срослось :(
“Есть всего 2 типа языков: те, на которые все жалуются и те, которыми никто не пользуется.” — Бьерн Страуструп

Аватара пользователя
ingasoftplus
Старожил
Сообщения: 265
Зарегистрирован: 26 Декабрь 2006, 17:07
Откуда: Оттуда :)

Подойдет ли In-Memory Database Driver?

Сообщение ingasoftplus » 09 Ноябрь 2015, 21:10

Developer писал(а): Если как только временные таблицы без общего доступа (монопольный доступ) - думаю такой вариант пройдёт.

А какие объёмы информации в промежуточных файлах TPS - если в пределах до 1/10 RAM разумный подход :wink:


Проще создать виртуальный RAM диск и переместить туда временные файлы TPS - и нет проблем :D

И никакой перестройки кода Clarion :wink:
объемы - да небольшие, порядка 100 записей (как правило значительно меньше), да - доступ монопольный. сами файлы после обработки - не нужны...

Аватара пользователя
ingasoftplus
Старожил
Сообщения: 265
Зарегистрирован: 26 Декабрь 2006, 17:07
Откуда: Оттуда :)

Подойдет ли In-Memory Database Driver?

Сообщение ingasoftplus » 09 Ноябрь 2015, 21:14

и еще вопрос - как там с версиями этого драйвера под версию Клариона? Нужна специфическая версия именно под билб Клариона или пойдет любая под версию (ну например, под с63 вообще или нужны именно под 9057 например?? еще раз - у нас локал мод компиляция, 1 ехе)

Developer
Ветеран
Сообщения: 456
Зарегистрирован: 26 Март 2012, 16:18

Подойдет ли In-Memory Database Driver?

Сообщение Developer » 09 Ноябрь 2015, 21:21

Идея с In-Memory Database Driver в качестве временного хранилища отчётов которые потом никому ненужны
очень хороша, но вот с реализацией по замене с TPS на In-Memory Database Driver в лоб у меня конкретного ответа нет.

Применение RAM диска и перемещение (создание пустого промежуточного файла TPS в RAM диске) - намного проще :D

Но есть недостаток: заранее неизвестно какой объём RAM диска резервировать (создавать) - экспериментальным путём возможно решить этот вопрос :wink:
С Уважением, Developer

Аватара пользователя
ingasoftplus
Старожил
Сообщения: 265
Зарегистрирован: 26 Декабрь 2006, 17:07
Откуда: Оттуда :)

Подойдет ли In-Memory Database Driver?

Сообщение ingasoftplus » 09 Ноябрь 2015, 21:31

а что сложного может быть в реализациеи по замене с TPS на In-Memory Database Driver в лоб?? по логике, заменить в словаре драйвер и все?

Developer
Ветеран
Сообщения: 456
Зарегистрирован: 26 Март 2012, 16:18

Подойдет ли In-Memory Database Driver?

Сообщение Developer » 09 Ноябрь 2015, 21:37

ingasoftplus писал(а): а что сложного может быть в реализациеи по замене с TPS на In-Memory Database Driver в лоб?? по логике, заменить в словаре драйвер и все?
По логике все возможно просто - а вот на практике совсем другое дело :wink:

Надо провести практический эксперимент :D

Идея интересная - вот только для Clarion 6 не уверен что был In-Memory Database Driver

Для версии Clarion 8 - есть точно!
С Уважением, Developer

Developer
Ветеран
Сообщения: 456
Зарегистрирован: 26 Март 2012, 16:18

Подойдет ли In-Memory Database Driver?

Сообщение Developer » 09 Ноябрь 2015, 21:39

In Memory драйвер

In Memory драйвер - это новый стандартный файловый драйвер для Clarion. In Memory драйвер - это ISAM драйвер, но в отличие от всех ISAM драйверов, этот драйвер не использует для хранения данных дисковые файлы. Все данные хранятся в памяти компьютера, благодаря чему драйвер обладает рядом уникальных свойств:

рекордно высокое быстродействие;
исключительно монопольгый доступ к данным. Загрузив данные в MEMORY-файл, Вы можете быть уверены в полной их безопасности и конфедициальности. Даже два экземпляра программы, выполняющиеся на одном ПК, будут работать с разными экземплярами данных. Добавим, что данные будут автоматически уничтожены при завершении программы (любым способом). Это оказывается весьма полезным для WEB-приложений. Кроме автоматического уничтожения всех загруженных данных у Вас никогда не будет проблем с потерянными временными файлами.
поскольку MEMORY-файлы создаются при каждом запуске приложения заново, нет необходимости в конвертации данных при изменении формата записи.
MEMORY-файлы можно использовать вместо глабыльных QUEUE структур, при этом вам не нужно обеспечивать синхронизацию доступа из разных процессов, поскольку такая синхронизация уже встроена в драйвер.

Основное назначение этого драйвера - создание временных индивидуальных таблиц и работа с ними. Вот некоторые возможные области применения драйвера:

Временная таблица для ввода и редактирования записей дочернего файла с последующей выгрузкой данных в БД в рамках одной транзакции с родительским файлом.
Буфер для размещения результатов SQL запроса. Данные в таком буфере можно в дальнейшем фильтровать, сортировать, исполнять QBE/QBF запросы с помощью любых стандартных или специальных средств совершенно не затрагивая сервер и сетевые ресурсы. Более того, такая методология позволяет максимально быстро освободить используемые для выполнения запроса ресурсы SQL сервера и сушественно сократить сетевой трафик.
Использование MEMORY-файла позволяет сократить количество ключей и индексов в файле БД до минимума. Например, если для построения редко используемого отчета необходим специальный индекс, этот индекс м.б. описан только в MEMORY-файле, а в дисковом файле его может не быть. Таким способом можно уменьшить ресурсоемкость БД и повысить скорость выполнения операций редактирования таблиц.
Вы можете не только сократить количество ключей и индексов, но и избавиться от необходимости конвертирования БД в тех случаях, когда при развитии системы потребуется добавить новый индекс. Просто добавьте его в MEMORY-файле.
Вы можете строить рабочий "файл" собирая данные из нескольких источников, причем такими источниками м.б. не только физические файлы различных форматов. Например, часть конфигурационных данных Вы можете загрузить с сервера компании, а часть из локального файла, в котором хранятся специфические для лично Ваших функций данные.
В некоторых случаях использование MEMORY-файла позволяет имитировать функции VIEW SQL-сервера и изолировать логическую структуру данных от их физического представления. Например на этом можно построить разграничение прав доступа для файл-серверных ISAM БД. Причем, Вы можете полностью разделить вопросы проектирования бизнес логики и системы разграничения доступа.
С Уважением, Developer

Аватара пользователя
ingasoftplus
Старожил
Сообщения: 265
Зарегистрирован: 26 Декабрь 2006, 17:07
Откуда: Оттуда :)

Подойдет ли In-Memory Database Driver?

Сообщение ingasoftplus » 09 Ноябрь 2015, 21:58

ну эт мы и по ингишу прочитали :)

хотелось бы реальных историй :)

а под с63 он точно есть

Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 3852
Зарегистрирован: 07 Июль 2005, 9:19
Откуда: г. Ростов-на-Дону

Подойдет ли In-Memory Database Driver?

Сообщение Игорь Столяров » 09 Ноябрь 2015, 22:40

ingasoftplus писал(а): хотелось бы реальных историй
In-Memory драйвер есть под все версии Clarion (C63, C7, C8, C9, C91, C10)
Можно просто заменить драйвер TPS на In-Memory, загрузить списки и все будет работать, никаких проблем.
Следует обратить внимание на некоторые незначительные расхождения в поддерживаемых полях (например BLOB)
командах (например LOGOUT) и т.д.
Используем In-Memory с того доисторического времени, когда они только появились в Clarion.
На них построены практически все запросы, удобно, что есть возможность изолировать файл In-Memory в потоке (MDI)
и использовать стандартные шаблоны для обработки записей (Browse, Form, Report, EIP и т.д.)

Рекомендую в Global Settings сразу отключить для In-Memory таблиц "Use RI Transaction Frame" - иногда бывает
конфликт в стандартных шаблонах (например с EIP).

Что плохо: нет возможности бинарной загрузки / выгрузки всего файла. Т.е. если есть файл, предположим с 10 000
неизменяемых записей - то каждый раз придется его формировать через Add() (или Append()) по одной записи ...
Открытие In-Memory файла в монопольном режиме ощутимо повышает скорость работы с ним (порядка 20%).
Использование связки Append() + Build() вместо Add() - добавит еще 10% (зависит от кол-ва ключей и размера полей в них).

Прекрасный инструмент. Начиная с C9 практически безглючный и стабильно работающий. Если кратко - то где-то так. :)
«V» значит Вендетта !

Ал
Ветеран
Сообщения: 768
Зарегистрирован: 08 Июль 2005, 5:48
Откуда: Россия

Подойдет ли In-Memory Database Driver?

Сообщение Ал » 09 Ноябрь 2015, 23:26

ещё с очисткой баз перед при повторном использовании аккуратно надо

Аватара пользователя
ingasoftplus
Старожил
Сообщения: 265
Зарегистрирован: 26 Декабрь 2006, 17:07
Откуда: Оттуда :)

Подойдет ли In-Memory Database Driver?

Сообщение ingasoftplus » 09 Ноябрь 2015, 23:48

Игорь Столяров писал(а):
ingasoftplus писал(а): хотелось бы реальных историй
In-Memory драйвер есть под все версии Clarion (C63, C7, C8, C9, C91, C10)
Можно просто заменить драйвер TPS на In-Memory, загрузить списки и все будет работать, никаких проблем....
...
Прекрасный инструмент. Начиная с C9 практически безглючный и стабильно работающий. Если кратко - то где-то так. :)
спасибо, Игорь!

Ответить