MySQL Delphi. Компоненты для работы с MySQL

R

Ruslan82

#1
Друзья!

Инфы в интернете много, но времени на испробовать все категорически нет, поэтому нужна информация из опыта использования различных компонентов в делфи для работы с MySQL. Компонентов я видел много, хотелось бы инфа типа "работал с UniDAC поменял на MyDAO и все полетело, или наоборот, или не полетело, скорость не изменилась, но работает стабильнее и возможностей больше.

Есть софт который разработали и продаем и стала задача перевести его с Access на более серьезную базу. Полгода тестили Postgre но она КРАЙНЕ медленная, когда дело заходит про апдейт таблиц с индексами, нужно удалять индексы и делать другие подпорки, может заодно, чтобы не плодить тем, посоветуете и на счет MySQL, чтобы не терять еще полгода, может с ней такие же косяки, хотя плотно работал с нею лет 5 назад и таких проблем не было замечено. Платные БД изначально не рассматриваются, но может тот же Firebird или Interbase будет с делфи работать быстрее чем MySQL. Речь о работе с таблицами, содержащими 1-10 млн. записей.

Спасибо всем заранее!
 
L

LeshaRB

#2
Друзья!

Инфы в интернете много, но времени на испробовать все категорически нет, поэтому нужна информация из опыта использования различных компонентов в делфи для работы с MySQL. Компонентов я видел много, хотелось бы инфа типа "работал с UniDAC поменял на MyDAO и все полетело, или наоборот, или не полетело, скорость не изменилась, но работает стабильнее и возможностей больше.

Есть софт который разработали и продаем и стала задача перевести его с Access на более серьезную базу. Полгода тестили Postgre но она КРАЙНЕ медленная, когда дело заходит про апдейт таблиц с индексами, нужно удалять индексы и делать другие подпорки, может заодно, чтобы не плодить тем, посоветуете и на счет MySQL, чтобы не терять еще полгода, может с ней такие же косяки, хотя плотно работал с нею лет 5 назад и таких проблем не было замечено. Платные БД изначально не рассматриваются, но может тот же Firebird или Interbase будет с делфи работать быстрее чем MySQL. Речь о работе с таблицами, содержащими 1-10 млн. записей.

Спасибо всем заранее!
Ты думаешь на уровне MySQL инедксов нет?

Скорее всего в твоем случае компоненты не помогут
У вас неправильно организована структур БД
 
R

Ruslan82

#3
индексы есть везде, в Access тоже, 2 аналогичные таблицы в аксес и потсгре, содержат одинаковые индексы и 100 000 товаров. в аксесе update выполняется 10 сек, в постгре - 10 минут, если удалить индексы - 5 сек. с базами и структурой базы все нормально. Я собираюсь использовать UniDAC, но может есть лучше компоненты для работы с MySQL
 
L

LeshaRB

#4
индексы есть везде, в Access тоже, 2 аналогичные таблицы в аксес и потсгре, содержат одинаковые индексы и 100 000 товаров. в аксесе update выполняется 10 сек, в постгре - 10 минут, если удалить индексы - 5 сек. с базами и структурой базы все нормально. Я собираюсь использовать UniDAC, но может есть лучше компоненты для работы с MySQL
Не может быть такого

Я когда раньше использовал SQLDirect
 
R

Ruslan82

#5
Не может быть такого

Я когда раньше использовал SQLDirect

да, я тоже начитался перед выбором постгри какая она крутая, а потом гуглил по поводу update - у всех так, все пишут что это нормально, постгре в общем когда делаешь update table set field = 1 where code = 2 - обновляет индексы каждую запись! т.е. если запросом должно обновиться 100 записей то она обновляет индекс 100 раз... жесть, причем даже если индексные поля не используются в запросе. и типа кто как рекомендует, кто типа через временную таблицу обновлять, кто индексы удалять
 
M

Mironico

