Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Помогите определиться с реализацией досутпа к удаленной БД / 16 сообщений из 16, страница 1 из 1
14.02.2012, 15:58
    #37661323
MCoder
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите определиться с реализацией досутпа к удаленной БД
Добрый день.

Есть сервер, на котором расположена MySQL база данных с тремя табличками:

1. Таблица юзеров
2. Подчиненная ей таблица экспериментов.
3. Подчиненная п.2 таблица данных экспериментов.

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

Соответственно, я хочу организовать вебсервис на стороне сервера и выдавать данные порциями по запросу. Получается трехзвенная архитектура. Но однако я не совсем понимаю как лучше организовать саму работу с БД на стороне клиента, потому что:

1. Если сразу грузить все записи в память при старте программы, то это плохо потому что записей может быть очень много и при каждом запуске будет все тормозить. (а если еще и соединение с интернетом плохое, то и подавно)

2. Можно грузить записи в отдельном потоке на фоне, но это вариация п.1 с той лишь разницей, что не блокируется интерфейс, пока все грузится.

3. Сделать постраничную разбивку и грузить только то что видно. (Как например в gmail сделано, да и на многих сайтах). Но тут сложность в том, что чтобы прокрутить куда то список, надо 50 раз нажать на кнопку "далее" и т.п. Да и будет все время перезагружать табличку при перелистывании. Ну и другие нюансы, связанные с тем, чтобы определить сколько строк показать на экране. ...И кнопки прокрутки будут место на экране занимать...

4. Можно сделать как в п.1. но грузить в локальную кэш-базу данных. Все будет быстро (кроме первого старта), но возникают вопросы синхронизации в случае, если внесли изменения в базу данных. Непонятно, как синхронизировать таблицу, не скачивая ее заново....

Скажите, как реализуется подобная вещь в других программах и что можно посмотреть по этому поводу? Просто ничего найти никак не могу....
...
Рейтинг: 0 / 0
14.02.2012, 16:11
    #37661343
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите определиться с реализацией досутпа к удаленной БД
MCoderСкажите, как реализуется подобная вещь в других программах и что можно посмотреть по этому
поводу?

В других программах не мучаясь используют СУБД, позволяющие сделать Row-Level Security.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
14.02.2012, 17:20
    #37661524
Злой Бобр
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите определиться с реализацией досутпа к удаленной БД
MCoder,

Присоединяюсь к ответу выше - для разграничения такого рода доступа мускул вам неподходит.
...
Рейтинг: 0 / 0
14.02.2012, 18:03
    #37661639
koJIo6ok
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите определиться с реализацией досутпа к удаленной БД
> каждый юзер должен иметь доступ только к своим записям таблиц 2 и 3, ну итак далее.
> но возникают вопросы синхронизации в случае, если внесли изменения в базу данных
как-то не клеится
...
Рейтинг: 0 / 0
14.02.2012, 18:30
    #37661681
SERG1257
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите определиться с реализацией досутпа к удаленной БД
Злой Бобр Присоединяюсь к ответу выше - для разграничения такого рода доступа мускул вам неподходит. Почему? RLS на вьюхах вполне реализуется (со своими особенностями и ограничениями).
create view my_view as
Код: sql
1.
2.
3.
4.
select * from my_table m
where security_function(SYSTEM_USER,m.дополнительные параметры)=1
grant select on my_view to ordinary_user
revoke select on my_table from ordinary_user



MCoder Прямой коннект к MySQL я отметаю из соображений безопасностиА можно сюда эти соображения.
MCoder Соответственно, я хочу организовать вебсервис на стороне сервераНе можешь поднять штангу в 100кг? Не вопрос подними штангу 200кг у нее гриф удобнее.
MCoder Но однако я не совсем понимаю как лучше организовать саму работу с БД на стороне клиента
3. Сделать постраничную разбивку и грузить только то что видно
+1
По хорошему этой рутинной работой должен заниматься грид.
MCoder Но тут сложность в том, что чтобы прокрутить куда то список, надо 50 раз нажать на кнопку "далее" и т.п.Тут пользователь сам себе злобный буратино. Надо ужесточать критерии запроса.
MCoder .И кнопки прокрутки будут место на экране занимать...Это действительно серьезное возражение.
MCoder Непонятно, как синхронизировать таблицу, не скачивая ее зановоА также обеспечить непротиворечивость данных. Ведь оба пользователя скачавших себе по локальной базе будут свято уверены, что их изменения правильные.
...
Рейтинг: 0 / 0
14.02.2012, 19:30
    #37661765
