MySQLDAC vs MyDAC

KsandrPRO

Турист
Спасибо за MySQLDAC, но не могли бы вы подсказать чем они отличаются от MyDAC? Какие плюсы и минусы в использовании обоих пакетов?
Я установил MySQLDAC - установилось все чисто. Посмотрел, увидел отличие небольшое в методах, но насколько они внутренне различны?
 

asm64d

Профи
Свой / Own
Спасибо за MySQLDAC, но не могли бы вы подсказать чем они отличаются от MyDAC? Какие плюсы и минусы в использовании обоих пакетов?
Я установил MySQLDAC - установилось все чисто. Посмотрел, увидел отличие небольшое в методах, но насколько они внутренне различны?
Главное отличие:
MySQLDAC
allows you to create Delphi/C++Builder applications without BDE, ODBC, ADO and without libmysql.dll.
MyDAC
MyDAC offers two connection modes to MySQL: direct connection over the network in Direct mode and connection through the standard MySQL Client in Client mode.
На рисунках лучше понятно

Client Mode

Direct Mode

Такой еще интересный момент, под клиентом подразумевается libmysql.dll так вот здесь возникает интересный момент, MySql как бы бесплатная СУБД и вы можете с ней работать бесплатно до одного момента - если вы захотите распространять свою программу вместе с libmysql.dll - то вам прийдется покупать лицензию, т.е. в этом плане Direct Mode выгоднее, однаго по возможностям он уступает Client Mode, и помоему и по скорости, хотя честно никогда работу этих режимов не сравнивал.

Т.е. MySQLDAC работает только в одном режиме, а MyDAC в двух. Каждый режим имеет свои плюсы и минусы, каким пользоватся решает разработчик. Кстати UniDAC тоже работает только в Direct Mode.

P.S. Сам работаю в Direct Mode режиме UniDAC.
 
Last edited by a moderator:

WildFrag

Турист
А почему пользуете именно unidac от деварта а не anydac от ремов?
Мне кажется anydac в этом плане более стабильный продукт.
 

asm64d

Профи
Свой / Own
А почему пользуете именно unidac от деварта а не anydac от ремов?
Мне кажется anydac в этом плане более стабильный продукт.
Ну как-то оно так, но во первых уже давно не было утечек full sourse, а потом как-то не подружился, хотя как не странно диплом буду наверное с ним писать, версия 1.6 (бесплатная) поддерживает D2007. А почему UniDac - более легкая миграция на другие продукты этой фирмы (ODAC, MyDac). Вообщем дело вкуса.
 

KsandrPRO

Турист
Ну так я понимаю, что используя компоненты MySQLDAC мне не нужно таскать с приложением упомянутую dll и соответственно я могу продавать свою программу, не взирая на то, что она может работать с бесплатным MySQL сервером? Верно?

Что касается скорости... Я попробовал сегодня MySQLDAC в действии. Мне показалось, что он немного дольже подключается к серверу. Однако я думал, что ранее используя MyDAC я не использовал libmysql.dll т.к. программа спокойно работала и на другом компьютере. Или же в этом случае программа, а точнее компоненты MyDAC сами определяют как работать с библиотекой или без нее?
Я привык делать запросы на своем компьютере, где так же стоит MySQL сервер, и возможно ошибался, что MyDAC везде будет так же шустро работать...

Добавлено через 12 минут
Сейчас открыл свой проект на Delphi 2007, где использовал MyDAC. Вроде как я ни где явным образом не указывал использование libmysql.dll. Получается я работал в режиме Direct Mode?
Теперь вот хочу перейти на Delphi 2009 и за неимением MyDAC воспользоваться MySQLDAC.
А какие именно есть плюсы у режима Client Mode, и что именно мы в нем теряем от режима Direct Mode?
Если можно на русском, а то my english is not nice :)
 
Last edited by a moderator:

asm64d

Профи
Свой / Own
Ну так я понимаю, что используя компоненты MySQLDAC мне не нужно таскать с приложением упомянутую dll и соответственно я могу продавать свою программу, не взирая на то, что она может работать с бесплатным MySQL сервером? Верно?
Да, верно. Хотя набы прочитать их лицензионное соглашение.
Однако я думал, что ранее используя MyDAC я не использовал libmysql.dll т.к. программа спокойно работала и на другом компьютере. Или же в этом случае программа, а точнее компоненты MyDAC сами определяют как работать с библиотекой или без нее?
Посмотри что установлено в
TMyConnectionOptions = class(TCustomMyConnectionOptions)
published
property Compress: boolean;
property Direct: boolean;
property Embedded: boolean:
property Protocol: TMyProtocol;
end;
Я привык делать запросы на своем компьютере ... и возможно ошибался, что MyDAC везде будет так же шустро работать...
Здесь будет зависить от логики работы твоей программы (избежание лишних подгрузок данных) и главное от возможностей сети.
 