#6
но может тот же Firebird или Interbase будет с делфи работать быстрее чем MySQL
По любому.
Сам юзаю птичку уже 13 лет.
FibPlus (VCL) сейчас тоже бесплатный, деврейс его в народ отдала.
Единственное чего не хватает - встроенной репликации.
Но, говорят, в 4 версии будет.
 
K

kinpan

#9
Скорость в большей части зависит от написания запроса- правильный запрос может существенно ускорить
 
A

arendaplus

#10
индексы есть везде, в Access тоже, 2 аналогичные таблицы в аксес и потсгре, содержат одинаковые индексы и 100 000 товаров. в аксесе update выполняется 10 сек, в постгре - 10 минут, если удалить индексы - 5 сек. с базами и структурой базы все нормально. Я собираюсь использовать UniDAC, но может есть лучше компоненты для работы с MySQL

Структуру БД в студию где запрос выполнялся 10 мин и да config БД пришли.

Postgres "по скорости" точно не уступает ACCESS ))))
Лично я пользуюсь Unidac считаю его оптимальным.

Кстати прилагаю книгу по потсгре:
https://mega.nz/#!ysBw3TYK
 
М

МарковАлександр

#11
Структуру БД в студию где запрос выполнялся 10 мин и да config БД пришли.

Postgres "по скорости" точно не уступает ACCESS ))))
Лично я пользуюсь Unidac считаю его оптимальным.

Кстати прилагаю книгу по потсгре:
https://mega.nz/#!ysBw3TYK

Ссылка неполная, просит ключ, без него скачать нельзя.
 
W

WildFrag

#12
Я тоже за девартовские компоненты, unidac или mydac. Но я больше по MSSQL спец, там я знаю чем специализированный компонент отличается от unidac. Советую тоже изучить этот вопрос.
 
R

reenoip

#13
да, я тоже начитался перед выбором постгри какая она крутая, а потом гуглил по поводу update - у всех так, все пишут что это нормально, постгре в общем когда делаешь update table set field = 1 where code = 2 - обновляет индексы каждую запись! т.е. если запросом должно обновиться 100 записей то она обновляет индекс 100 раз... жесть, причем даже если индексные поля не используются в запросе. и типа кто как рекомендует, кто типа через временную таблицу обновлять, кто индексы удалять

Так может проблема всё-таки не в СУБД, а в индексах, не?

Добавлено через 54 секунды
Насчёт доступа к MySQL: что MyDAC, что UniDAC - всё едино (если последних версий).
 
T

test1c

#14
Мы "делали" не маленький проект по телеметрии с БД MS SQL.
Купили UniDAC и как далее оказалось, не прогадали.
В ходе эксплуатации MSSQL "попросил себе" выделенный мощный сервер, но мы ему "отказали" и пришлось СРОЧНО переходить на MySQl. Просто замечательно, что был куплен именно UniDAC. Переход занял пару дней (подправили конструкции запросов). В итоге проект до сих пор на MySQl и не думаем менять ни компонент ни БД.
 
J

j1981

#15
Absolute Database
"Description
-----------

With AbsoluteDatabase you can forget the Borland Database Engine (BDE) .
Absolute Database is the compact, high-speed, robust and easy-to-use database engine.
With Absolute Database you will not need special installation and configuration,
it compiles right into your EXE.
Make your application faster and smaller with Absolute Database!

Key Features:

· No BDE; no DLLs
· SQL'92 (DDL & DML) support
· Single database file
· Unmatched ease-of-use
· 100% compatibility with standard DB-aware controls
· Strong encryption
· BLOB compression
· Full source code available
· Royalty-free
"
 
Y

yyjksw

#16
1. fireBird: There is a strong but inconvenient use. Encryption and more ...
2. NexusDB: Powerful, fast and reliable, but slow for networking. Supported by Unidac.
3. AbsoluteDatabase: Similar to NexusDB, but with a slightly lower overall score.
4. DBISAM: It's easy to write and share, but I'm a bit nervous now.
 