MCoder
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите определиться с реализацией досутпа к удаленной БД
Злой БобрMCoder,

Присоединяюсь к ответу выше - для разграничения такого рода доступа мускул вам неподходит.

В том-то и дело. А сервак будет под unix системой. Более того, возможно в будущем будет переход на другую БД и сервер. Поэтому я и хочу сделать вебсервис, чтобы не надо было потом клиент переписывать. Кстати, клиент тоже будет под linux.
...
Рейтинг: 0 / 0
14.02.2012, 19:31
    #37661767
MCoder
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите определиться с реализацией досутпа к удаленной БД
koJIo6ok> каждый юзер должен иметь доступ только к своим записям таблиц 2 и 3, ну итак далее.
> но возникают вопросы синхронизации в случае, если внесли изменения в базу данных
как-то не клеится

Проблема только в том, что юзер под своим аккаунтом удалил запись на работе, а потом пришел домой и на домашнем компе ее видит.
...
Рейтинг: 0 / 0
14.02.2012, 19:42
    #37661779
MCoder
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите определиться с реализацией досутпа к удаленной БД
SERG1257Злой Бобр Присоединяюсь к ответу выше - для разграничения такого рода доступа мускул вам неподходит. Почему? RLS на вьюхах вполне реализуется (со своими особенностями и ограничениями).
create view my_view as
Код: sql
1.
2.
3.
4.
select * from my_table m
where security_function(SYSTEM_USER,m.дополнительные параметры)=1
grant select on my_view to ordinary_user
revoke select on my_table from ordinary_user





SERG1257MCoder Прямой коннект к MySQL я отметаю из соображений безопасностиА можно сюда эти соображения.


а. Ну чтобы не знали где все хранится и не пытались ломать. (а могут ведь)
б. Как я писал выше, возможен переход на другую БД (уже не с моей стороны) и тогда придется переписывать клиента.

SERG1257MCoder Соответственно, я хочу организовать вебсервис на стороне сервераНе можешь поднять штангу в 100кг? Не вопрос подними штангу 200кг у нее гриф удобнее.

Если удобнее, то реально можно больше поднять.

SERG1257MCoder Но однако я не совсем понимаю как лучше организовать саму работу с БД на стороне клиента
3. Сделать постраничную разбивку и грузить только то что видно
+1
По хорошему этой рутинной работой должен заниматься грид.

Ну грид это хорошо, но грузить в него все данные при каждом запуске программы ?

SERG1257MCoder Но тут сложность в том, что чтобы прокрутить куда то список, надо 50 раз нажать на кнопку "далее" и т.п.Тут пользователь сам себе злобный буратино. Надо ужесточать критерии запроса.

Да, планируется быстрый поиск по названию + сортировка.

SERG1257MCoder .И кнопки прокрутки будут место на экране занимать...Это действительно серьезное возражение.

Реально серьезное, ибо у многих будут экраны 10"-12". Много ли туда влезает ?

SERG1257MCoder Непонятно, как синхронизировать таблицу, не скачивая ее зановоА также обеспечить непротиворечивость данных. Ведь оба пользователя скачавших себе по локальной базе будут свято уверены, что их изменения правильные.

Нет. Скорее то, что юзер мог дома и на работе вносить изменения в БД. Юзеры не смогу влезать не в свои данные.
...
Рейтинг: 0 / 0
14.02.2012, 20:06
    #37661808
SERG1257
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите определиться с реализацией досутпа к удаленной БД
MCoder а. Ну чтобы не знали где все хранится и не пытались ломать. (а могут ведь)
б. Как я писал выше, возможен переход на другую БД (уже не с моей стороны) и тогда придется переписывать клиента.
А если враги сломают и ваш веб сервер,
А если будет переход на другой веб сервер (не с вашей стороны)
Значит трехзвенки мало. Надо еще одно звено, а лучше два.
MCoder Ну грид это хорошо, но грузить в него все данные при каждом запуске программы ?Перед показом грида покажите окошко поиска.
...
Рейтинг: 0 / 0
14.02.2012, 20:12
    #37661816
MCoder
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите определиться с реализацией досутпа к удаленной БД
SERG1257MCoder а. Ну чтобы не знали где все хранится и не пытались ломать. (а могут ведь)
б. Как я писал выше, возможен переход на другую БД (уже не с моей стороны) и тогда придется переписывать клиента.
А если враги сломают и ваш веб сервер,
А если будет переход на другой веб сервер (не с вашей стороны)
Значит трехзвенки мало. Надо еще одно звено, а лучше два.
MCoder Ну грид это хорошо, но грузить в него все данные при каждом запуске программы ?Перед показом грида покажите окошко поиска.

