Форум: "Начинающим";
Текущий архив: 2013.03.22;
Скачать: [xml.tar.bz2];
ВнизВыбор БД Найти похожие ветки
← →
crank (2012-03-10 20:43) [0]Помогите советом с выбором БД.
БД и оболочка к ней будут лежать на сервере. Пользователи (5 пользователй) работают в терминальном режиме.
Сейчас используется Access + оболочка для Delphi. Наткнулся на некоторое количество проблем связанных с обновлением данных: user1 добавил данные, но user2 их не увидит, пока не обновит таблицу. Можно ли это сделать как-то прозрачно? Понятно, что в Delphi однозначно придётся прописывать что-то вроде скрытого Refresh, но от "помощи" со стороны базы (если он возможен) не отказался бы
Добавляют примерно по 10-20 записей в день, т.е. нагрузка очень невелика
В отдалённом будущем хотелось бы связать имеющуюся БД с сайтом фирмы. Изначально планировал такую схему: на сервере стоит MySQL. На сайте прописано делать выборку из базы, хранящейся на сервере. Но сейчас засомневался в необходимости поднимать/устанавливать саму СУБД. В идеале хотелось бы хранения в одной папке и программы и файлов от базы данных... ну и возможности сайта обращаться к базе
← →
DVM © (2012-03-10 21:08) [1]Удалено модератором
Примечание: дубль
← →
DVM © (2012-03-10 21:08) [2]
> Можно ли это сделать как-то прозрачно? Понятно, что в Delphi
> однозначно придётся прописывать что-то вроде скрытого Refresh,
> но от "помощи" со стороны базы (если он возможен) не отказался
> бы
В Firebird вроде бы возможно организовать уведомления. Но все равно стоит подумать, так ли уж нужно.
> Но сейчас засомневался в необходимости поднимать/устанавливать
> саму СУБД. В идеале хотелось бы хранения в одной папке и
> программы и файлов от базы данных...
Рано или поздно все равно придешь к этому. Так что лучше сразу ставь.
← →
pavel_guzhanov © (2012-03-11 13:26) [3]
> В Firebird вроде бы возможно организовать уведомления.
Триггер на любые изменения, выдающий Event. Программа реагирует на этот Event.
> Но все равно стоит подумать, так ли уж нужно.
Да, это точно. Не всегда пользователь будет рад, если он работает с данными, и вдруг они взяли и обновились. Лучше все-таки сделать обновление данных по желанию пользователя.
← →
Jeer © (2012-03-11 15:58) [4]Блокировка объекта (записи/ей), по другому - полный гемморой.
← →
crank (2012-03-12 06:55) [5]
>
> Да, это точно. Не всегда пользователь будет рад, если он
> работает с данными, и вдруг они взяли и обновились. Лучше
> все-таки сделать обновление данных по желанию пользователя.
>
Ну это само собой :)
>
> Рано или поздно все равно придешь к этому. Так что лучше
> сразу ставь.
А в MySQL тоже есть такие триггеры?
← →
sniknik © (2012-03-12 08:05) [6]не дело это серверу командовать клиентом... он их обслуживает, выполняет их запросы, а не управляет.
через инет особенно... MySQL так сложилось делался под web... не думаю что там даже планировали подобное отступление от "классической логики клиент сервера", не то что делать...
← →
crank (2012-03-12 09:40) [7]
> не дело это серверу командовать клиентом... он их обслуживает,
> выполняет их запросы, а не управляет.
Никто не говорит об управлении :) Имеется ввиду информирование... сервер информирует клиента об обновлении
← →
sniknik © (2012-03-12 09:46) [8]> сервер информирует клиента об обновлении
на кой клиенту информация, если она ему пофигу и ничего, он с ней делать не собирается?
мало того, в большинстве случаев он ее и получить то не сможет, ибо занят своими делами, блокирован вводом юзера/модальностью, а то и просто уже не работает...
а в тот момент когда она ему реально нужна ему ничего не стоит ее запросить, и сервер не откажет, ибо его основной смысл ждать подобных запросов.
← →
crank (2012-03-12 09:48) [9]
> Триггер на любые изменения, выдающий Event. Программа реагирует
> на этот Event.
А можете показать простенький пример? ^_^
← →
Anatoly Podgoretsky © (2012-03-12 09:51) [10]Упорный
← →
crank (2012-03-12 09:55) [11]
> а в тот момент когда она ему реально нужна ему ничего не
> стоит ее запросить, и сервер не откажет, ибо его основной
> смысл ждать подобных запросов.
Тогда подскажите примерную логику программы:
User1 добавляет данные
Как User2 узнает, что были добавлены данные? Посылать запрос каждые n-секунд?
По поводу модальности. Модальные окна не планируются (точнее их появление сведено к мнимому)
После упоминания о том, что в Firebird есть что-то подобное представлял себе, что при добавлении записей User"ом1 остальные увидят либо всплывашку, либо информацию в статусбаре о том, что добавлено столько-то новых записей
← →
sniknik © (2012-03-12 10:01) [12]> Как User2 узнает, что были добавлены данные?
начинать следует не этого, а с более раннего - нафига? нафига User2 знать что User1 добавил данные?
← →
Anatoly Podgoretsky © (2012-03-12 10:02) [13]> crank (12.03.2012 09:55:11) [11]
Пользователь сам решит, когда ему обновлять интерфейс.
И проклянет тебя если ты будешь ему мешать работать.
Данное поведение правильно в большинстве приложений, есть некоторая
особенность в диспетчерских приложения, но там где данные не редактируются.
← →
crank (2012-03-12 10:34) [14]
> начинать следует не этого, а с более раннего - нафига? нафига
> User2 знать что User1 добавил данные?
Допустим такую ситуацию: User1 - менеджер. Он принимает заявку на что-то там (выезд к клиенту, подготовка товара и т.п.)
User2 - подчинённый работник. Чем раньше он увидит, что поступила новая заявка, тем быстрее он её обработает
Конечно, менеджер может подойти/позвонить работнику, но если того нет на месте (обед, вызов, перекур, собирает товар на складе и.т.п), то манагеру придётся постоянно бегать и искать работника
После обработки заказа работник ставит галку в нужной записи. Манагер спокоен, что работа выполнена и можно сообщать клиенту
> Пользователь сам решит, когда ему обновлять интерфейс.
> И проклянет тебя если ты будешь ему мешать работать.
Снова скажете, что я упорный, но:
- обновление данных можно сделать опционально
- также обновление можно сделать недоступным при определённых условиях (пользователь редактирует данные)
← →
Anatoly Podgoretsky © (2012-03-12 11:05) [15]> crank (12.03.2012 10:34:14) [14]
Такие задачи решаются не с помощью базы, а специально созданого механизма
оповещения, база здесь совсем не нужна. Более того менеджер не узнает, что
работник увидел заявку, по твоим же словам - выезд к клиенту, подготовка
товара и т.п.
← →
sniknik © (2012-03-12 11:23) [16]> менеджер может подойти/позвонить работнику
или отправить письмо с подтверждением о прочтении.
> но если того нет на месте
то чем поможет "моментальное оповещение", там на далеком от него компьютере? а прийдя в чем проблема посмотреть не было ли чего?
> Манагер спокоен, что работа выполнена и можно сообщать клиенту
так понимаю тот самый "Манагер" это ты? очень уж сильная забота о... бывает только о себе любимом.
p.s. из личного опыта - ни одна задача поставленная чисто "манагером" без обработки техническим специалистом/с личным обсуждением "фейс ту фейс", не была выполнена...
а если какой проект и принимали от них "в чистом виде" то это выливалось в простую потерю времени.
← →
Плохиш © (2012-03-12 12:48) [17]
> В отдалённом будущем хотелось бы связать имеющуюся БД с
> сайтом фирмы. Изначально планировал такую схему: на сервере
> стоит MySQL. На сайте прописано делать выборку из базы,
> хранящейся на сервере. Но сейчас засомневался в необходимости
> поднимать/устанавливать саму СУБД. В идеале хотелось бы
> хранения в одной папке и программы и файлов от базы данных.
> .. ну и возможности сайта обращаться к базе
>
Веб-морде совершенно пофигу кого и кто там на сервере оповещает, пока она данные не попросит, она их и обрабатывать не будет. Т.ч. болтовня в этой ветке не имеет никакого смысла...
← →
crank (2012-03-12 18:32) [18]
> так понимаю тот самый "Манагер" это ты? очень уж сильная
> забота о... бывает только о себе любимом.
Нет... я отношусь к User2 :)
Всем спасибо за подсказки
← →
Anatoly Podgoretsky © (2012-03-12 20:04) [19]А User2 у нас кто.
Секрет - тебе нужна трехзвенка.
← →
crank (2012-03-12 20:47) [20]
> А User2 у нас кто.
Если это вопрос, то ответ в [14]
> User2 - подчинённый работник.
← →
pavel_guzhanov © (2012-03-13 09:33) [21]
> А можете показать простенький пример?
> Упорный
Ну раз такой упорный, то для INTERBASE или FIREBIRD:
Триггер в базе:CREATE OR ALTER TRIGGER #ИМЯ_ТРИГГЕРА# FOR #ИМЯ_ТАБЛИЦЫ#
ACTIVE AFTER INSERT POSITION 0
AS
begin
POST_EVENT "TABLE_CHANGED_14";
end
В программе добавляешь TIBEvents и в его событии EventAlert обрабатываешь полученное сообщение, например, выдаешь сообщение, что изменились данные в таблице и предложение обновить их.
← →
crank (2012-03-13 20:39) [22]Благодарю :)
← →
bash77 © (2012-03-15 14:46) [23]насколько я встрял в задачу (с первых 5 секунд)
я бы сделал:
1.база стопудово MySQL (т.к. одинаково прекрасно работает и под win и под nix) да и оболочек бесплатных клиентских хоть отбавляй.
2.насчет обновлений.... мож конект на сокет (тогда сервер писаный нужен)?
или может трех-звенная архитектрура ?? и че это я сказал (или повторился)... если это реально важно - я бы выбирал CORBA. но прошу учесть - я мог и не понять задачу, 5 суток подряд ложусь спать в 5 утра, и сижу уже работаю в 10
а про IB или FB ничего сказать не могу, не лежит у меня к ним душа, хоть и работаю с ними лет 8
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2013.03.22;
Скачать: [xml.tar.bz2];
Память: 0.51 MB
Время: 0.082 c