Адъ баз данных
Софт1: написан почти целиком мной, заказной: 186 таблиц, 169 хранимых процедур
Софт2: написан мной и ребе белнетмоном, коробочный: 74 таблицы, 40 хранимых процедур
Софт2: написан мной и ребе белнетмоном, коробочный: 74 таблицы, 40 хранимых процедур
no subject
PS Что-то процедур маловато. На клиента логику тянете, лодыри...
no subject
Ну и, при всей моей невменяемости - я СТОЛЬКО бизнес-логики в хранимых процедурах не напишу - отладки нет, курсоров кошерных нет, типов нормальных нет, временные таблицы использовать не получается - отчетные транзакции "только для чтения", а если их сделать пишущими - забытый юзерами отчет начинает мешать сборке мусора, и прочая, и прочая.
В общем, при всех достоинствах FB писать серверную логику на нем сложно.
no subject
есть в IBExpert. Однако я в основном пользуюсь аналогом showmessage только в таблицу лога.
>>курсоров кошерных нет
for select, а сейчас еще появились такие чудные штуки как select from select и execute block
>>типов нормальных нет,
нормальных - это каких?
>>временные таблицы использовать не получается - отчетные транзакции "только для чтения",
>>а если их сделать пишущими - забытый юзерами отчет начинает мешать сборке мусора,
после появления перечисленного в предыдущем пункте надобность в temp table у меня как-то отпала, но таблица времени транзакции мне казалось что должна позволять писать и в RO транзакции..
Перекомпиляция всех процедур - есть такая функция в IBExpert.
Менять тип поля иногда да, бывает сложно...
no subject
2) Курсоры из запроса или хранимой процедуры в клиента вернуть можно? Типы у них с типами запросов совпадают?
3) Нормальные типы - это хотя бы чтобы полиморфные функции можно было делать, туплы объявлять, в общем, как в нормальных языках - как можно больше first class values
4) Во временные таблицы в RO не пишется - валится с исключением. Execute block маловато - я иногда хочу оптимизацию сделать типа "временный список с индексом и поиск по нему".
IBExpert меня как-то напрягает, я предпочитаю isql и скрипты.
no subject
1. Я и в Delphi логгерами не пользуюсь, обычно натыкиваю ShowMessage. Пошаговым отладчиком пользуюсь иногда но радикальной помощи не получается.
2. Я в общем с трудом понимаю что такое "курсоры". В Firebird процедуры селективные, т.е. могут возвращать данные точно так же как и селект из таблицы. Может возвращать как одну строку так и много. Что такое тип запроса и с чем он должен совпадать - не понял.
3. Я пишу на Delphi и с приведенной терминологией не знаком :) Мне типов данных в Firebird хватает полностью, а запихивать какой-нибудь record или класс в базу - нереляционно.
На счет IBExpert - это ты очень зря. Я тоже начинал с isql во времена Interbase 4.2 но тогда IBExpert просто не было. Никто не заставляет юзать все его оглупляторские фишечки но удобство программирования под FB с применением IBE возрастает на порядок.
Категорически рекомендую понасиловать себя с IBExpert - это лучше всяких отладчиков.
no subject
У меня такое ощущение что нет достаточного опыта работы именно с FB.
Рискну привести несколько полезных ссылок:
http://sql.ru/forum/actualtopics.aspx?bid=2
http://ibase.ru/develop.htm
http://www.ibaseforum.ru/
no subject
У меня отчеты (датасеты) работают в контексте транзакции, хотя действительно, можно ее закрывать после формирования.
В общем, ro-транзакция это было когда-то решение проблемы с застреванием OAT и затуплением FB на сборке мусора. Там в базу с десяток сервисов активно складывает данные и изредка были проблемы с этим.
no subject
>>и оные ссылки я перечитывал неоднократно.
Ну я поэтому и написал "рискну". А на sql.ru ты как зарегистрирован?
>>У меня отчеты (датасеты) работают в контексте транзакции, хотя действительно,
>>можно ее закрывать после формирования.
Это такая недоступная мне логика, порочная на мой взгляд, реализована везде - что типа открытый датасет почему-то должен держать активной транзакцию которая эти данные вытащила.
Чего ее держать - любые данные взятые с сервера по определению устаревшие, поэтому держи не держи - один фиг.
Поэтому я датасетами вообще не пользуюсь. У меня свой самопальный буфер, типа ClientDataSet тока он не датасет.
(no subject)
no subject
В частности про кошерность курсоров, типы.
fraks гав sibverk точка ru
no subject
no subject
no subject
no subject
Что может быть лучше толстого слоя? Только два толстых слоя.
Удивляюсь, кстати, почему никто еще не додумался делать три, а то и четыре килограмма вкусного, легкоусвояемого аппликейшн сервера.
Как я понимаю из описания, и не внедряли.
no subject
Т.е., база->ASL->"html-генератор"->броузер
Вот такая вот, понимаешь, загогулина.
На самом деле после бина можно еще раз завернуть в soap и пробежаться еще раз, но в другом месте.
PS Если я и фантазирую, то не очень.
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
no subject
client - application server - transaction monitor - SQL-server
no subject
no subject
no subject
no subject
no subject
Да и базу можно на лету перекурочить как угодно. В случае Оракла, по крайней мере.
(no subject)
no subject
Меньше таскать данных по сетке. Иногда имеет значение.
Можно давать права на процедуры но не на таблицы.
Рефакторинг. Засовываешь логику в процедуру - место с логикой одно, из какого софта бы не коннектился. Если прога работающая с базой не одна - то это удобно.
Контроль за рукоблудством. В процедуре можно проконтролировать вводимые данные.
И прочее, прочее, прочее...
Отсутствие SP в СУБД а равно неиспользование имеющейся возможности сделать SP как правило говорит от недостаточном владении инструментом.
no subject
А вообще это модно счас делать на серверах приложений, которые или там же где СУБД или рядом по гигабитной сетке соединены. На базу никаких доступов - только веб-сервисы и тому подобное.
Вот что в этом печально, так это то, что логика выражаемая трехстрочным sql запросом в обычном языке часто вырождается в адскую хрень.
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
no subject
Структуру таблиц все равно менять приходится. Поменять/добавить SP - ничуть не сложнее.
Вместе с прогой высылается скрипт который производит изменения в базе.
А вот если ты exe новый выслал а заменили не на всех местах - то в случае если в exe зашита логика могут быть расхождения по функционированию.
Забыл, может самое главное :)
Поэтому манипуляции намного лаконичнее.