DFD, CacheTPSABC - не понял

Clarion, Clarion 7

Модератор: Дед Пахом

Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
Аватара пользователя
finsoftrz
✯ Ветеран ✯
Сообщения: 4561
Зарегистрирован: 06 Ноябрь 2014, 12:48
Благодарил (а): 6 раз
Поблагодарили: 34 раза

DFD, CacheTPSABC - не понял

Сообщение finsoftrz »

kreator писал(а): 22 Май 2019, 17:23
finsoftrz писал(а): 22 Май 2019, 16:57 Мы же в кларионе для поддержки целостности при работе с tps тоже ничего ручками не пишем.
В каком месте есть проверка на запрет ввода дочерних записей с отсутствующем родителем? Никогда не проверял, но всё же. Если я в словаре укажу в Relations два файла с типом "один - ко многим" (Родитель, Ребёнок), шаблоны и классы отработают запрет на ввод в файл Ребёнка записи с несуществующим "Родителем". Вот я что-то сомневаюсь, что такая логика прописана на уровне работы с файлами.
Если говорить теоретически, то легко. Зависит от шаблонов. По моей практике, для добавления записей в базу данных создаются специальные функции, через которые работает приложение. То есть приложение не делает напрямую add(file), а только через вызов этих функций. Функции генерятся шаблонами автоматически и впихнуть туда можно практически что угодно. Например, автоматическая подпись (дата+время+пользователь) или запись в лог (аудит). Или упомянутую проверку на заполнение полей. Пользовательские опции словаря позволяют расширять функционал практически без ограничений.
C6/C11, ШВС, tps/btrieve.
Аватара пользователя
finsoftrz
✯ Ветеран ✯
Сообщения: 4561
Зарегистрирован: 06 Ноябрь 2014, 12:48
Благодарил (а): 6 раз
Поблагодарили: 34 раза

DFD, CacheTPSABC - не понял

Сообщение finsoftrz »

Кроме жестких ограничений, шаблонами можно сгенерить процедуру проверки содержимого базы данных. Не всегда все можно жестко закрыть. Или сразу сообразить, что и при каких условиях проверять. Очень полезная опция.
C6/C11, ШВС, tps/btrieve.
Аватара пользователя
RaFaeL
✯ Ветеран ✯
Сообщения: 1376
Зарегистрирован: 24 Март 2009, 17:59
Откуда: НН
Благодарил (а): 7 раз
Поблагодарили: 1 раз
Контактная информация:

DFD, CacheTPSABC - не понял

Сообщение RaFaeL »

finsoftrz писал(а): 22 Май 2019, 17:55По констрейнам, ребята, видимо, вы просто не сталкивались. Не зря же в продвинутых серверах есть функция их отключения.
А с чем именно нужно было столкнуться?

В нашем проекте есть опция отключения констрейнтов. Используется при импорте базы из бесплатной tps версии, при котором база импортируется as is и чтобы не заморачиваться с последовательностью заполнения таблиц, то временно отключаются констрейнты, автонумерация и т.д. и т.п. Но это частный случай, зачем их при обычной работе отключать?
Аватара пользователя
finsoftrz
✯ Ветеран ✯
Сообщения: 4561
Зарегистрирован: 06 Ноябрь 2014, 12:48
Благодарил (а): 6 раз
Поблагодарили: 34 раза

DFD, CacheTPSABC - не понял

Сообщение finsoftrz »

Ну, так я написал, что речь была про сопровождение, про обычную работу не помню уже. Потом, дело было давно. Другая аппаратная база. Другой sql сервер. Сами знаете, что ms sql сейчас не такой, каким был с этим же названием в начале нулевых. MS принципиально переработало его, сделав, по сути, новый продукт. И приложение, про которое был разговор, работало с большими объемами данных. Какими, не знаю, но до него и на других площадках в то же время использовали ibm mainframe. Разработчики под мэйнфреймы тогда пренебрежительно относились к "pc", считая, что это все не серьезно. Но потом стали уходить на пенсии и встал вопрос с поддержкой работавшего софта. Как раз и был вариант на замену, сделанный на базе ms sql (трехзвенка с сервером приложений).
C6/C11, ШВС, tps/btrieve.
kreator
✯ Ветеран ✯
Сообщения: 4960
Зарегистрирован: 28 Май 2009, 15:54
Откуда: Москва
Благодарил (а): 6 раз
Поблагодарили: 19 раз

