Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: OSC и Sybase SQL Anywhere
osCommerce по-русски. Форум. > Дизайн и программирование > Базы данных, Easy Populate
Anree
Всем привет. Так сложилось что нужно магазин скрестить с нашей рабочей программой. В принципе что и как разобрался. Но не могу толком понять как правильно следует поключаться к самой базе. Программа самописанная основана на базе Sybase SQL Anywhere 5, ее разработчик ничего не хочет в ней менять для работы с ОСКоммерсом, поэтому приходиться подстраиваться самому. Вообщем как лучше подключаться?
1.Через ODBC-драйвер (вычитал что через такого рода подключение обмен данными будет медленнее чем напрямую)
2.Через встроенную библиотеку PHP. Помоему это php_sybase_ct.dll.
Данные планирую брать и из MySQL и из Sybase'а. Вообще кто нибудь делал что нибудь подобного рода?
Магазин находиться на том же сервере что и программа для учета.

Люди есть кто-то кто знаком с Sybase? Ответьте пожалуйста, может я вообще не туда полез...
beba
Тут нужно трезво оценить ситуацию,
скорее всего данные брать напрямую из базы сисбэйз будет не рационально... все зависит от объема информации, которая будет браться для комерса, какими способами еще может выгружать твоя программа, какая актуальность приемлема..
Anree
В том то и проблема что есть проблема внести модификацию в код программы. Все что я могу, так это заточить Оскомерс под программу. Объясните пожалуйста почему вы считаете что брать данные напрямую из сайбеза будет плохо? Вообще я вчера попробовал через ODBC так помоему вышло даже быстрее чем из MySQL. Может я ошибаюсь. Но возникает проблема когда в запросе нужно объеденить данные из двух разных баз. Если я буду напрямую работать с MySQL то тогда не устраивает то, что данные об остатках и изменения в некоторых нужных мне справочниках программы приходиться обновлять в ручную. До сих пор толкового решения по АВТОМАТИЧЕСКОЙ синхронизации найти не удалось. Может кто-то может поделиться мыслями, ибо думаю что не мне одному это будет интересно. Спасибо.
beba
Если брать напрямую, еще раз говорю, нужно смотреть объем информации, количество коннектов... и т.п.
Дело в том, что нужно избегать нескольких подключений к БД на одной странице... во многом зависит от числа пользователей, которые грузят страницу, какой объем информации ... Пока у тебя с этим не очень ясно ... (написано в посте)

Правильный же ж вариант, как ты подметил, будет синхронизация.. но только ее нужно будет писать самому, потому-что автоматических синхранизаций, как ты опять же подметил, нет.. или я тоже не находил, синхронизация пишется под контретные технические задачи... есть много ньюансов.. Ты делаешь синхронизацию вручную? так я думаю, у тебя уже выработался какой-то принцип... реализуй его в скрипт, который пусть запускается кроном.. вот тебе и автомат будет.. делай скрипт с логами, чтобы отслеживать работу.. и нужно конечно же делать бэкап синхронизацию средствами линукса.. рсинка какого... делается доволи красиво...
a_berezin
Задача как таковая вообще не поставлена. Что такое "магазин скрестить с нашей рабочей программой"? Что под этим подразумевается? Какие данные откуда и куда надо "крестить"?

Если вопрос в том, как работать с Sybase, то вопрос не по адресу. Он никакого отношения к оск не имеет. И ждать здесь ответа на него бессмысленно.
Anree
Цитата(a_berezin @ 22.6.2006, 12:54) *
Задача как таковая вообще не поставлена. Что такое "магазин скрестить с нашей рабочей программой"? Что под этим подразумевается? Какие данные откуда и куда надо "крестить"?

Прошу прощения за сумбур.
Я хочу из ОСК сделать некий ВЭБ-интерфейс к нашей рабочей программе учета. Но возможности подогнать программу под ОСК нет, поэтому приходиться подгонять ОСК под программу. Поэтому я хотел делать выборку данных из двух разных баз:
1.Sybase - Справочники групп, товаров, остатки, движения по клиенту.
2.MySQL - Справочник товаров (картинки к товару, доп. свойства), расширенные данные пользователя (клиента) и т.д.
Скрестить =) это я хотел сказать что не знаю как делать запрос одновременно и из базы ОСК (MySQL соединение) и из базы Программы учета (ODBC соединение). Синхронизировать базы кроном по методу запуска определенного скрипта в определенное время, тоже мне кажеться не правильно т.к. приходиться выгружать все выше перечисленные справочники (пока это занимает 30сек. при 4000 записях).
P.S. Кол-во пользователей постоянно подключенных к Sybase на данный момент 18.