W

WildFrag

#17
Ну мне лично sqlite вполне так симпатичен для небольших проектов, а если к нему еще и компоненты от devart то вообще супер.
 
D

dustypup

#18
100 000 товаров. в аксесе update выполняется 10 сек, в постгре - 10 минут, если удалить индексы - 5 сек.

Быть такого не может. Структура БД видимо сильно разная.

Я для мелких задач использую SQL Server Express и ADO.
 
E

er_long76

#19
По любому.
Сам юзаю птичку уже 13 лет.
FibPlus (VCL) сейчас тоже бесплатный, деврейс его в народ отдала.
Единственное чего не хватает - встроенной репликации.
Но, говорят, в 4 версии будет.

Если не затруднит, чуть подробностей про бесплатный FIBPlus. На сайте Devrice он стоит на продаже. Хотя непонятно, что вообще происходит с проектом.
 
D

denisofff

#20
К сожаления на MySQL работал только с маленькими объемами, но для себя выбрал UniDac, потому что они универсальные для разных БД. А я работаю в основном с MS SQL и SQLite.
А проблему тормозов решаю либо изменением запросов, либо изменением архитектуры программы (незачем выкачивать слишком много данных)
 
S

stan_uz

#21
Если в планах использовать MySQL то лучше сразу использовать MyDAC.

Добавлено через 2 минуты
индексы есть везде, в Access тоже, 2 аналогичные таблицы в аксес и потсгре, содержат одинаковые индексы и 100 000 товаров. в аксесе update выполняется 10 сек, в постгре - 10 минут, если удалить индексы - 5 сек. с базами и структурой базы все нормально. Я собираюсь использовать UniDAC, но может есть лучше компоненты для работы с MySQL

А в чем именно причина такого поведения? Не ужели обновление индекса занимает столько времени? Есть структура таблицы? А триггеры используются?
 
T

test-593

#22
с 10 млн строк справится _любая_ база данных. Для доступа еще могу вспомнить Direct Mysql Objects от Cristian Nicola, но эти компоненты уже не развиваются.
 
O

oakrom

#23
Не давно тоже стояла задача переделать БД коммерческого проекта под MySql, попробовал использовать стандартные компоненты доступа FireDAC. Вроде нормально работает никто пока не жаловался из клиентов. :) Со всеми стандартными компонентами (dbGrid, dbEdit и т.д.) работает весьма слажено.
 
D

dr.Serj

#24
Друзья!
нужна информация из опыта использования различных компонентов в делфи для работы с MySQL.

Речь о работе с таблицами, содержащими 1-10 млн. записей.

MyDAC неплохо справляется, но встречались странности, когда примитивный запрос с двумя условиями мог застопориться на несколько минут. Меняем местами условия в запросе - десятые доли секунды. Но это разовые приколы, возможно пофиксили в следующих билдах.
 
S

S_Gur

#25
Долгое время работал через ADO, несколько лет назад перешел на UniDAC. Ни в первом, ни во втором случае никаких проблем при работе с MySQL не наблюдалось. А вообще, многое зависит от распределения бизнес-логики между клиентом и сервером. Если как можно больше бизнес-логики выносить в хранимые процедуры, триггеры и представления, то интерфейс доступа к базе играет минимальное значение.
 
E

Error_999

#26
S_Gur, а не проводили эксперимент по скорости записи в базу? Есть ли смысл? Просто у меня в проекте ежесекундно по 800 параметров пишется.
 
S

S_Gur

#28
Устойчивая, удобная, бесплатная библиотека ZeosDB. https://sourceforge.net/projects/zeoslib/

ZEOS хорош, но требует от программиста подсовывать DLL для доступа к каждой из поддерживаемых СУБД. Лично мне это показалось неудобным. DEVART-овские компоненты или SQLDirect-овские работают сразу, без лишних телодвижений
 
D

dimonak90

