MySQLDAC vs MyDAC

  • Автор темы KsandrPRO
  • 12353
  • Обновлено
  • 24, Dec 2008
  • #1
Спасибо за MySQLDAC, но не могли бы вы подсказать чем они отличаются от MyDAC? Какие плюсы и минусы в использовании обоих пакетов? Я установил MySQLDAC - установилось все чисто. Посмотрел, увидел отличие небольшое в методах, но насколько они внутренне различны?

KsandrPRO


Рег
10 Oct, 2008

Тем
2

Постов
13

Баллов
33
  • 24, Dec 2008
  • #2
KsandrPRO, post: 696960:
Спасибо за 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.
 

asm64d


Рег
14 Jun, 2008

Тем
1

Постов
17

Баллов
27
  • 24, Dec 2008
  • #3
А почему пользуете именно unidac от деварта а не anydac от ремов? Мне кажется anydac в этом плане более стабильный продукт.
 

WildFrag


Рег
22 Dec, 2008

Тем
0

Постов
20

Баллов
20
  • 24, Dec 2008
  • #4
WildFrag, post: 696962:
А почему пользуете именно unidac от деварта а не anydac от ремов?
Мне кажется anydac в этом плане более стабильный продукт.




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

asm64d


Рег
14 Jun, 2008

Тем
1

Постов
17

Баллов
27
  • 24, Dec 2008
  • #5
Ну так я понимаю, что используя компоненты MySQLDAC мне не нужно таскать с приложением упомянутую dll и соответственно я могу продавать свою программу, не взирая на то, что она может работать с бесплатным MySQL сервером? Верно? Что касается скорости.

Я попробовал сегодня MySQLDAC в действии.

Мне показалось, что он немного дольже подключается к серверу.

Однако я думал, что ранее используя MyDAC я не использовал libmysql.dll т.к. программа спокойно работала и на другом компьютере.

Или же в этом случае программа, а точнее компоненты MyDAC сами определяют как работать с библиотекой или без нее? Я привык делать запросы на своем компьютере, где так же стоит MySQL сервер, и возможно ошибался, что MyDAC везде будет так же шустро работать...
Сейчас открыл свой проект на Delphi 2007, где использовал MyDAC.

Вроде как я ни где явным образом не указывал использование libmysql.dll.

Получается я работал в режиме Direct Mode? Теперь вот хочу перейти на Delphi 2009 и за неимением MyDAC воспользоваться MySQLDAC. А какие именно есть плюсы у режима Client Mode, и что именно мы в нем теряем от режима Direct Mode? Если можно на русском, а то my english is not nice
 

KsandrPRO


Рег
10 Oct, 2008

Тем
2

Постов
13

Баллов
33
  • 24, Dec 2008
  • #6
KsandrPRO, post: 696965:
Ну так я понимаю, что используя компоненты MySQLDAC мне не нужно таскать с приложением упомянутую dll и соответственно я могу продавать свою программу, не взирая на то, что она может работать с бесплатным MySQL сервером? Верно?
Да, верно. Хотя набы прочитать их лицензионное соглашение.
KsandrPRO, post: 696965:

Однако я думал, что ранее используя MyDAC я не использовал libmysql.dll т.к. программа спокойно работала и на другом компьютере. Или же в этом случае программа, а точнее компоненты MyDAC сами определяют как работать с библиотекой или без нее?
Посмотри что установлено в TMyConnectionOptions = class(TCustomMyConnectionOptions) published property Compress: boolean;
property Direct: boolean; property Embedded: boolean: property Protocol: TMyProtocol; end;
KsandrPRO, post: 696965:

Я привык делать запросы на своем компьютере ... и возможно ошибался, что MyDAC везде будет так же шустро работать...
Здесь будет зависить от логики работы твоей программы (избежание лишних подгрузок данных) и главное от возможностей сети.
 

asm64d


Рег
14 Jun, 2008

Тем
1

Постов
17

Баллов
27
  • 24, Dec 2008
  • #7
Здесь будет зависить от логики работы твоей программы (избежание лишних подгрузок данных) и главное от возможностей сети.
Ну логику стараюсь.

изучаю толковые мысли и идеи... А вот сеть точно.

И еще от компа, на котором стоит сервер. Сейчас у меня дома MySQL сервер стоит на стареньком слабом компе.

Я проверил оба пакета компонентов.