Цитата(a_berezin @ 22.6.2006, 12:54) *
Если вопрос в том, как работать с Sybase, то вопрос не по адресу. Он никакого отношения к оск не имеет. И ждать здесь ответа на него бессмысленно.


Вопрос не в сайбезе, просто моя проблема связана с ним, но наверняка у кого-то тоже есть проблема в связке если не сайбеза то еще чего нибудь с ОСКоммерсом.
a_berezin
Цитата(anree @ 22.6.2006, 17:22) *
Синхронизировать базы кроном по методу запуска определенного скрипта в определенное время, тоже мне кажеться не правильно т.к. приходиться выгружать все выше перечисленные справочники (пока это занимает 30сек. при 4000 записях).
Не надо выгружать/загружать "все выше перечисленные справочники". Надо обмениваться только новыми и/или изменёнными с последнего обмена данными.
Anree
Андрей если Вам не трудно, объясните как это реализовать? Добавить новые таблицы или поля к существующим таблицам в Сайбезе я не могу. Если это можно решить с помощью РНР или MySQL то можно. Но как я понять не могу. Как мне узнать что было изменено? Сайбез лог какой-то ведет, но он во время работы программы не открывается. Если программу закрыть лог становиться доступным но там очень много мусора. Возможно его как-то можно расшифровать, но мне пока это не удалось. Вообщем мне это нужно решить посредством ПХП и все. Если вы имеете возможность и желание поделиться мыслями, поделитесь пожалуйста. Спасибо.
a_berezin
1. Какая база главная? Подозреваю что Sybase.
2. Структура таблиц Sybase. Не всех конечно, а тех, которые надо синхронизировать.
Anree
Да.Главная Sybase.
Структура:
а)Справочник групп "GroupItem"
id, name
б)Стправочник товаров "Item"
id, name, groupid, price_opt3, price_opt2, price_opt1, price_rozn, price_zakup, ostatok, valuta_zakup, comment

в)Справочник клиентов "Kontragent"
id, name, price_group, e-mail, adress, tel, fax, description
добавил поле в оскомерс customers_trade_code сюда вручную вбиваю код клиента ID и таким образом тяну из сайбеза нужную мне инфу о клиенте из справочника + его долги
_____________________________________________
Я надеюсь дал то что вы просили
Вообщем справочники не удовлетворяют полностью требования оскомерса и мои требования. Нет у клиента поля пароль. У справочника товаров нет поля для пути к картинке товара и т.д.

Если что вот моя аська 235-638-639. Заранее благодарен.

P.S. А что в сайбезе есть ограничение на кол-во подключений? А как узнать каково оно?

Андрей информации достаточно?
AlexN
Цитата(anree @ 22.6.2006, 20:06) *
_____________________________________________
Я надеюсь дал то что вы просили
Вообщем справочники не удовлетворяют полностью требования оскомерса и мои требования. Нет у клиента поля пароль. У справочника товаров нет поля для пути к картинке товара и т.д.

Если что вот моя аська 235-638-639. Заранее благодарен.

P.S. А что в сайбезе есть ограничение на кол-во подключений? А как узнать каково оно?


Количесто подключений определяется количеством лицензий на сервер.
Если вы не имеете пароль администратора (DBA), то можете только отранслировать логфайл в текстовый вид. Дальше все просто.
P.S. Рекомендую с разработчика вытреботать пароль для DBA.
Anree
Спасибо AlexN я уже разобрался. Кажеться =). Только вот если например я пропустил какую-то транзакцию. Как быть? Бывает что ночью делаеться бекап базы и лог файл обнуляется. Как-то оно сложно все получаеться. Я вот делаю и уже сомнения берут, так ли я делаю. Или може не применять анализ лог файла? Может есть более надежный способ синхронизации. Может как то можно остатки напрямую получать? Это так мысли вслух =)
AlexN
Надо делать бекап базы, с переименованием старого лог файла( есть такой режим ). Для более надежного надо иметь пароль DBA smile.gif (будет все, включая таблицы изменений и репликации)
Цитата(anree @ 7.7.2006, 18:54) *
Спасибо AlexN я уже разобрался. Кажеться =). Только вот если например я пропустил какую-то транзакцию. Как быть? Бывает что ночью делаеться бекап базы и лог файл обнуляется. Как-то оно сложно все получаеться. Я вот делаю и уже сомнения берут, так ли я делаю. Или може не применять анализ лог файла? Может есть более надежный способ синхронизации. Может как то можно остатки напрямую получать? Это так мысли вслух =)
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.