Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Какой вариант лучше ? / 25 сообщений из 41, страница 1 из 2
17.05.2005, 16:44:18
    #33070107
ГенГрум
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Какой вариант лучше ?
Пока я обдумываю клиента для MySql.

Выборка. На сервере 2 таблицы: 1 справочник товаров + 1 таблица товаров.

Варианты
1.Храню обе на сервере. По select получаю свежую версию данных. Минус по сети гоню повторяющиеся данные.(справочник товаров)

2.Храню сервере данные а справочник на клиенте. По select получаю -=не=- свежую версию данных. Обновляю 1 - ... ? в день. Плюс не гоню по сети повторяющиеся данные.(справочник товаров)

Какой вариант лучше ?

если можно напишите ответ и/или скажите где найти ответ на подобные воросы.
...
Рейтинг: 0 / 0
17.05.2005, 17:07:24
    #33070204
Серж-1
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Какой вариант лучше ?
Мона так, при старте клиента делать запрос на сервак и если таблицы разные она сама проверяет то заменяем их.
xcopy "\\server1\data\*.dbf" "c:\full6\data\*.dbf" /c/q/d/e/i/y
...
Рейтинг: 0 / 0
17.05.2005, 17:21:15
    #33070257
ГенГрум
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Какой вариант лучше ?
Ну не очень хороший вариант. Программа запускается в 8:00 а выключается в 17:00. Значит любые изменения не будут видны в течении дня. Вот если запрашивать сервер раз в час, есть ли изменения. Наверно лучше. Может быть да, а может нет.
...
Рейтинг: 0 / 0
17.05.2005, 17:25:35
    #33070276
Vladimir M Sklyar
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Какой вариант лучше ?
Хранить все на сервере, адназначна.

PS почему ты решил разделить ?

Posted via ActualForum NNTP Server 1.2
...
Рейтинг: 0 / 0
17.05.2005, 17:29:56
    #33070294
Andrey Ts
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Какой вариант лучше ?
Там еще много полезного...
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
 VFP Online Documentation
  - Developer's Guide
    - Creating Client/Server Solutions 
...
 Locating Data on the Optimal Platform 
You get maximum performance when you store data and other attributes of your database on the optimal platform. The best platform for a particular element depends on how the element is accessed and updated. For example, you might want to store a local copy of a server table such as a postal code directory that is used as a lookup table, and refresh the local copy only when the back-end table changes.
The following table lists some common application elements and examples of where to locate them for optimal performance.
 Locating Elements by Platform 

Element		Location	Type	Notes

Tables		Local	Local copies of server lookup tables; small, infrequently changed tables	Use a time stamp, if supported by your remote server, to compare and optionally refresh the local table to match any changes to the back-end source table.
	 	Remote 	Large or frequently changing tables	

Rules		Local 	Rules on remote views 	You can use DBSETPROP( ) to store field- and record-level rules on a remote view. Your application can use these local rules to check the validity of data before sending the data to the back-end as an update to remote tables.
		Remote 	Row-level and column-level rules on remote base tables	

Stored proc	Local 	Visual FoxPro stored procedures	
		Remote 	Back-end server stored procedures	Use the SQL pass-through SQLEXEC( ) function to call server stored procedures.

Transactions	Local 	Visual FoxPro transactions	
		Remote	Server transactions	

Triggers	Local views	No triggers on views	
		Remote	Server triggers	

To reduce network traffic during lookups, you can choose to store not only infrequently-changing but also frequently-changing lookup tables locally. For example, you can download your company’s customer list and refresh it only when customer information changes.
To accomplish this, you can program your application to compare the time stamp on the local copy of the table with the time stamp on back-end data (if your remote server supports time stamps) and update the local copy only if the server table has changed. You can also add a command button to your form that forces an immediate download of the table, allowing users to refresh their copy of the local table on demand.
...
Рейтинг: 0 / 0
17.05.2005, 17:36:00
    #33070313
ГенГрум
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Какой вариант лучше ?
Vladimir M Sklyar
Хранить все на сервере, адназначна.
PS почему ты решил разделить ?


Справочник изменяется редко гонять данные постоянно по сети нет смысла. Но при обновлении - обновление должно отобразится быстро.
...
Рейтинг: 0 / 0
17.05.2005, 17:38:48
    #33070323