Скорость подключения "на глаз" одинаоквая. И по ходу в MyDAC я так же работал в режиме Direct Mode.

Так что получается, что с переходом на MySQLDAC я ничего собственно не потеряю.

Хотя вод все же придется привыкать немного к другим методам и функциям.

По удобству мне MyDAC кажется лучше, но это субъектиное мнение, так как я к нему привык.

Думаю и с MySQLDAC быстро разберусь. Кстати, про миграцию проекта на другие продукты.

Я раньше мало уделял внимания некоторым тонкостям программирования на Delphi.

И видимо зря.

Прочел недавно об инкапсуляции и применении ее в проектах, причем как правило.

Можно инкапсулировать процедуры подключения и работы с сервером внутрь скажем формы или DataModule, а внешнее использование их реализовать через методы.

Тогда остальная часть программы и знать не будет с помощью каких компонентов мы будем работать с базой.

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

KsandrPRO


Рег
10 Oct, 2008

Тем
2

Постов
13

Баллов
33
  • 24, Dec 2008
  • #8
KsandrPRO, post: 696965:

А какие именно есть плюсы у режима Client Mode, и что именно мы в нем теряем от режима Direct Mode?
Если можно на русском, а то my english is not nice







Сейчас с человечком одним по этому поводу поговрил, для MyDAC не каких отличий по работе в Client Mode и Direct Mode нет, ограничения только в ODAC, в MyDAC при Direct Mode в exe добавляется фактически эта библиотека, деварт переписал ее на Delphi так что побочным результатом является только размер скомпилированного файла.



Поэтому по умолчанию стоит Direct:=true;
 

asm64d


Рег
14 Jun, 2008

Тем
1

Постов
17

Баллов
27
  • 24, Dec 2008
  • #9
в MyDAC при Direct Mode в exe добавляется фактически эта библиотека, деварт переписал ее на Delphi так что побочным результатом является только размер скомпилированного файла. Поэтому по умолчанию стоит Direct:=true;
... а значит клиент оказывается встроенным в нашу программу, и автоматически она подпадает под свободную лицензию и продавать ее нельзя, так как если докапаются до внутренностей, то все равно найдут этот клиент в недрах программы.

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

Где тут "собака зарыта"?
 

KsandrPRO


Рег
10 Oct, 2008

Тем
2

Постов
13

Баллов
33
  • 24, Dec 2008
  • #10
KsandrPRO, post: 696967:

Возможно на такой подход нужно потратить больше времени, чтобы изначально продумать модель программы, но зато потом переход от одних компонентов к другим окажется пустяком.
Сверх много времени. С другом когда-то пытались, потом поняли что безсмысленная трата времени, в Delphi. А вот в C# только так и работает, но нужно учитывать что там ORM лучше развито.
 

asm64d


Рег
14 Jun, 2008

Тем
1

Постов
17

Баллов
27
  • 24, Dec 2008
  • #11
KsandrPRO, post: 696969:
... а значит клиент оказывается встроенным в нашу программу, и автоматически она подпадает под свободную лицензию и продавать ее нельзя,
dll<>переписанному коду.
KsandrPRO, post: 696969:

А в случае с MySQLDAC никакого клиента не нужно, ни встроенного, ни внешнего.
Там такая же схема, а как еще по волшебству
KsandrPRO, post: 696969:

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

asm64d


Рег
14 Jun, 2008

Тем
1

Постов
17

Баллов
27
  • 24, Dec 2008
  • #12
asm64d, post: 696971:
dll<>переписанному коду.

Там такая же схема, а как еще по волшебству



Что-то я тупить начал.

запутался...

Если MySQLDAC может рабоать без этой DLL и MyDAC в принципе тоже может без нее работать, а принципиальных различий в режимах нет, то зачем нужно включать переписанный код dll в программу?

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

Кстати, еще вопрос такой: клиент в принципе в какой то степени зависит от сервера.

Например мы писали программу с одним клиентом от более новой версии сервера, а со старым сервером наша программа уже вроде может и не работать.

Или к примеру не подключится к новому серверу. А как обстоит дело в случае MySQLDAC? Программа с ними будет работать с любым сервером MySQL?
 

KsandrPRO


Рег
10 Oct, 2008

Тем
2

Постов
13

Баллов
33
  • 24, Dec 2008
  • #13