KsandrPRO

Турист
Здесь будет зависить от логики работы твоей программы (избежание лишних подгрузок данных) и главное от возможностей сети.
Ну логику стараюсь... изучаю толковые мысли и идеи...
А вот сеть точно... И еще от компа, на котором стоит сервер.
Сейчас у меня дома MySQL сервер стоит на стареньком слабом компе. Я проверил оба пакета компонентов. Скорость подключения "на глаз" одинаоквая.
И по ходу в MyDAC я так же работал в режиме Direct Mode. Так что получается, что с переходом на MySQLDAC я ничего собственно не потеряю. Хотя вод все же придется привыкать немного к другим методам и функциям. По удобству мне MyDAC кажется лучше, но это субъектиное мнение, так как я к нему привык. Думаю и с MySQLDAC быстро разберусь.

Кстати, про миграцию проекта на другие продукты... Я раньше мало уделял внимания некоторым тонкостям программирования на Delphi. И видимо зря. Прочел недавно об инкапсуляции и применении ее в проектах, причем как правило. Можно инкапсулировать процедуры подключения и работы с сервером внутрь скажем формы или DataModule, а внешнее использование их реализовать через методы. Тогда остальная часть программы и знать не будет с помощью каких компонентов мы будем работать с базой. Зато чтобы перейти на другие компоненты, достаточно будет изменить соответствующие методы и все.
Возможно на такой подход нужно потратить больше времени, чтобы изначально продумать модель программы, но зато потом переход от одних компонентов к другим окажется пустяком.
 

asm64d

Профи
Свой / Own
А какие именно есть плюсы у режима Client Mode, и что именно мы в нем теряем от режима Direct Mode?
Если можно на русском, а то my english is not nice :)
Сейчас с человечком одним по этому поводу поговрил, для MyDAC не каких отличий по работе в Client Mode и Direct Mode нет, ограничения только в ODAC, в MyDAC при Direct Mode в exe добавляется фактически эта библиотека, деварт переписал ее на Delphi так что побочным результатом является только размер скомпилированного файла. Поэтому по умолчанию стоит Direct:=true;
 

KsandrPRO

Турист
в MyDAC при Direct Mode в exe добавляется фактически эта библиотека, деварт переписал ее на Delphi так что побочным результатом является только размер скомпилированного файла. Поэтому по умолчанию стоит Direct:=true;
... а значит клиент оказывается встроенным в нашу программу, и автоматически она подпадает под свободную лицензию и продавать ее нельзя, так как если докапаются до внутренностей, то все равно найдут этот клиент в недрах программы. Так?
А в случае с MySQLDAC никакого клиента не нужно, ни встроенного, ни внешнего.

Но все же какие-то различия в этих режимах должны же быть, помимо комерческой подоплеки. Где тут "собака зарыта"?
 

asm64d

Профи
Свой / Own
Возможно на такой подход нужно потратить больше времени, чтобы изначально продумать модель программы, но зато потом переход от одних компонентов к другим окажется пустяком.
Сверх много времени. С другом когда-то пытались, потом поняли что безсмысленная трата времени, в Delphi. А вот в C# только так и работает, но нужно учитывать что там ORM лучше развито.
 
Last edited by a moderator:

asm64d

Профи
Свой / Own
... а значит клиент оказывается встроенным в нашу программу, и автоматически она подпадает под свободную лицензию и продавать ее нельзя,
dll<>переписанному коду.
А в случае с MySQLDAC никакого клиента не нужно, ни встроенного, ни внешнего.
Там такая же схема, а как еще по волшебству :)
Но все же какие-то различия в этих режимах должны же быть, помимо комерческой подоплеки. Где тут "собака зарыта"?
Судя по всему как раз в комерческой подоплеки и размере ехе
 

KsandrPRO

Турист
dll<>переписанному коду.