ГенГрум
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Какой вариант лучше ?
Andrey TsТам еще много полезного...
Код: plaintext
1.
2.
3.
 VFP Online Documentation
  - Developer's Guide
    - Creating Client/Server Solutions 


Там это где ?
...
Рейтинг: 0 / 0
17.05.2005, 17:49:45
    #33070364
Владимир СА
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Какой вариант лучше ?
ГенГрумПока я обдумываю клиента для MySql.
Выборка. На сервере 2 таблицы: 1 справочник товаров + 1 таблица товаров.
Варианты
1.Храню обе на сервере. По select получаю свежую версию данных. Минус по сети гоню повторяющиеся данные.(справочник товаров)
2.Храню сервере данные а справочник на клиенте. По select получаю -=не=- свежую версию данных. Обновляю 1 - ... ? в день. Плюс не гоню по сети повторяющиеся данные.(справочник товаров)
Если рассмотреть вариант 2 и поговорить о минусах.
Сколько клиентов? Пусть два. Кто пополняет справочник? Пусть первый пополнил. Но тогда он пополнит только у себя. И пошла морока. Второй тоже пополнил справочник. Какой справочник брать завтра?
Это пока сейчас у Вас пополняется 1 раз в день, а завтра еще ничего не известно. По моему 1 вариант предпочтительнее.
...
Рейтинг: 0 / 0
18.05.2005, 09:41:41
    #33071137
Andrey Ts
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Какой вариант лучше ?
ГенГрум Andrey TsТам еще много полезного...
Код: plaintext
1.
2.
3.
 VFP Online Documentation
  - Developer's Guide
    - Creating Client/Server Solutions 


Там это где ?
Где в инете - не знаю. У меня лицензионный VFP5 c этой документацией (v 1.0) на CD
...
Рейтинг: 0 / 0
18.05.2005, 09:48:12
    #33071160
ГенГрум
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Какой вариант лучше ?
Владимир САЕсли рассмотреть вариант 2 и поговорить о минусах.
Сколько клиентов? Пусть два. Кто пополняет справочник? Пусть первый пополнил. Но тогда он пополнит только у себя. И пошла морока. Второй тоже пополнил справочник. Какой справочник брать завтра?
Это пока сейчас у Вас пополняется 1 раз в день, а завтра еще ничего не известно. По моему 1 вариант предпочтительнее.

Пусть первый пополнил.
Он же сразу запищет на сервер. Вопрос в том когда брать. Например когда в локальном справочнике нет данных - брать сразу. Иначе раз в час или день.
...
Рейтинг: 0 / 0
18.05.2005, 09:51:22
    #33071166
ГенГрум
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Какой вариант лучше ?
Andrey Ts Где в инете - не знаю. У меня лицензионный VFP5 c этой документацией (v 1.0) на CD
Вы имеете ввиду MSDN ? Справка которая постовляется с фоксом ?
...
Рейтинг: 0 / 0
18.05.2005, 10:03:59
    #33071211
PaulWist
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Какой вариант лучше ?
На мой взгляд обе предложнные идеологии имеют право на существование, надо только определиться для каких задач использовать конкретный подход.

Вариант 1 подходит для рабочих мест с периодическим циклом работы (например с 9.00 до 18.00).

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

По поводу таскания всего справочника на клиента при первом варианте, здесь надо изменить идеологию приложения, те на клиенте формируется запрос с определенными условиями выборки (например накладные за промежуток времени), в форме нам товары пока не нужны, затем пользователь хотел посмотреть что в конкретной накладной бралось (формируем инструкцию серверу собрать отгрузку по этой накладной в выборку и отдать клиенту, как видим справочник товаров был подцеплен на сервере и на клиенте получен только результат).
...
Рейтинг: 0 / 0
18.05.2005, 10:08:40
    #33071224
Andrey Ts
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Какой вариант лучше ?
ГенГрум Andrey Ts Где в инете - не знаю. У меня лицензионный VFP5 c этой документацией (v 1.0) на CD
Вы имеете ввиду MSDN ? Справка которая постовляется с фоксом ?
Это не просто справка типа HLP. Это еще 130 МБ разной информации для пользователя, разработчика, и кучи еще всякого. Может она и входит в MSDN, я не знаю
...
Рейтинг: 0 / 0
18.05.2005, 10:13:16
    #33071241
