Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2013.03.22;
Скачать: CL | DM;

Вниз

Выбор БД   Найти похожие ветки 

 
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;
Скачать: CL | DM;

Наверх




Память: 0.53 MB
Время: 0.052 c
2-1331367948
niro---
2012-03-10 12:25
2013.03.22
Заставить работать TWebBrowser в потоке из DLL


15-1352449269
tur0k_mag
2012-11-09 12:21
2013.03.22
cxTreeList + поле типа Combobox


15-1350457839
pasha_golub
2012-10-17 11:10
2013.03.22
Течет память. Кто виноват и что делать?


15-1349867018
stas
2012-10-10 15:03
2013.03.22
Изменить charset


15-1346782032
vuk
2012-09-04 22:07
2013.03.22
Плавали по морю мимо Кольского