Если в таблице 10000 записей, то долго юзер будет на окошко смотреть. Вот в чем дело-то.
...
Рейтинг: 0 / 0
14.02.2012, 21:12
    #37661868
SERG1257
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите определиться с реализацией досутпа к удаленной БД
MCoder Если в таблице 10000 записей, то долго юзер будет на окошко смотреть. Вот в чем дело-то. Чорд. Так и покажите ему окошко поиска чтобы пользователь явно задал что ему нужно. Заполните ее чем нибудь по умолчанию типа даты от сегодня до неделю назад или еще что нибудь. А если юзер захотел посмотреть на 10000 записей так и показывайте их (используя или постраничный вывод или отложенный фетч)
...
Рейтинг: 0 / 0
14.02.2012, 22:38
    #37661970
MCoder
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите определиться с реализацией досутпа к удаленной БД
SERG1257,

Вы имеете в виду как тут ?

http://demos.devexpress.com/ASPxGridViewDemos/PagingAndScrolling/VirtualPaging.aspx
...
Рейтинг: 0 / 0
15.02.2012, 00:03
    #37662061
SERG1257
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите определиться с реализацией досутпа к удаленной БД
Я имею в виду, что в двузвенной архитектуре грид может быть достаточно умным, чтобы фетчить отобранные записи по мере необходимости (а не все сразу). Если работать через браузер (где страничка должна быть сначала сформирована на вебсервере) то единственным выходом будет постраничный вывод.
В любом случае реальный живой человек не в состоянии просмотреть 10000 записей.
...
Рейтинг: 0 / 0
15.02.2012, 01:04
    #37662127
MCoder
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите определиться с реализацией досутпа к удаленной БД
SERG1257Я имею в виду, что в двузвенной архитектуре грид может быть достаточно умным, чтобы фетчить отобранные записи по мере необходимости (а не все сразу).

Ну и в трехзвенной это тоже можно. В моем случае такого грида нет и писать надо самому, что вызывает смешанные чувства :)

SERG1257Если работать через браузер (где страничка должна быть сначала сформирована на вебсервере) то единственным выходом будет постраничный вывод.
В любом случае реальный живой человек не в состоянии просмотреть 10000 записей.

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

Кстати, а есть примеры крупных массовых приложений, которые реализуют доступ к удаленной базе ? Ну просто посмотреть как что сделано у других...
...
Рейтинг: 0 / 0
15.02.2012, 02:24
    #37662172
Злой Бобр
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите определиться с реализацией досутпа к удаленной БД
SERG1257Почему? RLS на вьюхах вполне реализуется (со своими особенностями и ограничениями).
Я думаю что если б автор пожелал удалять гланды через задний проход, то наверняка не стал бы спрашивать совета. Это к тому что нерешаемых задач несуществует. Вопрос только в том что лучше сделать один раз, пусть и дольше, чем потом переделывать. Потому как потом разбираться в "костылях" будет очень сложно.
MCoderВ том-то и дело. А сервак будет под unix системой. Более того, возможно в будущем будет переход на другую БД и сервер. Поэтому я и хочу сделать вебсервис, чтобы не надо было потом клиент переписывать. Кстати, клиент тоже будет под linux.
Задача собственно состоит из правильной архитектуры базы, вариантов синхронизации с десктопом, веб приложения для работы с базой. Начните с синхронизации базы. Дальше архитектура и в конце уже сам клиент. Клиент сможет работать как в нете так и с локальной базой (вы ведь на веб все делать будете насколько я понял?). Непытайтесь проглотить все и сразу. Если вам понадобится не только работа с БД но и отчеты - уделите внимание отчетным системам по выбранной БД.
...
Рейтинг: 0 / 0
15.02.2012, 20:06
    #37663928
SERG1257
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите определиться с реализацией досутпа к удаленной БД
Злой Бобр Вопрос только в том что лучше сделать один раз, пусть и дольше, чем потом переделывать. Потому как потом разбираться в "костылях" будет очень сложно.А вот не флейма ради, а любопытсва для можете описать как решить эту задачу один раз без костылей. Наверняка будет - покупаем другую СУБД Enterprise редакции и делаем тоже самое (ту же самую security_function или security предикат) только теперь владелец схемы не может обойти нашу защиту, плюс доступны другие плюшки типа аудита. А для простого юзера запрашивающего таблицу из самых разных приложений разницы не будет - он будет видеть только то, что ему разрешено.
...
Рейтинг: 0 / 0
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Помогите определиться с реализацией досутпа к удаленной БД / 16 сообщений из 16, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]