|
|
|
Будет ли жить такой проект? mdb + MS SQL Server
|
|||
|---|---|---|---|
|
#18+
Ситуация простая - пишется под заказ программа финансового учета (товары, деньги), за неплохие прямо скажем деньги. БД на MS SQL Server'e - типа всё круто. Но клиенты реализованы как mdb с прилинкованными таблицами и естественно это все работает медленновато (мягко говоря) - некоторые формы могут открываться по 20 сек (это при абсалютной незагруженности сети) Все мои доводы, что так реализовывать неправильно игнорируються. Так вот в чем вопрос, долго ли будет жить такой проект? Если учесть, что ожидается работа одновременно до 30 пользователей, количество записей в таблице товаров порядка 10 - 20 тыс и документов от 100 тыс и выше. Не загнется ли это все в один прекрасный момент? У кого нить был опыт создания подобных систем? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.03.2003, 18:15 |
|
||
|
Будет ли жить такой проект? mdb + MS SQL Server
|
|||
|---|---|---|---|
|
#18+
Работать то он может, только вот надо его переработать. Если правильно переписать эти медленные формы, станут они быстрыми даже при такой технологии, хотя чего уж тут спорить, технология эта сильно устарела. От числа записей и пользователей, однако же, она практически не зависит, особенно если немного попереписывать формы и запросы так, чтобы они НИКОГДА не возвращали много записей. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.03.2003, 18:41 |
|
||
|
Будет ли жить такой проект? mdb + MS SQL Server
|
|||
|---|---|---|---|
|
#18+
Будет, долго будет :), те параметры что ты привел, не нагрузка для sql server'a, ну а тормознутось клиентов определяется не только технологией, но реализацией. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.03.2003, 22:03 |
|
||
|
Будет ли жить такой проект? mdb + MS SQL Server
|
|||
|---|---|---|---|
|
#18+
Согласен. что для sql server'а это не нагрузка, но тут по-моему самое слабое место - не это. Самое слабое здесь - это клиенты, которые используют устаревшую технологию, благодаря чему те же выборки данных осуществляються дико медленно, а от этого уже никуда особо не уйдешь. И по-моему тут вся нагрузка ляжет на сеть, поэтому скорость в любом случае будет зависеть от кол-ва пользователей, т.к. чем больше юзверей тем больше даных качается по сети => медленнее работает. (или я что-то не понимаю?) А насчет того, чтобы переписать формы ... они и так уже периписаны на сколько это возможно. Допустим есть форма с 10-ю комбобоксами в каждый из которых возвращаеться список (пусть даже не большой), то во время загрузки этой формы откроется и закроется как минимум 10+1 разных коннектов к базе, и будет работать это медленно, как не переписывай. К тому же уже сейчас используеться такой (ИМХО) изврат, как загрузка в комбы только одной -нужной записи, а остальные записи загружаеются только по событию OnMouseDown (но это не сильно помогает) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.03.2003, 02:29 |
|
||
|
Будет ли жить такой проект? mdb + MS SQL Server
|
|||
|---|---|---|---|
|
#18+
Будет работать вечно, но скорее всего меньше - пока мелкомягкие не откажутся от поддержки mdb. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.03.2003, 09:43 |
|
||
|
Будет ли жить такой проект? mdb + MS SQL Server
|
|||
|---|---|---|---|
|
#18+
Млин ... очень смешно! А можно тогда еще вопрос: Если бы Вы были директором крупной торговой компании, то купили бы такой "клиент-сервер" ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.03.2003, 13:46 |
|
||
|
Будет ли жить такой проект? mdb + MS SQL Server
|
|||
|---|---|---|---|
|
#18+
Нет!!! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.03.2003, 14:18 |
|
||
|
Будет ли жить такой проект? mdb + MS SQL Server
|
|||
|---|---|---|---|
|
#18+
Сложно найти директора торговой компании, разбирающегося в таких тонкостях. Я бы не купил. Потом ведь обязательно пойдут проблемы с блокировками и так далее... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.03.2003, 14:18 |
|
||
|
Будет ли жить такой проект? mdb + MS SQL Server
|
|||
|---|---|---|---|
|
#18+
Будет, еще как будет, вот увидишь!!! Вот в нашей организации уже несколько лет используется такая штука, а еще FoxPro+MS SQL Server. Удаленность SQL Servera до клиента составляет до нескольких десятков километров!!! Когда идет запрос от клиента к SQL серверу можно пойти покурить и еще выпить чашечку кофе и немного отдохнуть!!! Вот когда протянут оптоволокно и будет сеть ISDN, думаю, что будет работать быстрее, но это мечты. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.03.2003, 15:18 |
|
||
|
Будет ли жить такой проект? mdb + MS SQL Server
|
|||
|---|---|---|---|
|
#18+
Я вообще-то серьёзно говорил. Вот уже года четыре такая байда работает и не жужжит. С блокировками проблем никаких (вернее, те же, что и при работе через ADO), потому что само по себе подключение таблицы ничего не блокирует. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.03.2003, 15:48 |
|
||
|
Будет ли жить такой проект? mdb + MS SQL Server
|
|||
|---|---|---|---|
|
#18+
Когда-то, году в 1997, закончили разработку системы, подобной сабжевой. Я уже забывать об этом стал. Меня сильно удивило, что все работает до сих пор - просто случайно узнал. А один мой знакомый до сих пор пишет на A1. Интерфейс - просто супер, фирменная софтинка! К сожалению это самое лучшее, что есть в его приладе.. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.03.2003, 17:11 |
|
||
|
Будет ли жить такой проект? mdb + MS SQL Server
|
|||
|---|---|---|---|
|
#18+
Впринципе я согласен, но это пишется как коммерческий продукт из расчета на то, что он будет потом успешно продаватся, так не лучше ли сразу написать как нужно ... например хотя бы как проект ADP? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.03.2003, 02:35 |
|
||
|
Будет ли жить такой проект? mdb + MS SQL Server
|
|||
|---|---|---|---|
|
#18+
Конечно лучше (быстрее, надежнее и т.д.) Только, IMHO, коммерческий проект лучше писать в более 'низкоуровневой' среде разработки. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.03.2003, 05:59 |
|
||
|
Будет ли жить такой проект? mdb + MS SQL Server
|
|||
|---|---|---|---|
|
#18+
- за неплохие прямо скажем деньги - Все мои доводы, что так реализовывать неправильно игнорируються. Ну и тебе не пофиг? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.03.2003, 09:46 |
|
||
|
Будет ли жить такой проект? mdb + MS SQL Server
|
|||
|---|---|---|---|
|
#18+
Ну и тебе не пофиг? Мне то наверное должно быть пофиг, но почему то нет. А если такой вариант реализации не понравиться заказчику и он от него либо откажется, либо просто всем расскажет - чтобы не покупали этот софт в нашей фирме? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.03.2003, 10:14 |
|
||
|
Будет ли жить такой проект? mdb + MS SQL Server
|
|||
|---|---|---|---|
|
#18+
...либо просто всем расскажет - чтобы не покупали этот софт в нашей фирме? Всем? Вот это промоушен, просто супер! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.03.2003, 10:19 |
|
||
|
Будет ли жить такой проект? mdb + MS SQL Server
|
|||
|---|---|---|---|
|
#18+
Ну млин ... не всем, конечно. Я не то имел ввиду. Но! ... Если у нас есть клиенты, которым нравится продукт который они у нас купили, то мы можем при "впихивании" следующим на них ссылаться, а если нет, то что?! ... Мы будем говорить, что мы уже продали нескольким фирмам, но им дико не понравилось как оно работает. Так? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.03.2003, 10:35 |
|
||
|
Будет ли жить такой проект? mdb + MS SQL Server
|
|||
|---|---|---|---|
|
#18+
Я вот работаю AccessXP+SQL2000 Использую тока хранимые процедуры, вся обработка данных только на сервере. Из Access на SQL через ADO вызываю хранимые процедуры (функциями примерно той, что приведена первой), а данные с сервера на Access притягиваю через DAO: в CurrentDB.QueryDefs подпихиваю имя хранимой процедуры с параметрами (см. пример 2-ой функции), иначе говоря в локальные Access-таблицы данные заливаю посредством исполнения PassTrouth-запроса одним махом (сначала пробовал через ADO, но перебор позаписьно кажной строки и занесение её в локальную Access-таблицу - дело долгое) Не знаю, у меня есть одна юольшая форма, в которой штук 10-подформ+комбобоксы. Каждый клиент к серверу открывает 2-3 коннекта (2-под DAO, один - под ADO) Работает всё быстро. Можно полученные данные с сервера в локальных таблицах вязать с другими какими прилинкованными источниками (так привыкли в конторе до меня работать), можно какую-то часть, непринципиальную, скажем подготовка таблиц для шахматки делать уже на клиенте. используя "местный" SQL А в ADP - работа только с сервером и баста, никакой доп. свободы. Будет время у меня, можно ADO-поковыряв набросать функции для асинхронной работы. Уж ADO-то MS не забросит! Правда антаресно, как ADO.Net они подкрутят в Access??? Тема для меня актуальная, жду мнений, советов дельных, а то ж я не от хорошей жизни на Акцесс подсел, принудили... Хотя вижу, и тут жить можно. Public Function execADO_Sql(pc_SqlCommand As String, pc_TypeCommand As String, ParamArray parr_Spprm() As Variant) As Variant Dim ln_Low As Integer, ln_High As Integer, tmp_cmd As ADODB.Command, _ tmp_prm As ADODB.Parameter, ll_ExistRetParam As Boolean If pc_TypeCommand = "SP" Then ln_High = UBound(parr_Spprm()) If ln_High > 1 And (ln_High + 1) Mod 2 <> 0 Then execADO_Sql = Null MsgBox "Äëÿ õðàíèìîé ïðîöåäóðû ïàðàìåòðû äîëæíû ïåðåäàâàòüñÿ ïîïàðíî â âèäå <èìÿ ïàðàìåòðà>, <çíà÷åíèå>, <èìÿ ïàðàìåòðà>, <çíà÷åíèå>" Exit Function End If End If If OpenConnect = False Then execADO_Sql = Null Exit Function End If On Error GoTo ErrorHandler Set tmp_cmd = New ADODB.Command tmp_cmd.ActiveConnection = cnn tmp_cmd.CommandText = pc_SqlCommand tmp_cmd.CommandType = IIf(pc_TypeCommand = "SP", adCmdStoredProc, IIf(pc_TypeCommand = "Text", adCmdText, adCmdUnknown)) If pc_TypeCommand = "SP" Then If ln_High > -1 Then For ln_Low = 0 To ln_High Step 2 tmp_cmd.Parameters(IIf(Left(parr_Spprm(ln_Low), 1) = "@", "", "@") & parr_Spprm(ln_Low)) = parr_Spprm(ln_Low + 1) Next ln_Low End If End If tmp_cmd.Execute Options:=adExecuteNoRecords If pc_TypeCommand = "SP" Then For Each tmp_prm In tmp_cmd.Parameters If tmp_prm.Direction = adParamOutput Or tmp_prm.Direction = adParamInputOutput Then ll_ExistRetParam = True execADO_Sql = tmp_prm.Value Exit For End If Next tmp_prm End If If ll_ExistRetParam = False Then execADO_Sql = 1 End If ExitHere: Set tmp_cmd = Nothing Exit Function ErrorHandler: On Error GoTo 0 execADO_Sql = Null Call about_error(Err, " SQL-ERR") Resume ExitHere End Function Public Function Load_dataODBC(pc_Name_SP As String, pc_LocalTblName As String, pl_NoBindTbl As Boolean, ParamArray parr_Spprm() As Variant) As Long Dim dbsCurrent As Database, ln_Low As Integer, ln_High As Integer, lc_NameTbl As String, _ qdfPassThrough As QueryDef, qdfLocal As QueryDef, lc_QuertySQLName As String, lc_QuertyLocalName As String, _ lu_Val As Variant, lu_InVal As Variant, lnPoz As Integer, lc_StrSql As String ln_High = UBound(parr_Spprm()) If ln_High > 1 And (ln_High + 1) Mod 2 <> 0 Then Load_dataODBC = -5 MsgBox "Äëÿ õðàíèìîé ïðîöåäóðû ïàðàìåòðû äîëæíû ïåðåäàâàòüñÿ ïîïàðíî â âèäå <èìÿ ïàðàìåòðà>, <çíà÷åíèå>, <èìÿ ïàðàìåòðà>, <çíà÷åíèå>" Exit Function End If If OpenConnect = False Then Load_dataODBC = -4 Exit Function End If Set dbsCurrent = CurrentDb() lc_QuertySQLName = "tmp_Q" lc_QuertyLocalName = "tmp_From" lc_NameTbl = IIf(Len(Trim(pc_LocalTblName)) > 1, pc_LocalTblName, "tmp_" & frm.name) lc_StrSql = pc_Name_SP On Error GoTo ErrorHandler0 If ln_High > -1 Then For ln_Low = 0 To ln_High Step 2 lu_InVal = parr_Spprm(ln_Low + 1) If IsNull(lu_InVal) Then lu_Val = "NULL" ElseIf IsDate(lu_InVal) Then lu_Val = "'" & DTOS(lu_InVal) & "'" ElseIf VarType(lu_InVal) = vbDecimal Or VarType(lu_InVal) = vbDouble Or VarType(lu_InVal) = vbSingle Then lu_Val = CStr(lu_InVal) lnPoz = InStr(1, lu_Val, ",") If lnPoz = 0 Then lu_Val = "'" & lu_Val & "'" Else lu_Val = "'" & Left(lu_Val, lnPoz - 1) & "." & Mid(lu_Val, lnPoz + 1) & "'" End If Else lu_Val = "'" & Trim(CStr(lu_InVal)) & "'" End If lc_StrSql = lc_StrSql & IIf(Left(parr_Spprm(ln_Low), 1) = "@", " ", " @") & parr_Spprm(ln_Low) _ & "= " & lu_Val & "," Next ln_Low End If lc_StrSql = IIf(Right(lc_StrSql, 1) = ",", Left(lc_StrSql, Len(lc_StrSql) - 1), lc_StrSql) 'MsgBox lc_StrSql On Error GoTo ErrorHandler1 Screen.MousePointer = 11 If CheckQuery(lc_QuertySQLName) Then Set qdfPassThrough = dbsCurrent.QueryDefs(lc_QuertySQLName) Else Set qdfPassThrough = dbsCurrent.CreateQueryDef(lc_QuertySQLName) End If qdfPassThrough.Connect = pc_ODBCSqlConnection qdfPassThrough.ReturnsRecords = True If CheckQuery(lc_QuertyLocalName) Then Set qdfLocal = dbsCurrent.QueryDefs(lc_QuertyLocalName) Else Set qdfLocal = dbsCurrent.CreateQueryDef(lc_QuertyLocalName) End If qdfPassThrough.SQL = lc_StrSql qdfLocal.SQL = "SELECT * INTO " & lc_NameTbl & " FROM " & lc_QuertySQLName If pl_NoBindTbl = False Then frm.RecordSource = "" End If If CheckTable(lc_NameTbl) Then dbsCurrent.TableDefs.Delete lc_NameTbl dbsCurrent.TableDefs.Refresh End If On Error GoTo ErrorHandler2 dbsCurrent.QueryDefs(lc_QuertyLocalName).Execute Load_dataODBC = 1 If pl_NoBindTbl = False Then frm.RecordSource = lc_NameTbl End If ExitHere: Screen.MousePointer = 0 Set dbsCurrent = Nothing qdfPassThrough.Close Set qdfPassThrough = Nothing Set qdfLocal = Nothing Exit Function ...... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.03.2003, 12:46 |
|
||
|
Будет ли жить такой проект? mdb + MS SQL Server
|
|||
|---|---|---|---|
|
#18+
Что то я не совсем понимаю смысл заливания данных в локальные таблицы. Ведь эти наборы данных во первых: получаются статичные, а во вторых при любых изменениях этих таблиц на сервере их что опять закачивать полностью? И где же тут в таком случае клиент-сервер? А через ADO, насколько я знаю, можно закачать данные с сервера в рекордсет, а потом сбросить их (не по записям, а одним пакетом) куда угодно. Или в текущую БД или в рядом лежашую, или вообще просто в текстовый файл. Табличка с 5 тыс. записей грузится и сохраняется не дольше пары секунд. И какая в ADP нужна свобода? Мы получаем тонкий клиент. Всё можно обрабатывать на сервере (может быть это конечно крайность, но на сервере то обработаеться быстрее). Или есть что-то, что нельзя сделать прямо на сервере? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.03.2003, 16:19 |
|
||
|
Будет ли жить такой проект? mdb + MS SQL Server
|
|||
|---|---|---|---|
|
#18+
ЧЁРТ ... я наверное не так понял то что написано в книге, но из АДОшного рекордсета данные можно сбросить только в файл. А для того чтобы запихать их в локальную таблицу нужно перенести "ручками" все записи из одного рекордсета в другой, но это работает тормознуто, даже при использовании пакетных обновлений UpdateBatch. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.03.2003, 18:27 |
|
||
|
Будет ли жить такой проект? mdb + MS SQL Server
|
|||
|---|---|---|---|
|
#18+
to Mind: мне нужна та свобода, чтобы можно было старые dbf-таблицы, mdb-базы прилинковывать, кроме того, я могу просто посмотреть. чего прилетело мне на клиента и выполнить какую-то обработку, ту, что не обязательно крутить на сервере. работа с Visual FoxPro+MS SQL - Там ведь тоже такой принцип, только Remote View - это временные курсоры (почитай временные таблички) сбрасывая данные с сервера в локальные таблицы, я могу и отключиться от сервера и работать в офф-лайне, потом подключиться и выполнить синхронизацию. Если надо видеть свежие данные, то можно либо по нажатию кнопочки или по таймеру перезапрашивать данные, чтобы увидеть изменения других юзеров в конце концов, в качестве источника формы я могу установить динамический ADO-recordSet и смотреть, чего там на сервере, но пока система реального времени мне не нужна. И потом, работая через Инет с базой, Вы ведь тожа получаете данные по перезапросу, ведь так??? А вот побороться за минимизацию количества получаемых записей с сервера - тут надо ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.03.2003, 19:17 |
|
||
|
Будет ли жить такой проект? mdb + MS SQL Server
|
|||
|---|---|---|---|
|
#18+
Я как-то уже писал... Не надо перегонять строки из Recordset в локальные таблицы. Вместо этого можно создавать временную таблицу на SQL Server и её подлинковать к Access, после чего натравить на неё отчёт. Либо можно постоянно держать и обновлять на SQL Server таблицы специально для хранения в них данных для отчётов и эти таблицы постоянно держать подлинковаными. Ясное дело, для форм это не проходит, но (об этом я уже тоже писал), использование для ввода даных в базу форм, основанных на таблице, - это моветон на мой взгляд... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.03.2003, 11:05 |
|
||
|
Будет ли жить такой проект? mdb + MS SQL Server
|
|||
|---|---|---|---|
|
#18+
У меня проект с такой архитектурой прекпасно работает. Пользователи подключаются к серверу в Торонто из Эдмонтона, Виннипега, Монреаля, Оттавы, Галифакса, и еще из каких то городов в Канаде. Лично проверял при примерно 30 юзерах, все работает. Формы есть достаточно тяжелые, но все они disconnected, а данные тащатся с сервака через ADO. Пришлось конечно кучу кода на серваке писать, но скорость получается неплохая. А а насчет прокупки скажу что покупают систему, и весьма неплохо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.03.2003, 08:29 |
|
||
|
|

start [/forum/topic.php?fid=45&msg=32117755&tid=1682001]: |
0ms |
get settings: |
11ms |
get forum list: |
16ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
45ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
64ms |
get tp. blocked users: |
2ms |
| others: | 230ms |
| total: | 385ms |

| 0 / 0 |
