![]() |
|
|
#1
|
|||
|
|||
|
Здравствуйте!
Сразу прошу прощения за чайниковский вопрос. Задача такова: необходимо создать файл отчёта в Excel-e. Нюанс в том, что в результирующей таблице порядка 50 столбцов и порядка 20 тыс. строк. Вводить данные будут примерно 50 пользователей. У меня под рукой на сети сервер под Linux, на котором развёрнут Oracle - это мне предоставил сисадмин. Я немного почитал документацию. Табличное пространство создать смогу, таблицу туда засунуть тоже смогу, пользователей создать смогу, последующий экспорт в Excel - легко, достаточное количество компьютеров имеется в наличии. Вопрос: когда пол-ста бухгалтеров, экономистов, финансистов компании одновременно подконнектятся к базе и будут вводить каждый свои позиции, какие возможны проблемы? |
|
#2
|
||||
|
||||
|
при правильном подходе никаких.
|
|
#3
|
||||
|
||||
|
Цитата:
а при неправильном их будет великое множество ![]() Just Try |
|
#4
|
||||
|
||||
|
Если все через транзакции будет работать, то тут будет выстраиваться очередь и одновременно два юзверя не смогут менять данные в БД.
|
|
#5
|
||||
|
||||
|
Цитата:
В этом случае правильнее будет селективные транзакции вешать на ReadCommitedReadOnly - эта транзакция всегда стартует подтверждённой, а транзакции на изменение, добавление, удаление реализовывать через хранимые процедуры с параметрами |
|
#6
|
|||
|
|||
|
Я снова извиняюсь - возможно буду говорить глупости. На сервере под Oracle создаётся база. Одновременно в эту базу лезет много народу и каждый вводит информацию. Каждая запись имеет признак вводившего её пользователя, т.е. пользователь имеет право,если потребуется, удалять и редактировать только записи со своим признаком. Что такое транзакции и что такое ReadCommitedReadOnly я ещё пока не знаю, а надо? Без проникновения в тонкости Oracle никак? Я хотел ехать только на технологии ADO из Delphi7, используя компонент ADOQuery.
|
|
#7
|
||||
|
||||
|
Цитата:
ADO не самое лучшее решение доступа к данным в плане быстродействия, я бы посоветовал DevArt ODAC http://www.devart.com/ru/ для доступа к данным и для вывода EhLib http://ehlib.com/RUS/default.htm + ко всему тебе нужно уметь правильно составлять SQL запросы по этому поводу в сети много информации, транзакция это такое существо которое стартует когда ты что-то мутишь с данными, в пределах этой транзакции ты чё-то делаешь после чего ты можешь либо подтвердить транзакцию и данные сохраняться, либо откатить её и вернуть всё на место, у транзакции есть уровни изолированности, типа кто может и что может делать с данными когда чужая транзакция открыта, вот простенькое описание http://oracle-blog.ru/blog/novice/17.html управление транзакциями реализуется на уровне компонентов, у меня допустим данные селектятся используя уже подтверждённые транзакции, тем самым я никому не мешаю, ну и сохраняются с помощью процедур (при правильной структуре) за доли секунд после чего подтверждаю транзакцию и опять же ни кому не мешаю работать. Не знаю как в Oracle но в Firebird/InterBase незавершённые транзакции увеличивают объём хранимых данных и физ. размер БД и тормозят выборку а следовательно и работу персонала |
|
#8
|
||||
|
||||
|
Цитата:
|
|
#9
|
|||
|
|||
|
Большое спасибо за ответы
|