DFD, CacheTPSABC - не понял

Сообщение kreator »

Все SQL имеют возможность сделать объект "неактивным", триггер, констрэйт, индекс, даже первичный ключ. Гибкая система. Согласен с Рафаэлем, это нужно для манипулирования данных в исключительных случаях. В боевой работе не применяется.
finsoftrz писал(а): 22 Май 2019, 18:03 Если говорить теоретически, то легко.
Теоретически всё хорошо. Можно написать шаблоны, функции, правильное кэширование... Только никто этого не делает. Просто не нужно.
We are hard at work… for you. :)
Аватара пользователя
finsoftrz
✯ Ветеран ✯
Сообщения: 4561
Зарегистрирован: 06 Ноябрь 2014, 12:48
Благодарил (а): 6 раз
Поблагодарили: 34 раза

DFD, CacheTPSABC - не понял

Сообщение finsoftrz »

Кому надо было, давно все написали.
А по поводу того, что и когда применяется... Ну, запустите базу в десяток терабайт на компе домашней комплектации и расскажите, что получится. Все в сравнении познается.
Сейчас есть избалованность дешевыми ресурсами. Пока база маленькая и логика работы простая, никто ни о чем не задумывается. И думают, что у всех так и всегда так.
C6/C11, ШВС, tps/btrieve.
kreator
✯ Ветеран ✯
Сообщения: 4960
Зарегистрирован: 28 Май 2009, 15:54
Откуда: Москва
Благодарил (а): 6 раз
Поблагодарили: 19 раз

DFD, CacheTPSABC - не понял

Сообщение kreator »

Какие ещё десять терабайт на домашнем компе? О чём Вы?
We are hard at work… for you. :)
Аватара пользователя
finsoftrz
✯ Ветеран ✯
Сообщения: 4561
Зарегистрирован: 06 Ноябрь 2014, 12:48
Благодарил (а): 6 раз
Поблагодарили: 34 раза

DFD, CacheTPSABC - не понял

Сообщение finsoftrz »

Вот про это: "В боевой работе не применяется." Вот я и предложил смоделировать ситуацию, чтобы Вы вышли за рамки стереотипов, основанных на работе с определенного типа приложениями.
C6/C11, ШВС, tps/btrieve.
Аватара пользователя
finsoftrz
✯ Ветеран ✯
Сообщения: 4561
Зарегистрирован: 06 Ноябрь 2014, 12:48
Благодарил (а): 6 раз
Поблагодарили: 34 раза

DFD, CacheTPSABC - не понял

Сообщение finsoftrz »

10 тб я загнул. Ну, сколько там диск позволяет... :-)
C6/C11, ШВС, tps/btrieve.
kreator
✯ Ветеран ✯
Сообщения: 4960
Зарегистрирован: 28 Май 2009, 15:54
Откуда: Москва
Благодарил (а): 6 раз
Поблагодарили: 19 раз

DFD, CacheTPSABC - не понял

Сообщение kreator »

Реально терабайты данными не набрать. Если только хранить в базе видео в хорошем разрешении. Но это Блобы. А что моделировать? У нас сейчас несколько таблиц перевалили за 5 миллионов записей. И это не логи. Вся база чуть-больше 6 Гиг. Растёт примерно по Гигу в год. Вся запихивается в оперативку. ФБ не замечает этих миллионов. Оптимизация запросов нужна, не спорю. И каким боком констрэйты к терабайтам?
finsoftrz писал(а): 23 Май 2019, 13:32 10 тб я загнул. Ну, сколько там диск позволяет... :-)
Диск столько позволяет.
We are hard at work… for you. :)
kreator
✯ Ветеран ✯
Сообщения: 4960
Зарегистрирован: 28 Май 2009, 15:54
Откуда: Москва
Благодарил (а): 6 раз
Поблагодарили: 19 раз

DFD, CacheTPSABC - не понял

Сообщение kreator »

Можно для дома прикупить вот это - https://www.lacie.com/gb/en/products/bi ... derbolt-2/. И попробовать поработать с базой 40Тб. Железо - не проблема. Где данные взять для таких объёмов?
We are hard at work… for you. :)
Аватара пользователя
finsoftrz
✯ Ветеран ✯
Сообщения: 4561
Зарегистрирован: 06 Ноябрь 2014, 12:48
Благодарил (а): 6 раз
Поблагодарили: 34 раза

DFD, CacheTPSABC - не понял

Сообщение finsoftrz »

Это у Вас скромная база. Я сейчас глянул самую большую базу под Купцом - ~17 миллионов записей, 2.6 гб в таблице товародвижений (это 2 физических файла). Все спокойно работает на tps. Вся база раза в 3 больше, если не считать логи. Всего таблиц 93 используемых из 242 в проекте.

Терабайты можно сгенерить. Мы говорили о констрейнах и триггерах. Они, как я понимаю, влияют на скорость массовых изменений в базе данных. Еще один аспект - работа в трехзвенной архитектуре. По ряду причин может оказаться выгоднее все проверки делать на сервере приложений.
На терабайтах должны вылезти разные нюансы, которые не заметны на небольших базах с простой логикой работы. Сами понимаете, что sql сервера имеют определенный кпд, то есть часть производимой работы происходит вхолостую. Если база достаточно большая, то можно заметить и понять, что и как работает на самом деле. Хотя это вопрос больше теоретический, так как в реальной жизни при наших реальных задачах и при нынешних мощностях аппаратной базы все это пополам...
C6/C11, ШВС, tps/btrieve.
kreator
✯ Ветеран ✯
Сообщения: 4960
Зарегистрирован: 28 Май 2009, 15:54
Откуда: Москва
Благодарил (а): 6 раз
Поблагодарили: 19 раз

DFD, CacheTPSABC - не понял

Сообщение kreator »

К сожалению в tps нет поля varchar. Поэтому ожидается - таблица в tps будет занимать больше места, чем в SQL. Может ещё и упаковка какая есть, не скажу, не знаю.
We are hard at work… for you. :)
Аватара пользователя
finsoftrz
✯ Ветеран ✯
Сообщения: 4561
Зарегистрирован: 06 Ноябрь 2014, 12:48
Благодарил (а): 6 раз
Поблагодарили: 34 раза

DFD, CacheTPSABC - не понял

Сообщение finsoftrz »

Я думал, что кларионисты это все знают... В tps всегда записи переменной длины. Информация автоматически упаковывается. Насколько помню, числовые данные в 2 раза относительно места в оперативной памяти. Строки значительно больше, зависит от содержимого. Архиваторы практически не жмут tps, где-то в пределах 10%.

В actian zen можно использовать записи как фиксированной длины, так и переменной. Это определяется опцией при создании таблицы. В доке написано, что при записях с фиксированной длиной скорость работы выше.

В sql серверах, скорее всего, тоже должна быть настройка на этот счет. По дефолту оптимизируется на скорость работы. Поэтому по сравнению с tps, размер одних и тех же данных в sql серверах получался в несколько раз больше (у меня на тестах порядка 8 раз давало).
C6/C11, ШВС, tps/btrieve.
gopstop2007
✯ Ветеран ✯
Сообщения: 1702
Зарегистрирован: 25 Март 2009, 21:55
Благодарил (а): 9 раз
Поблагодарили: 4 раза

DFD, CacheTPSABC - не понял

Сообщение gopstop2007 »

kreator писал(а): 23 Май 2019, 15:43 К сожалению в tps нет поля varchar.
а чем CSTRING плох?
“Есть всего 2 типа языков: те, на которые все жалуются и те, которыми никто не пользуется.” — Бьерн Страуструп
Ответить