#29
Ещё один голос за ZeosLib. Используем около 10 лет в разнообразных проектах с различными DB (PostgreSQL, MySQL, ...)
 
X

x3APA3Ax

#32
Долгое время работал через ADO, несколько лет назад перешел на UniDAC. Ни в первом, ни во втором случае никаких проблем при работе с MySQL не наблюдалось. А вообще, многое зависит от распределения бизнес-логики между клиентом и сервером. Если как можно больше бизнес-логики выносить в хранимые процедуры, триггеры и представления, то интерфейс доступа к базе играет минимальное значение.

полностью поддерживаю, работаю с UniDAC уже несколько лет, проблем никаких, до него перепробовал огромную кучу компонент и ничего не понравилось
 
M

mr.pm

#33
Все зависит от цели. Не надо все грузить на клиента или все тащить на сервер. Где тонко там и рвется. Выигрываем в одном - проигрываем в другом.
 
S

ser-klin

#34
Структуру БД в студию где запрос выполнялся 10 мин и да config БД пришли.

Postgres "по скорости" точно не уступает ACCESS ))))
Лично я пользуюсь Unidac считаю его оптимальным.

Кстати прилагаю книгу по потсгре:
https://mega.nz/#!ysBw3TYK
 
S

S_Gur

#37
Месяца два-три назад, когда переходил на Rad Studio Starter, перещупал все библиотеки для работы с базами данных, до которых мог дотянуться. Пришел к выводу, что лучше UniDAC на сегодняшний день ничего нет. Во всяком случае, нет ничего удобнее и безпроблемнее
 
A

Alitrun

#38
Ребят, а под Android есть вариант для работы с MySQL? На Android нет драйвера для MySQL и FireDac там с MySQL не работает.
 
S

Stunts

#42
Ребят, а под Android есть вариант для работы с MySQL? На Android нет драйвера для MySQL и FireDac там с MySQL не работает.
Насколько помню UniDAC должен работать на iOS и Android, когда то использовал для прамого соединения на iOS ...
 
R

Rehim

#43
Использоваю UniDac много лет ,работает стабильно , иногда приходилось менять дб и это было легко, советую !
 
A

alexgreat

#44
MyISAM + индексы, в таблице более 500кк записей, компонент - ADOConnection ( хотя без разницы ). Все работает очень шустро, 30-60 мс
 
K

kefeka

#45
На андройде юзай sqlite. Сможешь принимать данные с сервера и отображать пользователю (т.е. через хранимку, view итд).
 
S

sanekerfort

#46
Я когда-то на волне популярности пользовал BDE. С тех пор, тянется один проект, который лень переводить, но надо иногда что-нибудь по-мелочи там менять. Теперь вот жду, когда окончательно Embarcodero перестанет BDE поддерживать. :D Пока они к каждой новой версии ещё предлагают его отдельно ставить.
 
F

fsasha

#47
Если ориентироваться на MySQL, то с моей точки зрения MyDAC лучшее решение. В принципе не верю универсальным решениям. Хотя тут скорее скорость будет зависеть больше от архитектуры базы, железа сервера, выбора СУБД, и настройки самой базы. Наверное в такой последовательности :)
 
6

654321ROD

#48
R

Ruslan82

#49
остановились в итоге на Postgre - по ходу разработки каждую неделю удивляемся на сколько это мощь!
 
F

FireWind

#50
Поддерживаю про UniDAC. У меня опыт использования нескольких библиотек. Много лет работал с SQLDirect с различными СУБД - хорошая библиотека, простой переход с BDE. Но SQLDirect давно не развивается. Перешел на UniDAC - поимел несколько приятных моментов при работе с различными СУБД

А нет ли у кого сравнения функционала/производительности FireDac и UniDAC?

Anyone have a comparison of the functionality/performance of FireDAC and UniDAC?
 
Get involved!

Here you can only see a limited number of comments. On СЕО Форум Вебмастеров you see all comments and all functions are available to you. To the thread