Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2008.11.23;
Скачать: [xml.tar.bz2];

Вниз

Вопросы надежности при частом создании/ удалении таблиц   Найти похожие ветки 

 
IgorBet   (2008-04-30 11:32) [0]

Доброго дня, коллеги.

Имеем базу под СУБД Firebird 1.5.4. Часто возникает необходимость получить НД из таблиц, отсутствующими в базе, например, для вывода отчетов, редактирования. Допустим, возьмем следующий вариант: при каждом выпуске отчета в базе данных создается таблица, в нее закачиваются некий объем данных, формируется выборка. После формирования отчета таблица уничтожается.

Чем плох данный вариант ?


 
Ega23 ©   (2008-04-30 11:35) [1]


> Чем плох данный вариант ?


Тем, что при многопользовательском доступе нужно очень аккуратно отслеживать имя таблицы. А то получится, что 2 пользователя разом пытаются создать (удалить) одну и ту же таблицу.


 
sniknik ©   (2008-04-30 11:48) [2]

а временные таблицы типа mssql-ых есть? хотя даже если и есть, для отчетов наверное лучше датасеты в памяти использовать.


 
Ega23 ©   (2008-04-30 11:55) [3]


> а временные таблицы типа mssql-ых есть?


Я аналог искал, но не нашёл. Может плохо искал (я с FB не сильно плотно работал. Так, по-мелочи...)


 
Johnmen ©   (2008-04-30 12:01) [4]


> Чем плох данный вариант ?

Всем плох во всех смыслах.


 
Sergey13 ©   (2008-04-30 12:03) [5]

> [0] IgorBet   (30.04.08 11:32)
> После формирования отчета таблица уничтожается.

1. Зачем? Почему нельзя просто удалить все записи? Новые писать с признаком текущего юзера, для исключения конфликтов при многопользовательской работе.
2. Вообще пересмотреть логику работы. Псевдовременные таблицы (нормальных в ФБ1.5 нет) почти всегда можно исключить.


 
IgorBet   (2008-04-30 12:04) [6]


> Тем, что при многопользовательском доступе нужно очень аккуратно
> отслеживать имя таблицы. А то получится, что 2 пользователя
> разом пытаются создать (удалить) одну и ту же таблицу.


Эта вопрос решаем, т.к. имя таблицы будет содержать имя пользователя, ее создавшего.


> а временные таблицы типа mssql-ых есть?


Временных таблиц нет, вроде они появились только в версии FB2.


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


по каким параметрам лучше ? я интуитивно сам понимаю, что не самый удачный вариант, но как это объяснить ?


 
sniknik ©   (2008-04-30 12:15) [7]

> по каким параметрам лучше ?

> в нее закачиваются некий объем данных, формируется выборка.
закачивается с клиента? (наверняка, т.к. если бы эти данные лежали в таблице на сервере то простой запрос к ним заменил бы "временную" таблицу)
т.е. не будеш вовлекать сервер для чисто локальных действий (формирование отчета).

не нужно думать о разделении по юзерам, хоть и будет с одного компа/юзера несколько коннектов. данные будут "инкапсулированны" в программу(процес) и гарантировано с другими не пересекутся.


 
IgorBet   (2008-04-30 12:21) [8]

2sniknik

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


 
HSolo ©   (2008-04-30 12:40) [9]

ну вот, например:
http://ibase.ru/devinfo/ibfaq.htm#1.62


 
IgorBet   (2008-04-30 12:53) [10]


> http://ibase.ru/devinfo/ibfaq.htm#1.62


Я боюсь, что этот материал уже устарел и для Firebird 1.5.4 не актуален. Тем более, в нем говорится, о максимальном количестве изменений одной таблицы, т.е. одну таблицу можно изменить 255 раз ! Я же планирую создавать с нуля таблицы и потом их уничтожать.


 
IgorBet   (2008-04-30 12:54) [11]

Может быть, стоит написать программу-эксперимент, которая, допустим, последовательно создаст и уничтожит порядка 10000 таблиц ?


 
Ega23 ©   (2008-04-30 13:23) [12]


> Может быть, стоит написать программу-эксперимент, которая,
>  допустим, последовательно создаст и уничтожит порядка 10000
> таблиц ?


СтОит. И запустить её в нескольких экземплярах на одну БД.


 
ANB   (2008-04-30 14:35) [13]


> СтОит. И запустить её в нескольких экземплярах на одну БД.

Причем по несколько копий с разных компов одновременно. И под одним юзером (пользователи часто любят запускать несколько копий одной программы)


 
Ega23 ©   (2008-04-30 14:37) [14]


> Причем по несколько копий с разных компов одновременно.
> И под одним юзером (пользователи часто любят запускать несколько
> копий одной программы)


Само собой.


 
MsGuns ©   (2008-05-01 21:14) [15]

Данные для этой самой "временной" таблицы откуда "закачиваются", из черной дыры ?


 
PEAKTOP ©   (2008-05-02 13:04) [16]

> Я боюсь, что этот материал уже устарел и для Firebird 1.5.4 не актуален

Я как-то в одной публикации, посвященной кросс-табам, привел пример изврата, при помощи которого еще на InterBase 6.0 выходили из положения с невозможностью переменного количества столбцов в хранимой процедуре: на лету создавалась хранимая процедура, строился отчет, а затем эта процедура "грохалась".

Иными словами - игрался я метаданными на лету.

Владислав Хорсун (разработчик Firebird) потом поймал меня в конференции в углу и бил ногами до-о-олго. :)


 
IgorBet   (2008-05-04 10:55) [17]


> Данные для этой самой "временной" таблицы откуда "закачиваются",
>  из черной дыры ?


Перекачиваются из других таблиц.
> Владислав Хорсун (разработчик Firebird) потом поймал меня
> в конференции в углу и бил ногами до-о-олго. :)

Ногами это он потом, а причины он объяснил, почему так не надо ? :)


 
Anatoly Podgoretsky ©   (2008-05-04 13:49) [18]


> Перекачиваются из других таблиц.

Нафига дублируешь данные?


> Ногами это он потом, а причины он объяснил, почему так не
> надо ? :)

Потому что ужас, понятно если бы загонял эти данные в ClientDataset



Страницы: 1 вся ветка

Форум: "Базы";
Текущий архив: 2008.11.23;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.49 MB
Время: 0.005 c
15-1221800134
md10
2008-09-19 08:55
2008.11.23
Дейт - БД


15-1222410770
123-ий
2008-09-26 10:32
2008.11.23
Вопрос по Rad Studio


2-1223964676
vajo
2008-10-14 10:11
2008.11.23
Преобразовать мемо поле в строку.


15-1222264593
Vlad Oshin
2008-09-24 17:56
2008.11.23
Навеяло статьей с КД. Удивительно..


2-1223554453
DJones
2008-10-09 16:14
2008.11.23
Работа с несколькими Combobox - как?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский