|
|
|
Помогите определиться с реализацией досутпа к удаленной БД
|
|||
|---|---|---|---|
|
#18+
Добрый день. Есть сервер, на котором расположена MySQL база данных с тремя табличками: 1. Таблица юзеров 2. Подчиненная ей таблица экспериментов. 3. Подчиненная п.2 таблица данных экспериментов. Понадобилось написать десктопный клиент для работы с этой базой. Прямой коннект к MySQL я отметаю из соображений безопасности, а также сложностью разграничения доступа (т.е. каждый юзер должен иметь доступ только к своим записям таблиц 2 и 3, ну итак далее.) Соответственно, я хочу организовать вебсервис на стороне сервера и выдавать данные порциями по запросу. Получается трехзвенная архитектура. Но однако я не совсем понимаю как лучше организовать саму работу с БД на стороне клиента, потому что: 1. Если сразу грузить все записи в память при старте программы, то это плохо потому что записей может быть очень много и при каждом запуске будет все тормозить. (а если еще и соединение с интернетом плохое, то и подавно) 2. Можно грузить записи в отдельном потоке на фоне, но это вариация п.1 с той лишь разницей, что не блокируется интерфейс, пока все грузится. 3. Сделать постраничную разбивку и грузить только то что видно. (Как например в gmail сделано, да и на многих сайтах). Но тут сложность в том, что чтобы прокрутить куда то список, надо 50 раз нажать на кнопку "далее" и т.п. Да и будет все время перезагружать табличку при перелистывании. Ну и другие нюансы, связанные с тем, чтобы определить сколько строк показать на экране. ...И кнопки прокрутки будут место на экране занимать... 4. Можно сделать как в п.1. но грузить в локальную кэш-базу данных. Все будет быстро (кроме первого старта), но возникают вопросы синхронизации в случае, если внесли изменения в базу данных. Непонятно, как синхронизировать таблицу, не скачивая ее заново.... Скажите, как реализуется подобная вещь в других программах и что можно посмотреть по этому поводу? Просто ничего найти никак не могу.... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.02.2012, 15:58 |
|
||
|
Помогите определиться с реализацией досутпа к удаленной БД
|
|||
|---|---|---|---|
|
#18+
MCoderСкажите, как реализуется подобная вещь в других программах и что можно посмотреть по этому поводу? В других программах не мучаясь используют СУБД, позволяющие сделать Row-Level Security. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.02.2012, 16:11 |
|
||
|
Помогите определиться с реализацией досутпа к удаленной БД
|
|||
|---|---|---|---|
|
#18+
MCoder, Присоединяюсь к ответу выше - для разграничения такого рода доступа мускул вам неподходит. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.02.2012, 17:20 |
|
||
|
Помогите определиться с реализацией досутпа к удаленной БД
|
|||
|---|---|---|---|
|
#18+
> каждый юзер должен иметь доступ только к своим записям таблиц 2 и 3, ну итак далее. > но возникают вопросы синхронизации в случае, если внесли изменения в базу данных как-то не клеится ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.02.2012, 18:03 |
|
||
|
Помогите определиться с реализацией досутпа к удаленной БД
|
|||
|---|---|---|---|
|
#18+
Злой Бобр Присоединяюсь к ответу выше - для разграничения такого рода доступа мускул вам неподходит. Почему? RLS на вьюхах вполне реализуется (со своими особенностями и ограничениями). create view my_view as Код: sql 1. 2. 3. 4. MCoder Прямой коннект к MySQL я отметаю из соображений безопасностиА можно сюда эти соображения. MCoder Соответственно, я хочу организовать вебсервис на стороне сервераНе можешь поднять штангу в 100кг? Не вопрос подними штангу 200кг у нее гриф удобнее. MCoder Но однако я не совсем понимаю как лучше организовать саму работу с БД на стороне клиента 3. Сделать постраничную разбивку и грузить только то что видно +1 По хорошему этой рутинной работой должен заниматься грид. MCoder Но тут сложность в том, что чтобы прокрутить куда то список, надо 50 раз нажать на кнопку "далее" и т.п.Тут пользователь сам себе злобный буратино. Надо ужесточать критерии запроса. MCoder .И кнопки прокрутки будут место на экране занимать...Это действительно серьезное возражение. MCoder Непонятно, как синхронизировать таблицу, не скачивая ее зановоА также обеспечить непротиворечивость данных. Ведь оба пользователя скачавших себе по локальной базе будут свято уверены, что их изменения правильные. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.02.2012, 18:30 |
|
||
|
Помогите определиться с реализацией досутпа к удаленной БД
|
|||
|---|---|---|---|
|
#18+
Злой БобрMCoder, Присоединяюсь к ответу выше - для разграничения такого рода доступа мускул вам неподходит. В том-то и дело. А сервак будет под unix системой. Более того, возможно в будущем будет переход на другую БД и сервер. Поэтому я и хочу сделать вебсервис, чтобы не надо было потом клиент переписывать. Кстати, клиент тоже будет под linux. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.02.2012, 19:30 |
|
||
|
Помогите определиться с реализацией досутпа к удаленной БД
|
|||
|---|---|---|---|
|
#18+
koJIo6ok> каждый юзер должен иметь доступ только к своим записям таблиц 2 и 3, ну итак далее. > но возникают вопросы синхронизации в случае, если внесли изменения в базу данных как-то не клеится Проблема только в том, что юзер под своим аккаунтом удалил запись на работе, а потом пришел домой и на домашнем компе ее видит. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.02.2012, 19:31 |
|
||
|
Помогите определиться с реализацией досутпа к удаленной БД
|
|||
|---|---|---|---|
|
#18+
SERG1257Злой Бобр Присоединяюсь к ответу выше - для разграничения такого рода доступа мускул вам неподходит. Почему? RLS на вьюхах вполне реализуется (со своими особенностями и ограничениями). create view my_view as Код: sql 1. 2. 3. 4. SERG1257MCoder Прямой коннект к MySQL я отметаю из соображений безопасностиА можно сюда эти соображения. а. Ну чтобы не знали где все хранится и не пытались ломать. (а могут ведь) б. Как я писал выше, возможен переход на другую БД (уже не с моей стороны) и тогда придется переписывать клиента. SERG1257MCoder Соответственно, я хочу организовать вебсервис на стороне сервераНе можешь поднять штангу в 100кг? Не вопрос подними штангу 200кг у нее гриф удобнее. Если удобнее, то реально можно больше поднять. SERG1257MCoder Но однако я не совсем понимаю как лучше организовать саму работу с БД на стороне клиента 3. Сделать постраничную разбивку и грузить только то что видно +1 По хорошему этой рутинной работой должен заниматься грид. Ну грид это хорошо, но грузить в него все данные при каждом запуске программы ? SERG1257MCoder Но тут сложность в том, что чтобы прокрутить куда то список, надо 50 раз нажать на кнопку "далее" и т.п.Тут пользователь сам себе злобный буратино. Надо ужесточать критерии запроса. Да, планируется быстрый поиск по названию + сортировка. SERG1257MCoder .И кнопки прокрутки будут место на экране занимать...Это действительно серьезное возражение. Реально серьезное, ибо у многих будут экраны 10"-12". Много ли туда влезает ? SERG1257MCoder Непонятно, как синхронизировать таблицу, не скачивая ее зановоА также обеспечить непротиворечивость данных. Ведь оба пользователя скачавших себе по локальной базе будут свято уверены, что их изменения правильные. Нет. Скорее то, что юзер мог дома и на работе вносить изменения в БД. Юзеры не смогу влезать не в свои данные. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.02.2012, 19:42 |
|
||
|
Помогите определиться с реализацией досутпа к удаленной БД
|
|||
|---|---|---|---|
|
#18+
MCoder а. Ну чтобы не знали где все хранится и не пытались ломать. (а могут ведь) б. Как я писал выше, возможен переход на другую БД (уже не с моей стороны) и тогда придется переписывать клиента. А если враги сломают и ваш веб сервер, А если будет переход на другой веб сервер (не с вашей стороны) Значит трехзвенки мало. Надо еще одно звено, а лучше два. MCoder Ну грид это хорошо, но грузить в него все данные при каждом запуске программы ?Перед показом грида покажите окошко поиска. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.02.2012, 20:06 |
|
||
|
Помогите определиться с реализацией досутпа к удаленной БД
|
|||
|---|---|---|---|
|
#18+
SERG1257MCoder а. Ну чтобы не знали где все хранится и не пытались ломать. (а могут ведь) б. Как я писал выше, возможен переход на другую БД (уже не с моей стороны) и тогда придется переписывать клиента. А если враги сломают и ваш веб сервер, А если будет переход на другой веб сервер (не с вашей стороны) Значит трехзвенки мало. Надо еще одно звено, а лучше два. MCoder Ну грид это хорошо, но грузить в него все данные при каждом запуске программы ?Перед показом грида покажите окошко поиска. Если в таблице 10000 записей, то долго юзер будет на окошко смотреть. Вот в чем дело-то. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.02.2012, 20:12 |
|
||
|
Помогите определиться с реализацией досутпа к удаленной БД
|
|||
|---|---|---|---|
|
#18+
MCoder Если в таблице 10000 записей, то долго юзер будет на окошко смотреть. Вот в чем дело-то. Чорд. Так и покажите ему окошко поиска чтобы пользователь явно задал что ему нужно. Заполните ее чем нибудь по умолчанию типа даты от сегодня до неделю назад или еще что нибудь. А если юзер захотел посмотреть на 10000 записей так и показывайте их (используя или постраничный вывод или отложенный фетч) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.02.2012, 21:12 |
|
||
|
Помогите определиться с реализацией досутпа к удаленной БД
|
|||
|---|---|---|---|
|
#18+
SERG1257, Вы имеете в виду как тут ? http://demos.devexpress.com/ASPxGridViewDemos/PagingAndScrolling/VirtualPaging.aspx ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.02.2012, 22:38 |
|
||
|
Помогите определиться с реализацией досутпа к удаленной БД
|
|||
|---|---|---|---|
|
#18+
Я имею в виду, что в двузвенной архитектуре грид может быть достаточно умным, чтобы фетчить отобранные записи по мере необходимости (а не все сразу). Если работать через браузер (где страничка должна быть сначала сформирована на вебсервере) то единственным выходом будет постраничный вывод. В любом случае реальный живой человек не в состоянии просмотреть 10000 записей. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.02.2012, 00:03 |
|
||
|
Помогите определиться с реализацией досутпа к удаленной БД
|
|||
|---|---|---|---|
|
#18+
SERG1257Я имею в виду, что в двузвенной архитектуре грид может быть достаточно умным, чтобы фетчить отобранные записи по мере необходимости (а не все сразу). Ну и в трехзвенной это тоже можно. В моем случае такого грида нет и писать надо самому, что вызывает смешанные чувства :) SERG1257Если работать через браузер (где страничка должна быть сначала сформирована на вебсервере) то единственным выходом будет постраничный вывод. В любом случае реальный живой человек не в состоянии просмотреть 10000 записей. Ну да. Все равно надо что-то конкретное найти. Просто скроллбар в десктопных приложениях удобнее чисто из-за того, что не надо по сто раз жать на кнопки... Кстати, а есть примеры крупных массовых приложений, которые реализуют доступ к удаленной базе ? Ну просто посмотреть как что сделано у других... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.02.2012, 01:04 |
|
||
|
Помогите определиться с реализацией досутпа к удаленной БД
|
|||
|---|---|---|---|
|
#18+
SERG1257Почему? RLS на вьюхах вполне реализуется (со своими особенностями и ограничениями). Я думаю что если б автор пожелал удалять гланды через задний проход, то наверняка не стал бы спрашивать совета. Это к тому что нерешаемых задач несуществует. Вопрос только в том что лучше сделать один раз, пусть и дольше, чем потом переделывать. Потому как потом разбираться в "костылях" будет очень сложно. MCoderВ том-то и дело. А сервак будет под unix системой. Более того, возможно в будущем будет переход на другую БД и сервер. Поэтому я и хочу сделать вебсервис, чтобы не надо было потом клиент переписывать. Кстати, клиент тоже будет под linux. Задача собственно состоит из правильной архитектуры базы, вариантов синхронизации с десктопом, веб приложения для работы с базой. Начните с синхронизации базы. Дальше архитектура и в конце уже сам клиент. Клиент сможет работать как в нете так и с локальной базой (вы ведь на веб все делать будете насколько я понял?). Непытайтесь проглотить все и сразу. Если вам понадобится не только работа с БД но и отчеты - уделите внимание отчетным системам по выбранной БД. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.02.2012, 02:24 |
|
||
|
Помогите определиться с реализацией досутпа к удаленной БД
|
|||
|---|---|---|---|
|
#18+
Злой Бобр Вопрос только в том что лучше сделать один раз, пусть и дольше, чем потом переделывать. Потому как потом разбираться в "костылях" будет очень сложно.А вот не флейма ради, а любопытсва для можете описать как решить эту задачу один раз без костылей. Наверняка будет - покупаем другую СУБД Enterprise редакции и делаем тоже самое (ту же самую security_function или security предикат) только теперь владелец схемы не может обойти нашу защиту, плюс доступны другие плюшки типа аудита. А для простого юзера запрашивающего таблицу из самых разных приложений разницы не будет - он будет видеть только то, что ему разрешено. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.02.2012, 20:06 |
|
||
|
|

start [/forum/topic.php?fid=32&msg=37661816&tid=1541830]: |
0ms |
get settings: |
8ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
147ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
51ms |
get tp. blocked users: |
1ms |
| others: | 207ms |
| total: | 445ms |

| 0 / 0 |
