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

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

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

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

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

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

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

Posted via ActualForum NNTP Server 1.2
...
Рейтинг: 0 / 0
Какой вариант лучше ?
    #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
Какой вариант лучше ?
    #33070313
Фотография ГенГрум
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Vladimir M Sklyar
Хранить все на сервере, адназначна.
PS почему ты решил разделить ?


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


Там это где ?
...
Рейтинг: 0 / 0
Какой вариант лучше ?
    #33070364
Фотография Владимир СА
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ГенГрумПока я обдумываю клиента для MySql.
Выборка. На сервере 2 таблицы: 1 справочник товаров + 1 таблица товаров.
Варианты
1.Храню обе на сервере. По select получаю свежую версию данных. Минус по сети гоню повторяющиеся данные.(справочник товаров)
2.Храню сервере данные а справочник на клиенте. По select получаю -=не=- свежую версию данных. Обновляю 1 - ... ? в день. Плюс не гоню по сети повторяющиеся данные.(справочник товаров)
Если рассмотреть вариант 2 и поговорить о минусах.
Сколько клиентов? Пусть два. Кто пополняет справочник? Пусть первый пополнил. Но тогда он пополнит только у себя. И пошла морока. Второй тоже пополнил справочник. Какой справочник брать завтра?
Это пока сейчас у Вас пополняется 1 раз в день, а завтра еще ничего не известно. По моему 1 вариант предпочтительнее.
...
Рейтинг: 0 / 0
Какой вариант лучше ?
    #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
Какой вариант лучше ?
    #33071160
Фотография ГенГрум
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Владимир САЕсли рассмотреть вариант 2 и поговорить о минусах.
Сколько клиентов? Пусть два. Кто пополняет справочник? Пусть первый пополнил. Но тогда он пополнит только у себя. И пошла морока. Второй тоже пополнил справочник. Какой справочник брать завтра?
Это пока сейчас у Вас пополняется 1 раз в день, а завтра еще ничего не известно. По моему 1 вариант предпочтительнее.

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

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

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

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

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

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

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

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

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

Вот такие на первый взгляд соображения.
...
Рейтинг: 0 / 0
Какой вариант лучше ?
    #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
Какой вариант лучше ?
    #33071715
Фотография ГенГрум
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
простите вместо
Код: plaintext
form
читать
Код: plaintext
from
...
Рейтинг: 0 / 0
Какой вариант лучше ?
    #33071792
PaulWist
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ага, стало понятнее.

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

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

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

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

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

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

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

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

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


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