KsandrPRO, post: 696972:
Что-то я тупить начал... запутался...
Если MySQLDAC может рабоать без этой DLL и MyDAC в принципе тоже может без нее работать, а принципиальных различий в режимах нет, то зачем нужно включать переписанный код dll в программу?
Да не могут они без нее работать, поэтому и переписана она и встроеная в режиме Direct Mode.
KsandrPRO, post: 696972:

Кстати, может я еще вот почему туплю: MySQLDAC - тоже от Devart, как MyDAC или нет?
Нет, от MicroOLAP
KsandrPRO, post: 696972:

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


Если под клиентом имеешь ввиду libmysql.dll то да, ей (программе) нужна будет та версия dll с которой она разрабатывалась.

Если libmysql.dll с твоей программой от старой версии, то она будет работать с новой версией сервера но не будет поддерживать новых функций сервера (принцып совместимости со старыми версиями никто не отменял)

KsandrPRO, post: 696972:

А как обстоит дело в случае MySQLDAC? Программа с ними будет работать с любым сервером MySQL?
Не знаю, не ездил на нем. P.S. Ладно, пойду я, сессия все-таки надо готовится на завтра.
 

asm64d


Рег
14 Jun, 2008

Тем
1

Постов
17

Баллов
27
  • 24, Dec 2008
  • #14
Вобщем выбор между этими компонента лежит в плоскости доверия производителю.

У SDAC есть проблемка с работой в многопоточных приложениях, там его лучше не использовать вообще.

Микроолаповский посути ничем особым не отличается от девартовского, просто деварт более раскручен и имеет более широкую линейку продуктов, но я сталкивался с глюками у них в компонентах.

Например в последнем доступном мне SDAC был глюк с созданным в рантайм коннекшеном и AV при попытке его открыть.

С микроолапом реально не работал. Об AnyDAC слышал только хорошее, за него говорит что автор давно и плотно работает с рус-коммюнити.

Плюс сейчас AnyDAC входит в покет от RemObjects что говорит о его долгой поддержкой, потому как сейчас ремы большие друзья с эмберкадо.

Еще мне очень не нравится политика лицензирования исходников у Devart, слишком дорого, но это их дело.

Вобщем мое имхо такое, собираетесь писать четко под mySQL ПОКУПАЙТЕ компоненты от деварта, без поддержки можно очень лихо влететь на крупном проекте.

На перспективу я бы лично брал AnyDAC, ну может чуть поменьше специфики MySQL, зато кроме MySQL становится доступно довольно приличное количество других БД + суппорт НА ДАННЫЙ момент у Арефьева лучше.

Как вариант можно посмотреть в сторону SQLDirect.
 

WildFrag


Рег
22 Dec, 2008

Тем
0

Постов
20

Баллов
20
  • 24, Dec 2008
  • #15
Я тут стоимость покупки посмотрел, а MicroOLAP - таки довольно дорогой, MyDAC значительно дешевле (сравнивал стоимость без исходных кодов, хотя даже если с ними то пропорции сохраняются), AnyDac в середине, но по сравнению с UniDAC дороговат.

Вообщем если точно знаешь что работать предстоит только с одной СУБД то дешевле брать от DevArt, если с несколькими наверное все-таки AnyDac, хотя надо за него сесть после сессии, может и подружусь с ним.

Дмитрий Арефьева действительно обеспечивает хорошую поддержку, знаком с ним косвено по одному из форумов.

Кстати у DevArt тоже тех поддержка ничего.

Вообщем если делать выбор относительно работы только с MySQL наверное все-таки MyDAC.
 

asm64d


Рег
14 Jun, 2008

Тем
1

Постов
17

Баллов
27
  • 25, Dec 2008
  • #16
Мне тоже кажется, что MyDAC для MySQL это самый лучший вариант... Вот только бы еще достать его под Delphi 2009. Кстати, методы которыми делается запрос в MySQLDAC похожи на DBExpress и я боюсь, как бы не вышли те же глюки.

Например, в DBExpress не получается почему то сделать мультистрочный запрос, или не создается временная таблица (запрос проходит успешно, а при обращении к таблице ошибка, что ее нет). Сейчас пришел на работу - буду проверять.
 

KsandrPRO


Рег
10 Oct, 2008

Тем
2

Постов
13

Баллов
33
  • 25, Dec 2008
  • #17
Ну что же... мои опасения относительно указанных мною проблем с DBExpress в MySQLDAC не наблюдаются. Надеюсь других каких либо глюков так же не будет.
 