Andrey Ts
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Какой вариант лучше ?
Так она выглядит:
...
Рейтинг: 0 / 0
18.05.2005, 10:39:27
    #33071326
ГенГрум
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Какой вариант лучше ?
Спасибо Andrey Ts попробую найти в инете.
...
Рейтинг: 0 / 0
18.05.2005, 10:46:50
    #33071361
ГенГрум
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Какой вариант лучше ?
PaulWist
По поводу таскания всего справочника на клиента при первом варианте, здесь надо изменить идеологию приложения, те на клиенте формируется запрос с определенными условиями выборки (например накладные за промежуток времени), в форме нам товары пока не нужны, затем пользователь хотел посмотреть что в конкретной накладной бралось (формируем инструкцию серверу собрать отгрузку по этой накладной в выборку и отдать клиенту, как видим справочник товаров был подцеплен на сервере и на клиенте получен только результат).

Вопрос возник не спроста. Например в первом варианте получим наименование (charter 50 ) количество (int)(4) х 1000 строк. Лишняя информация 50*1000=50 000 байт по сравнению со вторым вариантом. Недостаток второго варианта мы можем получить пустые наименования для новых товаров.
...
Рейтинг: 0 / 0
18.05.2005, 11:25:53
    #33071505
nfp
nfp
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Какой вариант лучше ?
Я не работал с клиент- серверными приложениями , поэтому не ругаете если мое предложение не подойдет.
А может есть такая возможность перед обращением к справочнику сравнить время последнего изменения справочника на клиенте и на сервере и если сервер обновлялся позднее ,то сначала скинуть новые данные, а затем продолжить работу?
...
Рейтинг: 0 / 0
18.05.2005, 11:33:20
    #33071530
ГенГрум
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Какой вариант лучше ?
nfpЯ не работал с клиент- серверными приложениями , поэтому не ругаете если мое предложение не подойдет.
А может есть такая возможность перед обращением к справочнику сравнить время последнего изменения справочника на клиенте и на сервере и если сервер обновлялся позднее ,то сначала скинуть новые данные, а затем продолжить работу?

Наверное это лучший вариант, но немного неудобно делать 2 запроса вместо одного. 1 запрос - есть ли изменения. 2 сам запрос.
...
Рейтинг: 0 / 0
18.05.2005, 11:39:35
    #33071550
PaulWist
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Какой вариант лучше ?
ГенГрум PaulWist
По поводу таскания всего справочника на клиента при первом варианте, здесь надо изменить идеологию приложения, те на клиенте формируется запрос с определенными условиями выборки (например накладные за промежуток времени), в форме нам товары пока не нужны, затем пользователь хотел посмотреть что в конкретной накладной бралось (формируем инструкцию серверу собрать отгрузку по этой накладной в выборку и отдать клиенту, как видим справочник товаров был подцеплен на сервере и на клиенте получен только результат).

Вопрос возник не спроста. Например в первом варианте получим наименование (charter 50 ) количество (int)(4) х 1000 строк. Лишняя информация 50*1000=50 000 байт по сравнению со вторым вариантом. Недостаток второго варианта мы можем получить пустые наименования для новых товаров.

Наверное я плохо написал.

Ответьте на такой вопрос для какой цели тащить на клиента всь справочник в 1000 строк если необходимо показать 20 товаров. Вы конечно можете возразить - дык у меня выписывается 500 документов и в каждом по 20 товаров, тогда считаем 500*20 = 1000 строк надо перегнать из справочника и это равносильно одной загрузке всего справочника в начале дня, а если надо обновить справочник на клиенте 3 раза в день, тогда получается, что эквивалент документов должен быть равен 1500 документов. Мы взяли с Вами тестовый пример с 1000 строками справочника, а на самом деле этих строк может быть значительно больше, те выигрыш даже здесь уже илюзорен, на самом деле к справочнику продукции должны существовать справочники дополнительных измерений, которые в Вашем случае тоже должны тащиться на клиента.

Вот такие на первый взгляд соображения.
...
Рейтинг: 0 / 0
18.05.2005, 12:22:31
    #33071693
ГенГрум
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Какой вариант лучше ?
PaulWist
Наверное я плохо написал.

