|
|
|
Требуется совет...
|
|||
|---|---|---|---|
|
#18+
Здравствуйте, требуется мнение, совет специалиста. Ситуация следующая: есть файл-сервер, 25 пользователей. Приложение и БД находиться на сервере, юзеры работают через ярлык. Понятное дело все это очень медленно получается. Надо сказать не я это придумал. Один раз пытался в главной программе написать open database ‘дбс_который_на_сервере’. А приложение скопировать на комп пользователя. Не получилось. Дбс фокс ищет там где находится само приложение. Так я собираюсь делать: Вариант А) сделать клиент-сервер. Из 70 таблиц 17 тока часто изменяется. Вот их на сервер скину. Остальные будут на компе. пользователя (справочники). Есть у нас MSSQL 7. практически нет опыта создания таких приложений. Вариант Б) сделать так чтобы все данные были на компе пользователей. А утром и вечером делать импорт-экспорт данных.(то что изменено) Благо база весит мало. Этот вариант мне честно больше нравиться. Вариант С) просто те 17 таблиц удалить с базы сделать как фри табл. И с сервера открывать (use). Не знаю кто-нить так делает. Какой вариант самый лучший, простой? Что еще посоветуете? Какие трудности могут возникнуть? и т.д и.т.п… Заранее благодарен. П.с. Извинясь конечно что из-за меня пришлось закрыть хорошую тему «В чем преимущество Фокс». Я тогда был Новичок777J ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.06.2005, 06:52:07 |
|
||
|
Требуется совет...
|
|||
|---|---|---|---|
|
#18+
ErguuЗдравствуйте, требуется мнение, совет специалиста. Ситуация следующая: есть файл-сервер, 25 пользователей. Приложение и БД находиться на сервере, юзеры работают через ярлык. Понятное дело все это очень медленно получается. Надо сказать не я это придумал. Один раз пытался в главной программе написать open database ‘дбс_который_на_сервере’. А приложение скопировать на комп пользователя. Не получилось. Дбс фокс ищет там где находится само приложение. Так я собираюсь делать: Вариант А) сделать клиент-сервер. Из 70 таблиц 17 тока часто изменяется. Вот их на сервер скину. Остальные будут на компе. пользователя (справочники). Есть у нас MSSQL 7. практически нет опыта создания таких приложений. Вариант Б) сделать так чтобы все данные были на компе пользователей. А утром и вечером делать импорт-экспорт данных.(то что изменено) Благо база весит мало. Этот вариант мне честно больше нравиться. Вариант С) просто те 17 таблиц удалить с базы сделать как фри табл. И с сервера открывать (use). Не знаю кто-нить так делает. Какой вариант самый лучший, простой? Что еще посоветуете? Какие трудности могут возникнуть? и т.д и.т.п… Заранее благодарен. П.с. Извинясь конечно что из-за меня пришлось закрыть хорошую тему «В чем преимущество Фокс». Я тогда был Новичок777J Вариант Б делать НЕ СОВЕТУЮ категорически. Несмотря на то, что он кажется проще и понятнее в нем очень много подводных камней (посмотрите соседние форумы по проектированию баз данных и ERP-системам: там очень много вопросов по репликации данных и проблемам, возникающими при согласовании данных из разных источников (от разных пользователей))... Вариант А также недоработан. Хоть справочники и редко меняются, но ведь меняются же! И если в справочник (допустим, для примера, "Товары") с кодом ААА у одного пользователя будет заведен "Нитроглицерин", а у другого с тем же кодом "Пурген", то данные, хранимые на сервере, будут, мягко говоря, некорректными... Кроме того, опять же возникнут проблемы репликации/согласования справочников на разных источниках... Так что, из представленных вариантов лучше всего выбрать С... А еще лучше всю базу переписать на SQL-сервер... А может быть, все таки, хорошо подумать, посмотреть настройки действующей программы, где-то подкрутить-подвертеть... Ну не думаю я, чтобы пути были жестко зашиты в программу! Если же я не прав и пути жестко зашиты в программу, то лучшим решением будет переписать все с нуля на SQL-Сервер+клиент на VFP... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.06.2005, 07:48:08 |
|
||
|
Требуется совет...
|
|||
|---|---|---|---|
|
#18+
Hi, Erguu ! По-моему лучше переходить на клиент-сервер, т.к. у Вас есть MSSQL 7, но как Вы пишите, нет опыта. Вот как раз и получите опыт работы. Или остаться на файл-серверной идеологии. Но, по-моему приложения должны находиться у пользователей и у них в CONFIG.FPW д.б. строка типа: Path = ...<путь к серверу> А база(ы) д.б. на сервере. У меня так работает. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.06.2005, 08:15:17 |
|
||
|
Требуется совет...
|
|||
|---|---|---|---|
|
#18+
У меня база находится на сетевом диске, ЕХЕ-шник на винте клиента. И все работает, но были проблемы: Действительно, когда компилируешь проект на диске, где лежит база, то он прописывает относительные пути к БД. ( ..\base\MyBase.dbc ) Если же проект скопировать на другой диск, и копилировать оттуда, то Фокса пропишет абсолютный путь к данным ( R:\MyProject\base\MyBase.dbc ) Ну и само собой контроль версий: У меня есть ЕХЕ-шник (start.exe), на него натравлен ярлык, который проверяет версию проекта (MyProject.exe), который лежит на серваке, и если она отличается от локальной -- копирует проект на винт. Потом его запускает. Работает уже пару лет. Плюс еще такой, что для компилирования проекта не надо никого выгонять из АРМа, просто каждый следующий запускает уже новую версию проекта. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.06.2005, 09:07:51 |
|
||
|
Требуется совет...
|
|||
|---|---|---|---|
|
#18+
Большой и сложный вопрос. Для 70 таблиц и 25 пользователей вполне должно хватить обычного файл-серверного приложения. Как Вам посоветовали другие участники (тот-же совет даю и я) надо просто пересмотреть архитектуру программы: - писать временные файлы клиентов на их локальные диски - переместить exe файлы на рабочие станции клиентов (позаботившись о синхронизации версий программ) - если есть доступ к исходным текстам программ - разобраться с индексами - если есть деньги у фирмы - обновить сервер (обязательно RAID на основе SCSI HDD) - изменить топологию локальной сетит и посаить современное оборудование (SWITCH 1Gb), заменить сетевые карты на рабочих станциях... - как альтернативу можно рассмотреть работу чере терминал (но я не сторонник данной теории) Дело в том, что до 50 клиентов нет особого смысла переписывать приложение для SQL Server или Web Services -там есть свои "грабли" - потеря легкости и удобства интерфейса для пользователя... Удачи! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.06.2005, 10:29:45 |
|
||
|
Требуется совет...
|
|||
|---|---|---|---|
|
#18+
Действительно, лучше всего всю базу перелить в SQL сервер, наверняка вы также сталкивались с тем, что dbf часто слетают, по зазным причинам, и их приходится восстанавливать, в SQL такого еще не разу за 2 года не встречал, даже если будет неожиданное выключения питания такого не произойдет, а с DBF обязательно что-то случится. По поводу ЕХЕ, то у нас в фирме тоже все (около 100 пользователей) запускают "через ярлык", и с этим тормозов быть не должно. Проект перекомпилируется по несколько раз в день, поэтому, чтобы не "выгонять" пользователей из системы, ярлык ссылается не на сам ЕХЕ, а на bat файл, в котором указываеся какой именно ЕХЕ запускать, после компиляции просто меняем ссылку в bat-нике, и все. Все последующие пользователи запустят уже новую версию, при этом работающим пользователям не прийдется лишний раз выходить из программы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.06.2005, 10:40:30 |
|
||
|
Требуется совет...
|
|||
|---|---|---|---|
|
#18+
У меня и база, и ЕХЕ-шник находятся на сетевом диске. На винте клиента - только временные файлы, создаваемые во время работы приложения (курсоры и прочее). 85 одновременно работающих пользователей регистрировалось. Все работает хорошо. Работает уже лет девять. Сервер - Compaq не помню какой модели, но старенький, сейчас любой пентиум для домашнего использования пошустрее будет. SCSI - диски. ОС - Novell Netware. Маршрутизаторы - Cisco. Между сервером и маршрутизаторами - оптический гигабит/с, далее до клиентов - 100 Мбит/с витой пары. Всего более 200 рабочих мест под приложениями на FoxPro. Как я не раз утверждал в форуме "Сравнение СУБД", работа с размешенной в сети ФС-базой (не претендую, что так должно быть у всех и всегда, но у меня - именно так) с сервера идет быстрее , чем с локального диска. Естественно, надо уметь тянуть по сети только необходимое. Естественно, надо оптимизировать код под работу именно с ФС-базой данных. Естественно, нужно знать, какие индексы создавать, а какие - не создавать, потому что от них будет больше вреда, чем пользы. Ну, еще много чего естественного ;-) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.06.2005, 11:21:42 |
|
||
|
Требуется совет...
|
|||
|---|---|---|---|
|
#18+
sanya_tirПроект перекомпилируется по несколько раз в день, поэтому, чтобы не "выгонять" пользователей из системы, ярлык ссылается не на сам ЕХЕ, а на bat файл, в котором указываеся какой именно ЕХЕ запускать, после компиляции просто меняем ссылку в bat-нике, и все. . Подскажите пожалуйста. Я в батнике пишу MyProgram.exe (Windows XP). Как сделать, что-бы окно сеанса MS-DOS не выводилось на экран? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.06.2005, 11:35:47 |
|
||
|
Требуется совет...
|
|||
|---|---|---|---|
|
#18+
Спасибо всем за советы. Правда очень много узнал... Теперь буду пытаться. результаты обязательно сообщу. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.06.2005, 11:57:53 |
|
||
|
Требуется совет...
|
|||
|---|---|---|---|
|
#18+
Добавлю свои 5 копеек Совет типа "переходи на клиент сервер" в идеале хорош, но имеет несколько ма-а-а-леньких недостатков: Для 25 клиентов и 70 таблиц выигрыш скорости будет не принципиальным. Хотя тут надо оценивать не количество таблиц, а их объем (в байтах) Потребуется очень много времени на переделку программы. Это просто другая идеология. А сделать часть на клиент-сервере, а часть на файл-сервере - это требует, по сути, написание 2-х независмых приложений. Вообще-то, в файл-серверной идеологии абсолютно все-равно, где физически находятся файлы. Все-равно все модификации будут производится на клиенте. Копирование исполняемых файлов на клиент несколько ускорит работу (не надо подкачивать EXE), но, скорее всего, не очень заметно (при "нормальной" сетке). Наиболее вероятная причина "торомозов" Плохая сетка (маленькая пропускная способность) Не оптимизированные запросы и обращение к данным Некорректное разрешение конфликтов совместного доступа Не оптимальная структура базы данных Т.е. причина тормозов (если опустить чисто технический момент пропускной способности сети) - это не оптимально написанная программа. А это не исправить никаким из описанных тобой способов. Да, надеюсь, что когда ты компилишь файлы EXE ты снимаешь птичку в пункте меню Project - Project Info - закладка Project - Debug Info. Это позволит значительно уменьшить размер итогового файла EXE (если его компилить с настройкой Recompile All Files) и, как следствие, ускорит работу (меньше байт гонять по сети) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.06.2005, 14:49:39 |
|
||
|
Требуется совет...
|
|||
|---|---|---|---|
|
#18+
Так... что-то не получается. хотел сделать как предлагали многие приложение на компе пользователя дбс на сервере. и в config.fpw писал, и скопировал проект на диск и компилировал. все равно ищет дбс там где лежит приложение. кстати открываться начал так же долго как если находился бы на сервере (проблема в этом была когда я говорил что медленно) компы у всех пент4. сервер тоже вроде навороченный стоит. так что думаю не в железе дело. ЕХЕ-шник весит 2.7 мб. Фокс у меня 8. что я не так делаю? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.06.2005, 15:11:52 |
|
||
|
Требуется совет...
|
|||
|---|---|---|---|
|
#18+
Для эксперимента напиши в самом ЕХЕ прямые пути SET DEFAULT/SET PATH на сервер и посмотри откуда будут браться таблички, если с локального диска, то надо смотреть где прописаны полные пути к таблицам. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.06.2005, 15:17:32 |
|
||
|
Требуется совет...
|
|||
|---|---|---|---|
|
#18+
Hi, Erguu ! Exe-шник и config.fpw лежат в одном каталоге. В config.fpw прописан путь к базе, что на сервере и другого пути к базе нет, то по логике он должен искать на сервере эту базу. Может как-то плохо сформирован EXE-шник??? Попробуй удалить: foxuser.dbf и foxuser.FPT . Программа заново их сформирует. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.06.2005, 15:49:04 |
|
||
|
Требуется совет...
|
|||
|---|---|---|---|
|
#18+
Hi Erguu! > сделать клиент-сервер Это конечно заманчиво, но сложно. > Из 70 таблиц 17 тока часто изменяется. Вот их на сервер скину. Остальные будут на компе. пользователя (справочники). Это НЕ клиент-сервер, а гибрид - с гибридами всё _гораздо_ сложнее и вероятность поиметь в базе кучу мусора заметно возрастает. > практически нет опыта создания таких приложений. Тем более!!! Сделать кривую клиент-серверную прогу гораздо проще чем кривую файл-сервенрную! Т.е. если как следует не изучить теорию, не провести мощную подготовку (в том числе не перестроить мозги на другой способ работы с данными) то получишь только минусы от перехода. > сделать так чтобы все данные были на компе пользователей Это репликация, и в общем случае это достаточно сложно. Хотя если эти 25 клиентов не пересекаются по данным (грубо говоря каждый окучивает свой небольшой кусочек базы), то будет полегче... Иначе боюсь будет только хуже :( > Благо база весит мало ОЧЕНЬ странно что при малой базе у тебя тормоза - это наводит на нехорошие мысли, о плохо спроектированном приложении! > просто те 17 таблиц удалить с базы сделать как фри табл. И с сервера открывать (use) Дело в том, что по сути это НИЧЕГО НЕ ИЗМЕНИТ! открытие dbc как правиль весьма и весьма мелкая по затратам времени процедура. Вот основа падает как раз на открытие и работу с dbf-ами. В общем стоит для начала оценить почему плохо работает имеющаяся программа. Что она не так делает... Posted via ActualForum NNTP Server 1.2 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.06.2005, 00:59:40 |
|
||
|
Требуется совет...
|
|||
|---|---|---|---|
|
#18+
Эврика! Короче, получилось. проблема кажеться была в том что ехе много весит. раньше я поделил на 2 части но все равно не ощутимо. а сегодня попробовал так чтобы ехе было у пользователя. заметно ускорилась работа. всем спасибо за советы. а клиент-сервер как-нить с начала и в другой раз. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.06.2005, 08:09:07 |
|
||
|
|

start [/forum/topic.php?fid=41&tid=1594024]: |
0ms |
get settings: |
10ms |
get forum list: |
10ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
215ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
53ms |
get tp. blocked users: |
2ms |
| others: | 237ms |
| total: | 546ms |

| 0 / 0 |
