Модераторы: LSD, AntonSaburov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Создание распределенных прилоежний 
:(
    Опции темы
CMEX_
Дата 27.2.2003, 16:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 35
Регистрация: 19.7.2002

Репутация: нет
Всего: нет



Привет господа.
Такая вот задача. Нужно скажем сделать распределнный склад. JavaWebStart & Hibernate (Oracle предполагается) в каком-то объеме я уже освоил. Вроде все хорошо, пока у удаленных клиентов есть связь с центальным сервером.
Но вот встает вопрос, если этой связи нет (и будет через две недели предположим), а работать нужно!? Есть у кого-нибуть опыт решиния подобной задачи? Как поступали в этом случае?

Больше всего меня интересует надежность и автономность, пусть даже в ущебр удобству конечных пользователей. Т.е. выезжать к клиентам возмножность есть, но много не наездишься ;(

Задача создать единое информационное пространстро коммерческого холдинга, может кто-нибуть занимаеться подобным? Буду рад подключиться к разработке, или делиться своим (сейчас ничего нет).
PM WWW ICQ   Вверх
AntonSaburov
Дата 27.2.2003, 19:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Штурман
****


Профиль
Группа: Модератор
Сообщений: 5658
Регистрация: 2.7.2002
Где: Санкт-Петербург

Репутация: 51
Всего: 118



В принципе какого-то стандартного решения такой задачи на сегодня я не знаю.
В данной ситуации основная проблема - это проблема целостности данных.

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

Обычно уникальное значение генерится на SQL-сервере (SEQUENCE в ORACLE, IDENTITY в MS SQL). В режиме офлайн такая ситуация должна быть разрешена другим способом.
Например может быть использован алгоритм типа генерации GUID, который использует данные компьютера пользователя.

Но я рассмотрел еще очень просто вариант. Если, например, действие подразумевает изменения количества товара на складе, то здесь все может быть сложнее. Возможно, что в момент последнего подключения товара было достаточно, а после перерыва все сделаные в режиме офлайн изминения уже не могут пройти. Надо делать тогда специальный механизм синхронизации данных с возможностью проверки и исправления.

Вообщем, задачка сама по себе очень интересная. Если найдешь какие-либо материалы по данной тематие - буду признателен, если опубликуешь.

Удачи.
PM MAIL WWW ICQ   Вверх
CMEX_
Дата 27.2.2003, 20:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 35
Регистрация: 19.7.2002

Репутация: нет
Всего: нет



Если будет что опобубликовать, то обязательно ;)

Но меня еще беспокоит вопрос, как в этом случае поступать с базой?! Каждой группе клиентов ставить свою базу, которая будет обслуживать их на момент отсутсвия связи!? Или вообще каждому клиенту ставить базу типа hlsql (pure java)!? И пусть работает со своей базой данных ;)

Вскоре меня заинтересует вопрос о производительности. Если к примеру номенклатура десятски тысяч наименований, можно ли как-нибуть этот справочник кэшировать!?
PM WWW ICQ   Вверх
AntonSaburov
Дата 28.2.2003, 22:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Штурман
****


Профиль
Группа: Модератор
Сообщений: 5658
Регистрация: 2.7.2002
Где: Санкт-Петербург

Репутация: 51
Всего: 118



Цитата
Но меня еще беспокоит вопрос, как в этом случае поступать с базой?! Каждой группе клиентов ставить свою базу, которая будет обслуживать их на момент отсутсвия связи!? Или вообще каждому клиенту ставить базу типа hlsql (pure java)!? И пусть работает со своей базой данных ;)


Здесь уже многое зависит от средства разработки для клиентской части.
В Delphi или в .NET существует механизм сброса данных из буфера на диск в виде файлов. Т.е. можно работать автономно с тем набором, который уже есть. И только потом махом синхронизировать данные с SQL. Но вот тут есть как раз проблемы целостности, о которых я говорил выше.
Руками такое организовать в принципе не сложно - необходимо просто RecordSet (DataSet) или что там еще научить хранить данные локально, загружать их из локальной копии. Ну само собой получать данные с SQL и отправлять изменения. Это действительно немного усилий требует.
Вот и работает пользователь с локальными данными, пока не нажмет заветную кнопочку smile.gif.