Там такая же схема, а как еще по волшебству :)
Что-то я тупить начал... запутался...
Если MySQLDAC может рабоать без этой DLL и MyDAC в принципе тоже может без нее работать, а принципиальных различий в режимах нет, то зачем нужно включать переписанный код dll в программу?

Кстати, может я еще вот почему туплю: MySQLDAC - тоже от Devart, как MyDAC или нет? Просто я подумал, что они от одной фирмы и мне стало не понятно, зачем одной и той же фирме делать компоненты выполняющие одно и тоже но с вышеуказанными заморочками?

Кстати, еще вопрос такой: клиент в принципе в какой то степени зависит от сервера. Например мы писали программу с одним клиентом от более новой версии сервера, а со старым сервером наша программа уже вроде может и не работать. Или к примеру не подключится к новому серверу.
А как обстоит дело в случае MySQLDAC? Программа с ними будет работать с любым сервером MySQL?
 

asm64d

Профи
Свой / Own
Что-то я тупить начал... запутался...
Если MySQLDAC может рабоать без этой DLL и MyDAC в принципе тоже может без нее работать, а принципиальных различий в режимах нет, то зачем нужно включать переписанный код dll в программу?
Да не могут они без нее работать, поэтому и переписана она и встроеная в режиме Direct Mode.
Кстати, может я еще вот почему туплю: MySQLDAC - тоже от Devart, как MyDAC или нет?
Нет, от MicroOLAP
Кстати, еще вопрос такой: клиент в принципе в какой то степени зависит от сервера. Например мы писали программу с одним клиентом от более новой версии сервера, а со старым сервером наша программа уже вроде может и не работать. Или к примеру не подключится к новому серверу.
Если под клиентом имеешь ввиду libmysql.dll то да, ей (программе) нужна будет та версия dll с которой она разрабатывалась.
Если libmysql.dll с твоей программой от старой версии, то она будет работать с новой версией сервера но не будет поддерживать новых функций сервера (принцып совместимости со старыми версиями никто не отменял)
А как обстоит дело в случае MySQLDAC? Программа с ними будет работать с любым сервером MySQL?
Не знаю, не ездил на нем.

P.S. Ладно, пойду я, сессия все-таки надо готовится на завтра.
 

WildFrag

Турист
Вобщем выбор между этими компонента лежит в плоскости доверия производителю. У SDAC есть проблемка с работой в многопоточных приложениях, там его лучше не использовать вообще. Микроолаповский посути ничем особым не отличается от девартовского, просто деварт более раскручен и имеет более широкую линейку продуктов, но я сталкивался с глюками у них в компонентах. Например в последнем доступном мне SDAC был глюк с созданным в рантайм коннекшеном и AV при попытке его открыть. С микроолапом реально не работал.
Об AnyDAC слышал только хорошее, за него говорит что автор давно и плотно работает с рус-коммюнити. Плюс сейчас AnyDAC входит в покет от RemObjects что говорит о его долгой поддержкой, потому как сейчас ремы большие друзья с эмберкадо.
Еще мне очень не нравится политика лицензирования исходников у Devart, слишком дорого, но это их дело.
Вобщем мое имхо такое, собираетесь писать четко под mySQL ПОКУПАЙТЕ компоненты от деварта, без поддержки можно очень лихо влететь на крупном проекте.
На перспективу я бы лично брал AnyDAC, ну может чуть поменьше специфики MySQL, зато кроме MySQL становится доступно довольно приличное количество других БД + суппорт НА ДАННЫЙ момент у Арефьева лучше.
Как вариант можно посмотреть в сторону SQLDirect.
 

asm64d

Профи
Свой / Own
Я тут стоимость покупки посмотрел, а MicroOLAP - таки довольно дорогой, MyDAC значительно дешевле (сравнивал стоимость без исходных кодов, хотя даже если с ними то пропорции сохраняются), AnyDac в середине, но по сравнению с UniDAC дороговат. Вообщем если точно знаешь что работать предстоит только с одной СУБД то дешевле брать от DevArt, если с несколькими наверное все-таки AnyDac, хотя надо за него сесть после сессии, может и подружусь с ним. Дмитрий Арефьева действительно обеспечивает хорошую поддержку, знаком с ним косвено по одному из форумов. Кстати у DevArt тоже тех поддержка ничего. Вообщем если делать выбор относительно работы только с MySQL наверное все-таки MyDAC.
 
Top