You are not logged in.
Pages: 1
I'll soon be requiring multi-database connectivity and have been mulling over buying UniDAC. However, today I saw Arnaud's post on Praxis about Zeos 7.3 and am wondering if I should use it instead. I've seen a number of impressive benchmarks on this forum for Zeos, but am interested in any thoughts anyone has on pros/cons of each, use in production etc. I use Delphi 10.4 on the client and am planning to use FPC on Linux servers, but also some Delphi/Windows server implementations.
Also can anyone point me to a full list of the different databases that Zeos can connect to?
Thanks in advance, Bob
Offline
It may be a message for the Zeos forum...
But in short, Zeos 7.3 has excellent database support, and when used with ZDBC - i.e. a its direct layer, as we do from our mORMot ORM - its performance is higher than any DB.pas based alternatives.
From our tests, UniDAC is not the fastest DB layer on Delphi - FireDAC is faster.
It has excellent FPC compatibility, whereas UniDac is behind in terms of FPC compatibility - see https://forums.devart.com/viewtopic.php?t=38418
Zeos support is excellent, and reactivity to bug is awesome.
And you will favor Open Source, so I would definitively advice for it!
Offline
Thanks Arnaud - I've found the Zeos forum and there's a section for each database.
Offline
My mORMot test ZEOS 7.3.1-beta(r6794):
Running tests using Synopse mORMot framework 1.18.6120, compiled with Delphi 10.3 Rio 32 bit,
against SQLite 3.32.3, at 2020-08-22 10:06:44.
Insertion speed
Direct Batch Trans Batch Trans
SQLite3 (file full) 57 3673 44854 100088
SQLite3 (file off) 170 9388 55474 154444
SQLite3 (file off exc) 17131 154078 59035 187998
SQLite3 (mem) 47988 194084 60323 195312
ZEOS SQlite3 60 1712 45028 85298
ZEOS SQlite3 (ext full) 59 1679 43910 87870
ZEOS SQlite3 (ext off) 172 4776 54249 132717
ZEOS SQlite3 (ext off exc)22476 133482 57722 158127
ZEOS SQlite3 (mem) 32905 152035 57723 163489
FireDAC SQlite3 12600 20444 32986 113527
UniDAC SQlite3 57 1508 19522 29991
UniDAC MSSQL2012 1719 3466 2657 3578
ZEOS ODBC_W MSSQL2012 2457 6583 2875 39812
ZEOS ODBC_A MSSQL2012 2442 6840 2755 42044
ZEOS OleDB MSSQL2012 2149 7126 2693 49881
ZEOS Firebird 6082 58115 23456 59133
FireDAC Firebird 2868 51529 18351 52435
ZEOS Oracle 959 72558 2804 73417
UniDAC Oracle 850 2337 1478 2492
ZEOS PostgreSQL 1094 51655 2400 65758
FireDAC PostgreSQL 1025 20381 2247 20433
UniDAC PostgreSQL 605 12792 1008 14087
ZEOS MySQL 2735 34247 2968 35395
FireDAC MySQL 1490 18926 1590 18641
UniDAC MySQL 2584 16702 2725 17510
Read speed
By one All Virtual All Direct
SQLite3 (file full) 13260 387116 388742
SQLite3 (file off) 13064 384674 390411
SQLite3 (file off exc) 62165 390137 391818
SQLite3 (mem) 63194 393483 392958
ZEOS SQlite3 51602 201914 354660
ZEOS SQlite3 (ext full) 51111 205651 357628
ZEOS SQlite3 (ext off) 51452 200561 356887
ZEOS SQlite3 (ext off exc)50995 204918 358166
ZEOS SQlite3 (mem) 51076 204006 360126
FireDAC SQlite3 5350 83886 112329
UniDAC SQlite3 1788 67379 90958
UniDAC MSSQL2012 2226 104929 171479
ZEOS ODBC_W MSSQL2012 1341 153477 247108
ZEOS ODBC_A MSSQL2012 1346 144167 222588
ZEOS OleDB MSSQL2012 2636 175530 289905
ZEOS Firebird 23214 88181 127730
FireDAC Firebird 1767 61012 76456
ZEOS Oracle 2809 125432 189609
UniDAC Oracle 948 29461 35956
ZEOS PostgreSQL 2406 131960 199425
FireDAC PostgreSQL 571 41093 45755
UniDAC PostgreSQL 357 54935 68092
ZEOS MySQL 2892 129886 190665
FireDAC MySQL 1141 64495 78387
UniDAC MySQL 1964 88198 125533
Michal
Offline
Offline
I added your Oracle and MS SQL ODBC:
ZEOS 7.3.1-beta r6794
Running tests using Synopse mORMot framework 1.18.6120, compiled with Delphi 10.3 Rio 32 bit,
against SQLite 3.32.3, at 2020-08-24 19:33:45.
Insertion speed
Direct Batch Trans Batch Trans
SQLite3 (file full) 57 3646 44789 97700
SQLite3 (file off) 170 11578 27377 155588
SQLite3 (file off exc) 16888 157683 58480 191277
SQLite3 (mem) 46195 198522 59941 197145
ZEOS SQlite3 60 1660 43845 87499
ZEOS SQlite3 (ext full) 58 1628 44118 90632
ZEOS SQlite3 (ext off) 174 4473 54512 131731
ZEOS SQlite3 (ext off exc)22245 136701 58764 156040
ZEOS SQlite3 (mem) 32491 150412 59484 160235
FireDAC SQlite3 12494 19610 34184 113996
UniDAC SQlite3 56 1347 19816 29838
ODBC MSSQL2012 1382 17591 2598 20006
UniDAC MSSQL2012 1881 3541 2465 3601
ZEOS ODBC_W MSSQL2012 2277 6538 2804 42316
ZEOS ODBC_A MSSQL2012 2208 6960 2794 39255
ZEOS OleDB MSSQL2012 2282 6694 2750 51200
ZEOS Firebird 6211 59468 23598 59409
FireDAC Firebird 2820 52188 18095 52417
Oracle 955 87844 2188 85212
ZEOS Oracle 1018 71001 2829 72592
UniDAC Oracle 916 2385 1554 2487
ZEOS PostgreSQL 1188 62489 2280 66534
FireDAC PostgreSQL 1065 19857 2042 20140
UniDAC PostgreSQL 718 12282 1018 14139
ZEOS MySQL 1900 20478 2781 38369
FireDAC MySQL 1439 17536 1405 19688
UniDAC MySQL 2608 14585 2729 17461
Read speed
By one All Virtual All Direct
SQLite3 (file full) 13162 373245 387626
SQLite3 (file off) 12853 386518 388379
SQLite3 (file off exc) 61397 373078 373915
SQLite3 (mem) 62231 384644 390228
ZEOS SQlite3 52050 206270 361402
ZEOS SQlite3 (ext full) 52119 206041 361376
ZEOS SQlite3 (ext off) 51974 201832 352485
ZEOS SQlite3 (ext off exc)51414 207555 364404
ZEOS SQlite3 (mem) 52343 207236 362266
FireDAC SQlite3 5477 82961 112183
UniDAC SQlite3 1771 67471 90114
ODBC MSSQL2012 2638 112120 191982
UniDAC MSSQL2012 2100 108466 176317
ZEOS ODBC_W MSSQL2012 1358 155545 240870
ZEOS ODBC_A MSSQL2012 1405 143587 212992
ZEOS OleDB MSSQL2012 2765 174770 290900
ZEOS Firebird 23713 87050 124051
FireDAC Firebird 1790 61260 75922
Oracle 2424 129553 185583
ZEOS Oracle 2771 125495 193438
UniDAC Oracle 957 29406 35844
ZEOS PostgreSQL 2432 138458 197855
FireDAC PostgreSQL 524 40292 46180
UniDAC PostgreSQL 375 52796 67601
ZEOS MySQL 2705 137245 210375
FireDAC MySQL 1271 67206 76494
UniDAC MySQL 2149 87882 126033
Michal
Offline
Thanks for the fresh numbers!
Just a question: why didn't you include the SynOracle, SynPostgresql, SynOleDB and SynODBC numbers? It could be interesting to include the info with SynDB direct access units.
SynPostgresql can not be tested, it permanently fails: Performance tests are not comparable and only the default Port is supported..
Last edited by EgonHugeist (2020-09-13 14:59:33)
Offline
@Pavel, did you ever test it? Maybay it's a lack of my knowledge, but i'm not able to.. Thus using DatabaseName := '127.0.0.1:5438' fails same as using '//localhost:5438' as you suggest. That's way
PQconnectdb
as been introduced by PostgreSQL, thougth.
Last edited by EgonHugeist (2020-09-15 18:58:04)
Offline
Pages: 1