Модераторы: Akella

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Стартую в Firebird, знаю delphi. Запутался. 
:(
    Опции темы
azcrc
Дата 17.5.2010, 20:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 20
Регистрация: 25.3.2010

Репутация: нет
Всего: 1



Здравствуйте.

Имею ряд вопросов на тему "как правильно" работать с данной БД из делфи, и хочу поинтересоваться у специалистов насчет предпринимаемых шагов в правильную сторону. В правильных командах ещё не работал, опытности нет.

Итак, имеем установленные: Delphi 7, IBExpert, FireBird 2.1
Первое что хотел бы узнать: какие из компонент использовать, и на какие не смотреть (ADO, dbExpress, Interbase,...)
Задача на данном шаге: смотреть и редактировать таблички БД.

В книжках сами знаете, по главам "работа с БД", обычно ограничиваются чисто обзором и накидыванием на форму с просмотром одной таблицы.
PM MAIL   Вверх
Akella
Дата 17.5.2010, 21:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

Репутация: 20
Всего: 329



Можно установить ODBC драйвер для firebird и использовать ADO - криво и медленно.
Можно использовать компоненты interbase. Вполне можно работать, но я не уверен, что компоненты в Delphi 7 будут нормально поддерживать FB 2.1.
Но лучше всего использовать компоненты прямого доступа, например, платные: FibplusAnyDAC, или бесплатные: FreeDACZeosDBO

Я бы порекомендовал FibPlus. Я, можно сказать, не использовал остальные, но фибы - это ВЕСЧЬ!! Русскоязычная поддержка, форум, справка на русском, многочисленные примеры. Поддержка всех версий дельфи. Цена не очень высокая, вполне приемлемая. Все просто и производительность на высоком уровне, как приложения, так и самого разработчика.

Вот ещё информация.
PM MAIL   Вверх
Frees
Дата 17.5.2010, 21:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2233
Регистрация: 2.12.2005
Где: Екатеринбург

Репутация: 1
Всего: 54



Цитата(azcrc @  17.5.2010,  23:22 Найти цитируемый пост)
Итак, имеем установленные: Delphi 7

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

Добавлено через 2 минуты и 19 секунд
ИМХО : и FIB Plius это без вариантов... аналоги можно не рассматривать...


--------------------
Кольцов Виктор Владимирович
PM MAIL ICQ   Вверх
azcrc
Дата 17.5.2010, 21:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 20
Регистрация: 25.3.2010

Репутация: нет
Всего: 1



Я уж пошерстил по интернетам и конечно видел ваши отзывы о FibPlus smile

Открыто несколько окон по 30+ вкладок "по теме" на каждое, а дельных мыслей как подступиться нет.

Ведь если даже и работает, то это не значит, что сделано правильно/рационально и т.п. Вот в этом проблема :( Сейчас ведь уже не эпоха наколенных поделок...

Цитата

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

По заданию так. Оценивать будут видимо специалисты. А я так, самоучка.

former
Спасибо.
Книги уже смотрю, а вот фиб - не положено, к сожалению, наверное.

Это сообщение отредактировал(а) azcrc - 17.5.2010, 21:29
PM MAIL   Вверх
former
Дата 17.5.2010, 21:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


MEMS Expert
***


Профиль
Группа: Завсегдатай
Сообщений: 1166
Регистрация: 1.3.2006
Где: Россия

Репутация: 1
Всего: 17



Цитата(Frees @  17.5.2010,  21:11 Найти цитируемый пост)
а почему бы не взять современную версию, а то переход с семерки на более новые версии будет болезненным...

Может лицензией человек ограничен.
Рекомендую помимо документации Firebird почитать книги:
1. Хелен Борри - Firebird: руководство разработчика баз данных
2. Александр Бондарь - InterBase и Firebird. Практическое руководство для умных пользователей и начинающих разработчиков

Что касается компонентов, конечно FIBPlus. Кстати, кроме официальной документации к компонентам во втором издании есть примеры работы и с IBX, и FIBPlus.

Добавлено через 1 минуту и 50 секунд
Цитата(azcrc @  17.5.2010,  21:20 Найти цитируемый пост)
Открыто несколько окон по 30+ вкладок "по теме" на каждое, а дельных мыслей как подступиться нет.

На сайте разработчика множество примеров и документация на русском.


--------------------
Достаточно снизить уровень мышления, чтобы иные почувствовали почву под ногами.
PM MAIL   Вверх
Akella
Дата 17.5.2010, 22:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

Репутация: 20
Всего: 329



Цитата(azcrc @  17.5.2010,  21:20 Найти цитируемый пост)
фиб - не положено

по какой причине?
PM MAIL   Вверх
azcrc
Дата 17.5.2010, 22:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 20
Регистрация: 25.3.2010

Репутация: нет
Всего: 1



Цитата(Akella @ 17.5.2010,  22:25)
Цитата(azcrc @  17.5.2010,  21:20 Найти цитируемый пост)
фиб - не положено

по какой причине?

По заданию не положено.
PM MAIL   Вверх
Akella
Дата 17.5.2010, 22:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

Репутация: 20
Всего: 329



ну так я и спрашиваю smile 
PM MAIL   Вверх
former
Дата 17.5.2010, 22:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


MEMS Expert
***


Профиль
Группа: Завсегдатай
Сообщений: 1166
Регистрация: 1.3.2006
Где: Россия

Репутация: 1
Всего: 17



Цитата(azcrc @  17.5.2010,  21:20 Найти цитируемый пост)
фиб - не положено

Тогда IBX или ZEOS (или сторонние компоненты нельзя?). Ссылки Akella привел.


--------------------
Достаточно снизить уровень мышления, чтобы иные почувствовали почву под ногами.
PM MAIL   Вверх
Akella
Дата 17.5.2010, 23:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

Репутация: 20
Всего: 329



Почему именно фибы нельзя?
PM MAIL   Вверх
azcrc
Дата 17.5.2010, 23:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 20
Регистрация: 25.3.2010

Репутация: нет
Всего: 1



Использую то, что вкладка "InterBase" пошлет.
Насчет сторонних компонент не уточнял, полагаю, не желательно, т.к. дано по заданию: Д7, огнептиц, и ИБЭксперт.

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

Это сообщение отредактировал(а) azcrc - 17.5.2010, 23:18
PM MAIL   Вверх
Akella
Дата 17.5.2010, 23:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

Репутация: 20
Всего: 329



Цитата(azcrc @  17.5.2010,  20:22 Найти цитируемый пост)
Первое что хотел бы узнать: какие из компонент использовать

И нафиг было спрашивать? Люди тут за тебя ищут, тырнет роют... за такое можно и минус в репу получить
PM MAIL   Вверх
azcrc
Дата 17.5.2010, 23:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 20
Регистрация: 25.3.2010

Репутация: нет
Всего: 1



Извиняюсь, упустил слово "дефолтных" компонент. Виноват.

А в каком случае нужен драйвер и что он собой являет?
Для варианта встроенного огнептица в интернетах советуют поставить IBProvider.
Не разберу, надо мне это или нет, и в каких случаях.

Это сообщение отредактировал(а) azcrc - 17.5.2010, 23:42
PM MAIL   Вверх
Akella
Дата 18.5.2010, 00:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

Репутация: 20
Всего: 329



Цитата(azcrc @  17.5.2010,  23:42 Найти цитируемый пост)
А в каком случае нужен драйвер и что он собой являет?

ну как же, драйвер - это как бы прослойка
игру "испорченный телефон" знаешь?  smile

Добавлено через 55 секунд
Цитата(azcrc @  17.5.2010,  23:42 Найти цитируемый пост)
"дефолтных"

тогда смотри в строну IBX
PM MAIL   Вверх
azcrc
Дата 18.5.2010, 16:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 20
Регистрация: 25.3.2010

Репутация: нет
Всего: 1



Базу сделал, написав скрипт в IBExpert. Кликами создавать не решился smile
Тригеры и генераторы, конечно, не удобно, для автоинкремента :(

Теперь осталось научиться рулить базой из делфи.
Цепляюсь IBDatabase1 так: localhost:C:\FireDB\<моя_база>
Где-то вроде видел, что можно не указывать путь к базе.
Или это только в случае настройки алиаса?
Интересуюсь с целью тащить попроще на другой комп, где тоже огнептиц в поставке сцперсервер.

Это сообщение отредактировал(а) azcrc - 18.5.2010, 16:25
PM MAIL   Вверх
former
Дата 18.5.2010, 18:08 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


MEMS Expert
***


Профиль
Группа: Завсегдатай
Сообщений: 1166
Регистрация: 1.3.2006
Где: Россия

Репутация: 1
Всего: 17



Цитата(azcrc @  18.5.2010,  16:23 Найти цитируемый пост)
Где-то вроде видел, что можно не указывать путь к базе.
Или это только в случае настройки алиаса?
Интересуюсь с целью тащить попроще на другой комп, где тоже огнептиц в поставке сцперсервер.

Все просто. Альяс целесообразно использовать, когда доступ к БД осуществляется по сети, что бы не указывать полный путь к базе. В папке Firebid-да находится файл aliases.conf в котором хранятся альясы. В нем же находится закомментированный пример.
В Хелен Борри в одной из первых глав достаточно подробно расписана работа с альясами. Поэтому рекомендую начать читать книги.


--------------------
Достаточно снизить уровень мышления, чтобы иные почувствовали почву под ногами.
PM MAIL   Вверх
Frees
Дата 18.5.2010, 19:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2233
Регистрация: 2.12.2005
Где: Екатеринбург

Репутация: 1
Всего: 54



Цитата(azcrc @  18.5.2010,  19:23 Найти цитируемый пост)
Где-то вроде видел, что можно не указывать путь к базе.

в папке firebird/aliases.conf  прописываешь алиасы для этого сервера.

алиа заменяет только файл базы и путь до него, сервер всеравно нужно указывать и лучше не localhost а имя компа


Цитата(azcrc @  18.5.2010,  19:23 Найти цитируемый пост)
Интересуюсь с целью тащить попроще на другой комп

весь сакраментальный смысл сервера в том что сервер 1 а клиентов много, зачем вместе с клиентом на другой комп  переносить сервер?

может тебе firebird embedded подойдет?



--------------------
Кольцов Виктор Владимирович
PM MAIL ICQ   Вверх
azcrc
Дата 18.5.2010, 20:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 20
Регистрация: 25.3.2010

Репутация: нет
Всего: 1



Извиняюсь, снова не то сказал.
Тащить прогу надо в контору, у которой огнептиц со своими настройками.
Ещё мне туда тащить sql скрипт, в котором CREATE DATABASE ':C:\FireDB\baza_tratata' и т.д.
И тащить свою прогу, в которой в компоненте прописан тот же путь до базы, что в скрипте.

К embedded присматриваюсь, думаю там несколько хуже чем просто DLL файлы в папку накидать.
А его ещё надо задружить с компонентами вкладки Interbase. Пока не решаюсь, есть другие задачи...
PM MAIL   Вверх
Frees
Дата 19.5.2010, 09:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2233
Регистрация: 2.12.2005
Где: Екатеринбург

Репутация: 1
Всего: 54



Цитата(azcrc @  18.5.2010,  23:28 Найти цитируемый пост)
Тащить прогу надо в контору, у которой огнептиц со своими настройками.

может проще не скрипт создания базы таскать а файл базы рядом с ехе таскать и путь в динамике прописывать 


--------------------
Кольцов Виктор Владимирович
PM MAIL ICQ   Вверх
Akella
Дата 19.5.2010, 13:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

Репутация: 20
Всего: 329



Цитата(azcrc @  18.5.2010,  20:28 Найти цитируемый пост)
К embedded присматриваюсь, думаю там несколько хуже чем просто DLL файлы в папку накидать.
А его ещё надо задружить с компонентами вкладки Interbase. Пока не решаюсь, есть другие задачи... 

ничего сложного

Добавлено через 7 минут и 13 секунд
Принцип такой же, как и с обычным сервером. В том-то и прелесть smile
PM MAIL   Вверх
azcrc
Дата 20.5.2010, 18:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 20
Регистрация: 25.3.2010

Репутация: нет
Всего: 1



Прогу я пишу на вирт.машине, где есть делфи и огнептиц.
Для теста перенес прогу на свой комп, где нет делфи и огнептица.
Заваливается в недопустимую операцию ещё до открытия соединения c БД [.Open]
Соотв., где и что - посмотреть не могу.
Так и должно быть? Как же тогда клиенты работают, если огнептиц, скажем, на другой машие?



upd:
Еmbedded - это действительно просто.
Вопрос про заваливание приложения был из любопытства.
По теме разобрался, благодарю за участие smile

Это сообщение отредактировал(а) azcrc - 21.5.2010, 12:57
PM MAIL   Вверх
Akella
Дата 21.5.2010, 13:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

Репутация: 20
Всего: 329



Цитата(azcrc @  20.5.2010,  18:51 Найти цитируемый пост)
ещё до открытия соединения c БД [.Open]

Почему тогда вопрос здесь задаёшь?


Цитата(azcrc @  20.5.2010,  18:51 Найти цитируемый пост)
Так и должно быть?

т.е. ты считаешь, что когда программа выдаёт ошибки, то это нормально?


Цитата(azcrc @  20.5.2010,  18:51 Найти цитируемый пост)
Как же тогда клиенты работают, если огнептиц, скажем, на другой машие?

Слишком обширная тема для ответа.
Ответ такой: смотря как подключаешься, смотря какой метод. Но, в основном все подключаются через клиентскую библиотеку доступа: gds32.dll, fbclient.dll, fbembedd.dll

Добавлено через 42 секунды
Цитата(azcrc @  20.5.2010,  18:51 Найти цитируемый пост)
Заваливается в недопустимую операцию

Ответ простой. Ошибка в 17ой строке.

Добавлено через 1 минуту и 28 секунд
а, и вот ещё smile
http://forum.vingrad.ru/topic-48020/125.html
PM MAIL   Вверх
azcrc
Дата 22.5.2010, 00:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 20
Регистрация: 25.3.2010

Репутация: нет
Всего: 1



Ну мне показалось странным, что достаточно кинуть на пустую форму какой-нибудь один компонент интербазы (даже без всяких подключений), и прога сразу начнет выполнять недопустимую операцию в непонятном месте на чистом компе.
В импорте бинарника вроде нет никаких особых библиотек.
Да и просто странно.
PM MAIL   Вверх
Akella
Дата 22.5.2010, 18:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

Репутация: 20
Всего: 329



Цитата(azcrc @  22.5.2010,  00:44 Найти цитируемый пост)
достаточно кинуть на пустую форму какой-нибудь один компонент интербазы (даже без всяких подключений), и прога сразу начнет выполнять недопустимую операцию

скинь пример с ошибкой с исходниками и откомпилированный, желательно для D7-D2007
PM MAIL   Вверх
azcrc
Дата 22.5.2010, 22:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 20
Регистрация: 25.3.2010

Репутация: нет
Всего: 1



Вот. Тупо форма с одним компонентом.

На чистом компе выполняет недопустимую операцию (что для делфи не характерно, т.к. ошибки в дельфовых прогах, типа access violation обычно не делают крах приложения).

Присоединённый файл ( Кол-во скачиваний: 6 )
Присоединённый файл  for_Akella.zip 331,22 Kb
PM MAIL   Вверх
azcrc
Дата 23.5.2010, 15:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 20
Регистрация: 25.3.2010

Репутация: нет
Всего: 1



А вы не знаете, это баг огнептица? Случай такой:

Код

recreate table T1(
  ququ   integer default 0
);


и

Код

insert into t1 values(null);


вставляет NULL, а не то, что указано в default.

А если задать поле default 0 not null, то вставить null естественно нельзя. Тогда смысл default, если он не работает?
PM MAIL   Вверх
Frees
Дата 23.5.2010, 20:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2233
Регистрация: 2.12.2005
Где: Екатеринбург

Репутация: 1
Всего: 54



Код

recreate table T1(
  ququ   integer default 0,
  ququ2   integer default 100
);

insert into t1 values(null);

смысл в том что default берется только в том случае если поле не указано в insert


--------------------
Кольцов Виктор Владимирович
PM MAIL ICQ   Вверх
azcrc
Дата 23.5.2010, 22:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 20
Регистрация: 25.3.2010

Репутация: нет
Всего: 1



Как это?
Не уловил что-то...
PM MAIL   Вверх
Akella
Дата 24.5.2010, 15:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

Репутация: 20
Всего: 329



Это же элементарно, Ватсон smile

Добавлено через 1 минуту и 3 секунды
У тебя есть таблица из трёх полей, но в INSERT ты указываешь только ДВА. А третье сервер сам заполнит значением по-умолчанию.
PM MAIL   Вверх
olek68
Дата 16.8.2010, 21:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 14
Регистрация: 16.8.2010

Репутация: нет
Всего: нет



Привет всем!
IBExpert  позволяет делать автоинкрементные поля  без  особых  усилий. Да и  инфы  на  эту тему  достаточно.  А  вот  не  пойму  как  сделать несколько  уникальных  полей  по типу  как  в  Paradox.  Понятно,  что  первичный  ключ  делает  данные  поля  уникальными,   ну   а  если  я   хочу   чтобы  данные  первого поля  +  данные второго не повторялись. Надеюсь,  я  понятно изъясняюсь,…    smile может,  кто  из  знатоков  firebird   мне  подскажет,  как  это  сделать?

PM MAIL   Вверх
Frees
Дата 16.8.2010, 21:39 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2233
Регистрация: 2.12.2005
Где: Екатеринбург

Репутация: 1
Всего: 54



сделай уникальный индекс по 2 полям


--------------------
Кольцов Виктор Владимирович
PM MAIL ICQ   Вверх
olek68
Дата 16.8.2010, 22:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 14
Регистрация: 16.8.2010

Репутация: нет
Всего: нет



А  разве  функция  индекса  не  ускорять сортировку поля. Однако  не  вижу  связи  с  уникальностью  полей.…  Объясните   подробнее…
PM MAIL   Вверх
Frees
Дата 16.8.2010, 22:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2233
Регистрация: 2.12.2005
Где: Екатеринбург

Репутация: 1
Всего: 54



Цитата(olek68 @  17.8.2010,  01:00 Найти цитируемый пост)
А  разве  функция  индекса  не  ускорять сортировку поля

не только...еще как минимум ускорение поиска... и обеспечение уникальности - это уже скорее побочный эффект индекса


--------------------
Кольцов Виктор Владимирович
PM MAIL ICQ   Вверх
olek68
Дата 16.8.2010, 23:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 14
Регистрация: 16.8.2010

Репутация: нет
Всего: нет



В  книге  Фаронова  «Delphi-7 Программирование баз данных” прочёл интересную фразу:
«В  реальной  работе  иногда  возникает  необходимость  вставить в  ту  или  иную  таблицу  БД  сразу  множества  записей.  В этом  случае  можно  временно  отключить  индекс…».   Не  представляю  как  одним  «INSERT INTO…»  можно  вставить несколько  записей!  О  чём  говорил  автор?

Добавлено через 5 минут и 11 секунд
Может он  говорит  о  одной   транзакции? В  которой  целая  туча INSERT?
PM MAIL   Вверх
Deniz
Дата 17.8.2010, 06:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1251
Регистрация: 16.10.2004
Где: Новый Уренгой

Репутация: 22
Всего: 44



Цитата(olek68 @  17.8.2010,  01:01 Найти цитируемый пост)
Может он  говорит  о  одной   транзакции? В  которой  целая  туча INSERT? 
Именно так.


--------------------
"Для того чтобы сделать шаг вперед, достаточно пинка сзади" (с)
PM ICQ   Вверх
Frees
Дата 17.8.2010, 17:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2233
Регистрация: 2.12.2005
Где: Екатеринбург

Репутация: 1
Всего: 54



Цитата(olek68 @  17.8.2010,  02:01 Найти цитируемый пост)
 случае  можно  временно  отключить  индекс…

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

Это сообщение отредактировал(а) Frees - 17.8.2010, 17:11


--------------------
Кольцов Виктор Владимирович
PM MAIL ICQ   Вверх
Deniz
Дата 18.8.2010, 06:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1251
Регистрация: 16.10.2004
Где: Новый Уренгой

Репутация: 22
Всего: 44



Цитата(Frees @  17.8.2010,  19:11 Найти цитируемый пост)
спорный момент
отнюдь, отключение индекса действительно дает выигрыш по времени, но только при больших объемах (10К не в счет).

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


--------------------
"Для того чтобы сделать шаг вперед, достаточно пинка сзади" (с)
PM ICQ   Вверх
Frees
Дата 18.8.2010, 21:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2233
Регистрация: 2.12.2005
Где: Екатеринбург

Репутация: 1
Всего: 54



Цитата(Deniz @  18.8.2010,  09:42 Найти цитируемый пост)
отнюдь,

суммарное время , включая переиндексацию после включения индекса может быть больше!!
или я ошибаюсь? например ситуация когда в таблицу с 10 млн записей добавляем 10 тыс записей?


--------------------
Кольцов Виктор Владимирович
PM MAIL ICQ   Вверх
Deniz
Дата 19.8.2010, 07:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1251
Регистрация: 16.10.2004
Где: Новый Уренгой

Репутация: 22
Всего: 44



Frees, обо всем по порядку:
1. Про удаление большого кол-ва записей из большой таблицы вот статья
2. Про добавление, правда статья сильно старая и немного о другом, но в конце есть вывод:
"Наличие индексов замедляет скорость вставки данных. Более оптимальным по времени может оказаться деактивация индексов, вставка данных, и активация индексов - в сумме эти операции могут занять меньшее время, чем вставка данных с активными индексами."
Оригинал
Если есть другие мнения и источники, прошу предоставить "тынц"


--------------------
"Для того чтобы сделать шаг вперед, достаточно пинка сзади" (с)
PM ICQ   Вверх
Frees
Дата 19.8.2010, 14:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2233
Регистрация: 2.12.2005
Где: Екатеринбург

Репутация: 1
Всего: 54



Цитата(Deniz @  19.8.2010,  10:22 Найти цитируемый пост)
Если есть другие мнения и источники, прошу предоставить "тынц"

тынц нету, то что я писал выше это всеголишь ИМХО





--------------------
Кольцов Виктор Владимирович
PM MAIL ICQ   Вверх
Deniz
Дата 20.8.2010, 06:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1251
Регистрация: 16.10.2004
Где: Новый Уренгой

Репутация: 22
Всего: 44



Frees, да я без наездов  smile 


--------------------
"Для того чтобы сделать шаг вперед, достаточно пинка сзади" (с)
PM ICQ   Вверх
olek68
Дата 22.8.2010, 15:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 14
Регистрация: 16.8.2010

Репутация: нет
Всего: нет



Привет знатокам.
Подскажите, пожалуйста, что входит в комплект «минимальной   клиентской  установки» firebird?  
И  возможно ли  обойтись  без  установки  клиентской  firebird?  Достаточно  ли   подбросить  в 
 каталог  с  клиентской  программой  библиотеки  fbclient.dll  и  gds32.dll .  
Если  нет,  то,  что  еще  нужно  для  нормальной  работы  клиента? 
(В  своей  программе  я  использую  стандартные  компоненты  вкладки  «InterBase» Delphi.)

Это сообщение отредактировал(а) olek68 - 22.8.2010, 16:42
PM MAIL   Вверх
Akella
Дата 22.8.2010, 17:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

Репутация: 20
Всего: 329



Цитата(olek68 @  22.8.2010,  15:19 Найти цитируемый пост)
Подскажите, пожалуйста, что входит в комплект «минимальной   клиентской  установки» firebird?  

fbclient.dll + msvcp71.dll (или msvcr71.dll, точно не помню)

Добавлено через 1 минуту и 29 секунд
Цитата(olek68 @  22.8.2010,  15:19 Найти цитируемый пост)
Достаточно  ли   подбросить  в 
 каталог  с  клиентской  программой  библиотеки  fbclient.dll  и  gds32.dll . 

По идее да, достаточно. fbclient.dll можно переименовать в gds32.dll, т.к. в твоём случае нет возможности указать путь и имя библиотеки доступа.
PM MAIL   Вверх
Deniz
Дата 23.8.2010, 06:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1251
Регистрация: 16.10.2004
Где: Новый Уренгой

Репутация: 22
Всего: 44



olek68, не совсем понятно, что имеется ввиду под 
Цитата(olek68 @  22.8.2010,  17:19 Найти цитируемый пост)
И  возможно ли  обойтись  без  установки  клиентской  firebird?

Далее по правилам форума:
во-первых, новая тема = новый топик
Во-вторых, учимся пользоваться поиском
Вот достаточно полный ответ и след за ним


--------------------
"Для того чтобы сделать шаг вперед, достаточно пинка сзади" (с)
PM ICQ   Вверх
olek68
Дата 26.8.2010, 19:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 14
Регистрация: 16.8.2010

Репутация: нет
Всего: нет



Большое спасибо, за помощь!  Каждый  рас,  когда  обращаюсь  на  сайт  за  подсказкой  к  
специалистам  всегда   получаю   нужную  информацию.
С firebird  работаю  недавно  и  по  привычке  все  запросы  к базе  формирую  с  клиентского 
приложения.  Но  думаю,  может  часть  объемных  запросов  выложить   в  базе   в  «селективных
 процедурах»,  ну  чтобы   снизить  нагрузку  на  сеть.  Может,  подскажете  насколько  необходимо 
 перевести   все  обращения  к  базе  во  внутренние  процедуры?   Или  в  этом  нет  
необходимости.  Может  кто-то   даст  возможность  взглянуть  на  правильно  организованную
  базу.  Не  знаю  насколько  Employee.fdb   можно  брать  за  образец.


Это сообщение отредактировал(а) olek68 - 26.8.2010, 19:57
PM MAIL   Вверх
Deniz
Дата 27.8.2010, 05:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1251
Регистрация: 16.10.2004
Где: Новый Уренгой

Репутация: 22
Всего: 44



Цитата(olek68 @  26.8.2010,  21:54 Найти цитируемый пост)
Но  думаю,  может  часть  объемных  запросов  выложить   в  базе   в  «селективных
 процедурах»,  ну  чтобы   снизить  нагрузку  на  сеть.
Не стоит, нагрузка на сеть снизится минимально, т.е. в пределах погрешность вычисления. Даже если у тебя сильно навороченный запрос, сколько байт он в тексте?
Обычно на процедуры переходят, когда нужно реализовать бизнес логику на сервере или что-то еще, например полное логирование действий, в том числе select.
Цитата(olek68 @  26.8.2010,  21:54 Найти цитируемый пост)
Может  кто-то   даст  возможность  взглянуть  на  правильно  организованную  базу
нет такого понятия. Совсем правильная, это нормализованная БД, но иногда приходится отходить от последних форм нормализации.


--------------------
"Для того чтобы сделать шаг вперед, достаточно пинка сзади" (с)
PM ICQ   Вверх
olek68
Дата 27.8.2010, 06:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 14
Регистрация: 16.8.2010

Репутация: нет
Всего: нет



Спасибо, значит я на правильном пути   smile 
PM MAIL   Вверх
Frees
Дата 27.8.2010, 20:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2233
Регистрация: 2.12.2005
Где: Екатеринбург

Репутация: 1
Всего: 54



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

можно использовать не созраненку а VIEW - полезная вещь в БОЛЬШИХ БД


--------------------
Кольцов Виктор Владимирович
PM MAIL ICQ   Вверх
Akella
Дата 28.8.2010, 11:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

Репутация: 20
Всего: 329



Цитата(Frees @ 27.8.2010,  20:42)
использование сохраненок позволяет отделить логику клиентской части от структуры данных, если меняется структура, нужно переделать только сохраненку, и не трогать клиентское приложение.

можно использовать не созраненку а VIEW - полезная вещь в БОЛЬШИХ БД

не всегда, чаще бывает так, что если меняется структура, о меняется и то, что должен видеть, редактировать пользователь, а значит менять приходится и базу и само приложение :(
PM MAIL   Вверх
TaNK
Дата 24.12.2010, 09:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 669
Регистрация: 29.10.2006
Где: Краснодар

Репутация: нет
Всего: 1



Прочитал данный топик полностью, вы практически все расхваливаете FIBPlus (который умеет работать только с IB/FB), а я пользуюсь компонетами доступа UNIDAC (IB/FB, mySQL, MS SQL, Oracle) - и работать с ним намного проще чем FIBPlus - так в чем по вашему FIBPlus такой замечательный? (я Fib пользовался..не понравилось)  


--------------------

Oracle 11.2.0.3.0
FireBird 1.0-2.5


PM MAIL ICQ   Вверх
Deniz
Дата 24.12.2010, 12:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1251
Регистрация: 16.10.2004
Где: Новый Уренгой

Репутация: 22
Всего: 44



TaNK, а новый топик создать?
Цитата(TaNK @  24.12.2010,  11:19 Найти цитируемый пост)
я Fib пользовался..не понравилось
весьма субъективная оценка.
Разложи по пунктам что конкретно в FIBPlus не понравилось и как это реализовано в UNIDAC.


--------------------
"Для того чтобы сделать шаг вперед, достаточно пинка сзади" (с)
PM ICQ   Вверх
TaNK
Дата 24.12.2010, 13:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 669
Регистрация: 29.10.2006
Где: Краснодар

Репутация: нет
Всего: 1



Deniz - я просто хотел дополнить оинформацию..
как вставляеются данные с помощью FIBPlus
Код


                                 FIB_Self->Append();
                                 FIB_Self->AutoUpdateOptions->UpdateTableName = "Self_info";
                                 FIB_Self->FieldByName("Name")->AsString    = Trim(LEdName->Text);
                                 FIB_Self->FieldByName("adress")->AsString  = Trim(LEdAdress->Text);
                                 FIB_Self->FieldByName("bik")->AsString     = Trim(LEdBik->Text);
                                 FIB_Self->FieldByName("inn")->AsString     = Trim(LEdInn->Text);
                                 FIB_Self->FieldByName("kpp")->AsString     = Trim(LEdKpp->Text);
                                 FIB_Self->FieldByName("ras_sch")->AsString = Trim(LEdRas->Text);
                                 FIB_Self->Post();

как этоже смое происходит в UNIDAC 
Код

UniQuery->SQL->Text = "insert into Gasoline (gas_name) values ('"+ Trim(EName->Text) + "')";
  UniQuery->Execute();

dataset как таковой не нужен, его роль выполняет Query, FIBQuery не умеет выполнять роль датасета

для работы с FIBPlus нужно
1 - FIBDataBase
2- FIBDataSet
3 - Transaction
4 - ограниченность (IB/FB)

для работы UNIDAC
1 - TUniConnection
2 - TQuery
3 - TUniProvider (IB/FB , MS SQL, MySQL, Oracle, DB2, Access, Postgre, SQLite)  



--------------------

Oracle 11.2.0.3.0
FireBird 1.0-2.5


PM MAIL ICQ   Вверх
Frees
Дата 24.12.2010, 13:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2233
Регистрация: 2.12.2005
Где: Екатеринбург

Репутация: 1
Всего: 54



Цитата(TaNK @  24.12.2010,  16:30 Найти цитируемый пост)
как этоже смое происходит в UNIDAC 

а что будет если в EName->Text написать текст ' ' ' ?

Добавлено через 4 минуты и 21 секунду
Цитата(TaNK @  24.12.2010,  16:30 Найти цитируемый пост)
4 - ограниченность (IB/FB)

считаю это плюсом 

UNIDAC может поймать сообщение от firebird  ( POST_EVENT)?

Это сообщение отредактировал(а) Frees - 24.12.2010, 13:55


--------------------
Кольцов Виктор Владимирович
PM MAIL ICQ   Вверх
TaNK
Дата 24.12.2010, 14:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 669
Регистрация: 29.10.2006
Где: Краснодар

Репутация: нет
Всего: 1



UNIDAC это universal а есть еще
ODAC - for Oracle
ну и так далее ,TАlerter присутсвует,  ноловит или нет не знаю...и я как бы не навязываю что это лучше другого, просто как мало кто пользуетя unidac вот и написал чтобы знали.


--------------------

Oracle 11.2.0.3.0
FireBird 1.0-2.5


PM MAIL ICQ   Вверх
Deniz
Дата 24.12.2010, 15:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1251
Регистрация: 16.10.2004
Где: Новый Уренгой

Репутация: 22
Всего: 44



TaNK, FIBPlus разрабатывался под конкретную СУБД и использует все ее возможности.

Цитата(TaNK @  24.12.2010,  15:30 Найти цитируемый пост)
для работы UNIDAC
1 - TUniConnection
2 - TQuery
3 - TUniProvider (IB/FB , MS SQL, MySQL, Oracle, DB2, Access, Postgre, SQLite)
Если для работы с FB в UNIDAC не нужны транзакции(не увидел в посте такого компонента), то нафиг такой подход.
В UNIDAC ты пишешь insert into ... постоянно в коде?  smile 

Цитата(TaNK @  24.12.2010,  15:30 Найти цитируемый пост)
4 - ограниченность (IB/FB)
в данном случае мы обсуждаем не FB/IB а компоненты доступа.
Цитата(TaNK @  24.12.2010,  16:16 Найти цитируемый пост)
просто как мало кто пользуетя unidac вот и написал чтобы знали.
этим постом ты меня (может кого еще) надолго отпугнул от использования компонент UNIDAC.


--------------------
"Для того чтобы сделать шаг вперед, достаточно пинка сзади" (с)
PM ICQ   Вверх
Akella
Дата 24.12.2010, 15:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

Репутация: 20
Всего: 329



Цитата(TaNK @  24.12.2010,  13:30 Найти цитируемый пост)
как вставляеются данные с помощью FIBPlus


Цитата(TaNK @  24.12.2010,  13:30 Найти цитируемый пост)
как этоже смое происходит в UNIDAC 

 smile а что TpFibQuery не может выполнить INSERT???????

Добавлено через 1 минуту и 9 секунд
Цитата(TaNK @  24.12.2010,  13:30 Найти цитируемый пост)
как вставляеются данные с помощью FIBPlus

ещё проще:
pFibDataBASE1.Execute('Insert into ...')

Добавлено через 2 минуты и 3 секунды
Цитата(TaNK @  24.12.2010,  09:19 Найти цитируемый пост)
я Fib пользовался..не понравилось

это не значит, что пользовался правильно  smile 
PM MAIL   Вверх
TaNK
Дата 27.12.2010, 09:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 669
Регистрация: 29.10.2006
Где: Краснодар

Репутация: нет
Всего: 1



Deniz - транзакции присутсвууют

Akella - "это не значит, что пользовался правильно "  - Это субъективно


--------------------

Oracle 11.2.0.3.0
FireBird 1.0-2.5


PM MAIL ICQ   Вверх
Deniz
Дата 27.12.2010, 13:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1251
Регистрация: 16.10.2004
Где: Новый Уренгой

Репутация: 22
Всего: 44



Цитата(TaNK @  27.12.2010,  11:23 Найти цитируемый пост)
Deniz - транзакции присутсвууют
внутри какого-то компонента?


--------------------
"Для того чтобы сделать шаг вперед, достаточно пинка сзади" (с)
PM ICQ   Вверх
TaNK
Дата 27.12.2010, 13:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 669
Регистрация: 29.10.2006
Где: Краснодар

Репутация: нет
Всего: 1



Цитата(Deniz @ 27.12.2010,  13:29)
Цитата(TaNK @  27.12.2010,  11:23 Найти цитируемый пост)
Deniz - транзакции присутсвууют
внутри какого-то компонента?

нет, отдельным компонентом

user posted image
user posted image


--------------------

Oracle 11.2.0.3.0
FireBird 1.0-2.5


PM MAIL ICQ   Вверх
Deniz
Дата 27.12.2010, 14:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1251
Регистрация: 16.10.2004
Где: Новый Уренгой

Репутация: 22
Всего: 44



Цитата(TaNK @  27.12.2010,  15:44 Найти цитируемый пост)
нет, отдельным компонентом
так что же ты не включил его в свой список
Цитата(TaNK @  24.12.2010,  15:30 Найти цитируемый пост)
для работы UNIDAC
1 - TUniConnection
2 - TQuery
3 - TUniProvider (IB/FB , MS SQL, MySQL, Oracle, DB2, Access, Postgre, SQLite)
или TUniTransaction не обязательный? Он для всех СУБД один?
PS: предлагаю закрыть эту тему, мы все же в разделе FireBird, InterBase, и создать новую в Delphi: Базы данных и репортинг по компонентам UNIDAC.


--------------------
"Для того чтобы сделать шаг вперед, достаточно пинка сзади" (с)
PM ICQ   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Interbase"
Alex

Обязательно указание:

1. Версию InterBase (Firebird, Yaffil)

2. Способа доступа (ADO, BDE, IBX и т.д.)

  • КАК ПРАВИЛЬНО ОФОРМИТЬ КОД - ЗДЕСЬ
  • КАК ПРАВИЛЬНО УКАЗАТЬ ТЕКСТ ОШИБКИ - ЗДЕСЬ
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • FAQ раздела лежит здесь!

Если Вам понравилась атмосфера форума, заходите к нам чаще! С Уважением, Akella.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Firebird, Interbase | Следующая тема »


 




[ Время генерации скрипта: 0.2249 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.