Если это связь между офисами "то потухнет, то погаснет", а внутри сети проблем со связью нет, то может стОит подумать о синхронизации SQL-серверов. В данном случае достаточно несложно просто сделать правило, по которому новые ID раздаются по какому-либо правилу, которое позволяет делать их разными для каждого офиса.


Цитата
Вскоре меня заинтересует вопрос о производительности. Если к примеру номенклатура десятски тысяч наименований, можно ли как-нибуть этот справочник кэшировать!?


Это извечная головная боль smile.gif.
Стандартного решения тоже я не встречал. Сам делал следующим образом - организовывал справочник с иерархией, и справочник заполнял постепенно. Обратился пользователь к веточке - ну получи в кэш несколько сотен наименований. Ну и потихонечку копим.

Если данные меняются на сервере, то сервер информирует об изминениях клиента передачей ID удаленных/измененных/добавленных записей. Ну и дальше они синхронизируются. Это небольшой трафик.

Если на клиенте - он посылает изменения на сервер.

Чтобы избежать большого трафика старайся организовывать запросы, которые имеют ограничения в каком-либо виде.

Вообщем-то и все советы, которые сейчас в голову пришли.
PM MAIL WWW ICQ   Вверх
CMEX_
Дата 3.3.2003, 17:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 35
Регистрация: 19.7.2002

Репутация: нет
Всего: нет



Антон, а тебе с каким базами приходилось работать!?
Ты выше говоришь о синхронизации SQL серверов... Этой темы я еще не касался. Почитаем какие возможности есть у Оракла и Вайрбирда (интербейз)
И как в данном случае менять структуру базы? Создавать механизм который будет автоматом запускать какие-то скрипты ;(

Так ява у тебя это не основной профиль?
PM WWW ICQ   Вверх
AntonSaburov
Дата 3.3.2003, 19:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Штурман
****


Профиль
Группа: Модератор
Сообщений: 5658
Регистрация: 2.7.2002
Где: Санкт-Петербург

Репутация: 51
Всего: 118



Достаточно близко мне приходилось работать с
MS SQL Server, ORACLE, Sybase, Interbase (FireBird), SQLBase
Не могу сказать, что знаю про них все, но основные моменты проходил.

По поводу синхронизации серверов - здесь все достаточно серверозависимо.
В основном используется репликация. Которая, повторюсь, очень
серверозависимая. И есть не во всех серверах. Здесь единственное,
что может помочь - это читать документацию. Долго и нудно.
А также пробовать и пробовать.

В основном репликация сводится к тому, что используя механизмы
самого SQL-сервера настраиваются приемник и источник, список таблиц,
которые подлежат репликации и другая информация. После настройки
это все начинает работать. Какие-либо изменения в сами таблицы и
процедуры не вносятся.

У меня основной профиль - построение систем масштаба предприятия.
Я последние 7-8 лет работаю в фирмах, которые занимаются офшорным
программированием, а потому сталкиваться приходится практически со
всем, что появляется новенького. И иметь о каждой технологии представление.
Есть кое-какие предпочтения - JAVA, Delphi, ORACLE, C under Unix - но
это не всегда осуществимо sad.gif

В принципе в той нише, в которой я себя позиционирую требуется именно
такая "широкость" - мне нужно в основном принимать решения по
архитектуре. А про особенности реализации или наличии каких-либо
особенностей либо можно почитать, либо спросить кого biggrin.gif
Тем более, что на самом деле революционных вещей поялвяется не так уж много.
И если ты знаком с самой технологией, то научиться пользоваться новым
инструментом для ее реализации не так уж и долго.

Конечно, скорость разработки в этом случае ниже, чем у узкого специалиста,
но мне зато видно шире biggrin.gif

PM MAIL WWW ICQ   Вверх
CMEX_
Дата 3.3.2003, 19:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 35
Регистрация: 19.7.2002

Репутация: нет
Всего: нет



понятно ;)
PM WWW ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
javastic
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux, javastic.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0581 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.