Ответьте на такой вопрос для какой цели тащить на клиента всь справочник в 1000 строк если необходимо показать 20 товаров. Вы конечно можете возразить - дык у меня выписывается 500 документов и в каждом по 20 товаров, тогда считаем 500*20 = 1000 строк надо перегнать из справочника и это равносильно одной загрузке всего справочника в начале дня, а если надо обновить справочник на клиенте 3 раза в день, тогда получается, что эквивалент документов должен быть равен 1500 документов. Мы взяли с Вами тестовый пример с 1000 строками справочника, а на самом деле этих строк может быть значительно больше, те выигрыш даже здесь уже илюзорен, на самом деле к справочнику продукции должны существовать справочники дополнительных измерений, которые в Вашем случае тоже должны тащиться на клиента.

Вот такие на первый взгляд соображения.

Наверное я не правельно пояснил задачу.
1 вариант

Код: plaintext
1.
сервер
select spr.name,data.count form spr,data where spr.id=data.id into cursor Rez

например получим 1000 строк где наименование (spr.name = charter 50 ) количество (data.count = int)(4) х 1000 строк. Лишняя информация 50*1000=50 000 байт. На даннном запросе.

2 вариант
Код: plaintext
1.
2.
3.
4.
сервер
select data.id,data.count form spr,data where spr.id=data.id into cursor RezA
клиент
select SprLocal.name,RezA.count form SprLocal,RezA where SprLocal.id=RezA.id into cursor Rez
Выигрыш меньше информации по сети. Недостаток - могут быть накладки с версией справочника. Можно ввести просмотр обновлений раз в час.

3 вариант
Код: plaintext
1.
2.
3.
4.
5.
6.
сервер
 1 .запрос к справочнику изменений есть ли изменения.
 2 .если есть то запросить справочник
 3 .select data.id,data.count form spr,data where spr.id=data.id into cursor RezA
клиент
select SprLocal.name,RezA.count form SprLocal,RezA where SprLocal.id=RezA.id into cursor Rez
Средний вариант между 1 и 2. Наверное он лучший. Все команды на фоксе. Переводить на раз еще не могу. Если есть предложения прошу ...
...
Рейтинг: 0 / 0
18.05.2005, 12:29:45
    #33071715
ГенГрум
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Какой вариант лучше ?
простите вместо
Код: plaintext
form
читать
Код: plaintext
from
...
Рейтинг: 0 / 0
18.05.2005, 12:53:45
    #33071792
PaulWist
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Какой вариант лучше ?
Ага, стало понятнее.

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

Те все предложенные варианты реализуемы, в конечном итоге выбор остается за Вами.

Думаю ребята укажут на другие тонкие моменты (нарушение парадигмы к-с итд...)
...
Рейтинг: 0 / 0
18.05.2005, 13:29:12
    #33071942
ГенГрум
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Какой вариант лучше ?
PaulWistАга, стало понятнее.

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

Те все предложенные варианты реализуемы, в конечном итоге выбор остается за Вами.

Думаю ребята укажут на другие тонкие моменты (нарушение парадигмы к-с итд...)

Но если создать класс(может быть прогу) , то не надо создавать отдельный проект. При обращении к классу (или prg) указывать, что надо проверить на сервере. Пишется 1 раз - работает всегда.
...
Рейтинг: 0 / 0
18.05.2005, 13:44:49
    #33072007
PaulWist
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Какой вариант лучше ?
Вы меня немного не поняли, конечно для реализации такого функционала надо создать класс + ХП на сервере + обработчик ошибок + алгоритмы выхода из тупиковых ситуаций. Говоря о двойном проекте я имел ввиду, что кода будет написано как на 2 проекта.

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

PS я не настаиваю на своем мнении, но похожую задачу приходилось делать она была осложнена ещё и возможностью работы в локальном режиме при обрыве сети или недоступности сервера, но это была узко специфичная задача с загрузками, синхронизацией данных итп.
...
Рейтинг: 0 / 0
18.05.2005, 14:12:47
    #33072140
ГенГрум
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Какой вариант лучше ?
В начале я написал что обдумываю клиента для MySqlЭто только идеалогия построения. Естественное она распространяется на все данные. Идея в том , что бы хранить на сервере всю информацию + на клиенте все справочники и обновлять по мере необходимости. А вот необходимость - когда она наступает?
...
Рейтинг: 0 / 0
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Какой вариант лучше ? / 25 сообщений из 41, страница 1 из 2
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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