KsandrPRO


Рег
10 Oct, 2008

Тем
2

Постов
13

Баллов
33
  • 25, Dec 2008
  • #18
Мне кажется что в случае написания более или менее серьезного проекта компоненты надо все же купить, а то носится потом по форумам в поисках заломаной версии мягко скажем невесело.

Особенно когда заказчик стоит над душой. И вот еще мое имхо, я бы не стал в данный момент пользовать MySQL вообще, мне кажется в плане надежности и прямоты постгрес на порядок выше.

Особенно последние версии. Если же надо embedded приложение то тут вне конкуренции SQLite. Вот и получается что надо купить кучу всего чтобы голова не болела.

 

WildFrag


Рег
22 Dec, 2008

Тем
0

Постов
20

Баллов
20
  • 25, Dec 2008
  • #19
Я не на заказ пишу.

Я по работе.

А так как начальство, как и везде, жмотится, то приходится выбирать что-то бесплатное, как MySQL.

Он мне кстати нравится за скорость и за то, что я одновременно использую его как из программ, так и из внутренного сайта (типа информационная система по организации). На свои деньги покупать все это.

хе..хе.. мне не так много платят. MyDAC для меня лучше всего.

Сейчас вот MySQLDAC мучаю на Delphi 2009.
 

KsandrPRO


Рег
10 Oct, 2008

Тем
2

Постов
13

Баллов
33
  • 25, Dec 2008
  • #20
А постгресс и SQLite по твоему платные? По работе я пишу на MSSQL и MySQL, ну иногда FB. А для себя на первых двух. Мне тоже столько не платят, но я обычно говорю заказчику, а на чем я вам это напишу если у меня средства для работы с БД нет, купите а я напишу.

Не поверишь, уже купили D2009 и FastReport, а сейчас пробиваю AnyDAC.

И это все в бюджетной организации О, надо тогда еще DevExpress заказать будет
 

WildFrag


Рег
22 Dec, 2008

Тем
0

Постов
20

Баллов
20
  • 26, Dec 2008
  • #21
KsandrPRO, post: 696976:
апример, в DBExpress не получается почему то сделать мультистрочный запрос, или не создается временная таблица (запрос проходит успешно, а при обращении к таблице ошибка, что ее нет).
DBExpress это однонаправленная работа с данными и она накладывает очень значительные ограничения на работу. Сначало мне нравилась, потом понял что что-то нормальное сделать на нем сложно, хотя для маленькой работы вполне сгодится.
WildFrag:
Мне кажется что в случае написания более или менее серьезного проекта компоненты надо все же купить, а то носится потом по форумам в поисках заломаной версии мягко скажем невесело. Особенно когда заказчик стоит над душой.
+1024
 

asm64d


Рег
14 Jun, 2008

Тем
1

Постов
17

Баллов
27
  • 17, Feb 2010
  • #22
Я думаю что с MyDAC чуть покомфортней в директмодн будет если гонять выборки большие
 

dasha5-mera


Рег
17 Feb, 2010

Тем
1

Постов
2

Баллов
12
  • 16, Oct 2010
  • #23
Вот сравниваю Unidac AnyDac Sqldirect В свое время sqldirevt не подерживал sqlite сейчас не знаю. Что посоветуете
 

LeshaRB


Рег
11 Jun, 2007

Тем
5

Постов
110

Баллов
160
  • 06, Feb 2011
  • #24
а чем не устраивает Zeos компоненты, пашут и не составит труда под другой сервер БД переделать + платить не надо ?
 

dovran1814


Рег
07 Feb, 2010

Тем
0

Постов
6

Баллов
6
  • 05, Dec 2014
  • #25
Поддерживаю ответ за UniDAC. Сейчас там полно новых фич добавили. Вот список

Можно получить UniDAC бесплатно. Для этого существует программа XChange
 

Devart


Рег
04 Dec, 2014

Тем
0

Постов
4

Баллов
4
  • 16, Dec 2014
  • #26
Devart, post: 696992:
Поддерживаю ответ за UniDAC. Сейчас там полно новых фич добавили. Вот список

Можно получить UniDAC бесплатно. Для этого существует программа XChange

Программа XChange позволяет получить только beta версии компонентов, что не есть хорошо.
 

werful


Рег
24 May, 2009

Тем
1

Постов
17

Баллов
27
Тем
49554
Комментарии
57426
Опыт
552966

Интересно