Offical ZeoLib 7.2-Beta has been released lazarus / 16-Databases ---------------------------------------------------------------------- EgonHugeist · 2014-10-22 07:04 Hi there, we finally did release the first 7.2 Beta version. You can download the zip here: http://sourceforge.net/projects/zeoslib /files/Zeos%20Database%20Objects/zeosdbo-7.2.0-beta/ I was able to increase the performance in a high rate(even if not top of data is reached) without changing the current structures.   Enjoy! OpenSource rocks! Cheers, Michael ---------------------------------------------------------------------- silvestre · 2014-10-22 08:15 @EgonHugeist  Thank you very much!  I followed the updates and there are lots of performance improvements. ---------------------------------------------------------------------- patyi · 2014-10-22 19:28 Thank you Zeos team ! Zeos is the best and most stable database component package for Lazarus ! I have use Zeos 7.2 since a year in my Linux and Windows projects with MySQL and Firebird SQL engines with success ! Best regards, Patyi. ---------------------------------------------------------------------- BigChimp · 2014-10-23 07:01 Congratulations & thanks, Michael! ---------------------------------------------------------------------- JD · 2014-10-23 08:24 Ah! It's update time again.  A million thanks to you, Michael & the rest of the team for all your hard work. Zeos is one of the first components I add to Lazarus because it makes my work easy. JD ---------------------------------------------------------------------- jma_sp · 2014-10-23 08:51 Thankyou very much!!!! There is somewhere a link to changelog? Regards. ---------------------------------------------------------------------- EgonHugeist · 2014-10-23 10:19 Thank you guys, for the feedback  Accordinly a changlog ... simply check the commits: http://sourceforge.net/p/zeoslib/code-0/commit_browser There you got a large list of changes we made. Some small bug-fixes are done, but most of them are related to performance up's. Loads of code is prepared for comming TZFields(e.G. Byte, Word, UInt64 fields, ArrayFields and first approches for TDataSet-Fields) but this will go to 7.3, i think. The Zeos internals are prepared for BATCH-ArrayBindings e.G. Mass- Data-Manimulations. This features are not available in Compenent-Layer yet, since we need new TParam/TField descandants -> 7.3 too. I had not the time to complete everything and the users asking for a stable candidate  . So stay tuned... A little performance reference of 7.2: http://synopse.info/forum/viewtopic.php?id=1508&p=3 compared to 7.1: http://blog.synopse.info/post/2013/11/04/Updated- mORMot-database-benchmark-including-MS-SQL As you can see the performance boost really is impressive. Note, these tests are done with ZDBC (including array bindings), NOT with the TComponent-Layer and all benchmarks are done against the Synopse ColumnsToJSON tests. To be clear: We'll never win the race against Synopse(optimized ColumnsToJSON proc for the framework) it's selves but we are somewhat faster than FireDac, UniDac or ODBC Access.  We also got first feedback in numbers here: http://www.lazarusforum.de/viewtopic.php?f=17&t=8183 User MMVisual did compare 7.1 vs. 7.2 SQLite behavior with his application. The testet code performance twice faster now. Feel free to Attach some personal comparisions! Michael ---------------------------------------------------------------------- mangakissa · 2014-10-23 12:31 Quote....but we are somewhat faster than FireDac....Based on what? FireDAC is working native, ZOEOS not. ---------------------------------------------------------------------- EgonHugeist · 2014-10-23 12:48 Quote from: mangakissa on October 23, 2014, 02:31:50 pmQuote....but we are somewhat faster than FireDac....Based on what? FireDAC is working native, ZOEOS not. Based on test i linked before. Just study the Links.. What do you mean with "working native"? IMO(can't compare it, i have NO FireDac) uses Zeos same native LIBRARY access as FireDac is doing that or did they write a own protocol library collection like UniDac did it for some providers(e.g libmysql.dll replacement)? Edit: Note i didn't want to say Zeos is the fastest DB-Access- Component(NEVER DID COMPARE OTHER COMPONENTS). As i wrote before the Synopse tests aren't made with our TZDataSet-descendants! These tests are made with our internal DBC(Database-Connection)-Layer. Our TZDataSet-Descendants do access DBC directly. For me it was more interesting to compare the performance of older Zeos releases with current 7.2-approach. So the Synopse tests have been a good indicatore for some problems i've resolved inbetween.. But i also did some Perfomance comparisions with our TZDataSet- Descendants with our test-suites and the current performance boost is amazing. In dependency of column-types and providers our 7.2-Query component are twice to 20 times faster than 7.1 based on OUR Zeos- Performance test. Also updating and sorting is loads faster now. ---------------------------------------------------------------------- miab3 · 2014-10-23 13:18 @mangakissa Quote from: mangakissa on October 23, 2014, 02:31:50 pmBased on what? FireDAC is working native, ZOEOS not. What does it mean native. From what I know FirDAC uses exactly the same client libraries which ZEOS. With some exceptions:  e.g. ZEOS http://sourceforge.net/p/zeoslib/code- 0/3426/tree//branches/testing- 7.2/src/plain/ZPlainMySqlDriver.pas?diff=500986a671b75b2b8b001f0f:3425 FireDAC https://forums.embarcadero.com/thread.jspa?threadID=109139&tstart=15 Michal ---------------------------------------------------------------------- BigChimp · 2014-10-23 13:24 Quote from: miab3 on October 23, 2014, 03:18:23 pmWhat does it mean native. Presumably he means accessing the remote database using native Object Pascal code sending data over the wire instead of calling the database driver API to interact. Of course, the database driver is very likely to be native machine code as well (as opposed to just in time Java or .Net code). I agree the term "native" is a bit misleading here... ---------------------------------------------------------------------- marcov · 2014-10-23 13:53 Quote from: BigChimp on October 23, 2014, 03:24:54 pmQuote from: miab3 on October 23, 2014, 03:18:23 pmWhat does it mean native. Presumably he means accessing the remote database using native Object Pascal code sending data over the wire instead of calling the database driver API to interact. I checked, and that doesn't seem to be the case. At least in the postgresql/enterprisedb OR mysql case: http://docwiki.embarcadero.com/RADStudio/XE6/en/Connect_to_PostgreSQL_ %28FireDAC%29 http://docwiki.embarcadero.com/RADStudio/XE5/en/Connect_to_MySQL_Serve r_%28FireDAC%29 MSSQL seems to suggest ODBC, but maybe that is just unclear documentation: http://docwiki.embarcadero.com/RADStudio/XE6/en/Connect_to_Microsoft_S QL_Server_%28FireDAC%29 ---------------------------------------------------------------------- mangakissa · 2014-10-24 07:41 Exactly what marcov says. FireDAC has own drivers built in his package to connect a database without a client library. Look at the image on this page. I'm very fond of native connection, because you don't care about deploying the right client driver. Is your comparison to fireDAC with client libraries, it's nice to hear. ---------------------------------------------------------------------- marcov · 2014-10-24 07:51 Quote from: mangakissa on October 24, 2014, 09:41:00 amExactly what marcov says. FireDAC has own drivers built in his package to connect a database without a client library. (I was saying that it seemed that FireDAC did not do wire protocol by default) QuoteLook at the image on this page. I'm very fond of native connection, because you don't care about deploying the right client driver. I think native on that page means "through the client lib" and is meant as contrast to using ODBC or ADO for everything. So there is no difference between FireDac and Zeos on that score, except that using FPC, Zeos uses FreeTDS instead of oledb directly. I don't know the impact of that (other than the additional DLL) though. ---------------------------------------------------------------------- mangakissa · 2014-10-24 08:51 I'm using MyDAC (Devart) components which are native connected to the database. AFAIK FireDAC does the same but also have the opportunity to use client libraries. ---------------------------------------------------------------------- BigChimp · 2014-10-24 08:55 Well, the documentation suggests otherwise. ---------------------------------------------------------------------- EgonHugeist · 2014-10-24 14:56 @mangakissa Please .... I'd announce 7.2-Beta. I've been trying to show the advantages of the new version. What i want: more test-users to have a nice Stable-candidate later. I didn't judge badly about the expencive components. And i did reference the external Synopse.info tests because (from my point of view) this is the best advertising we could get for my done work. Of course DevArt wrote some Library replacement. They don't need the libmysql-library to connect to MySQL. But AFAIK initial idea behind is the MySQL-Licence politic it's selves and avoiding installation issues. Now MariaDB 10.0 is availible, for free, i'd testet the server and library with 7.2 and i can say current SVN-Version can be used safely. So we can use the MariaDB libmysql-library instead of the MySQL once. The MySQL licence issues are resolved from my point of view. You can use what ever you want! So let's stay professional. Just study http://blog.synopse.info/post/2013/11/04/Updated-mORMot- database-benchmark-including-MS-SQL It might be possible MyDAC performance better! Or AB simply miss to set some parameters for better performance! Feel free to help him. I'm sure Arnaud is happy if you can support him a bit with the DevArt components. Comparing Zeos-7.1, FireDac, Unidac(DevArt too) ....... IMHO numbers are talking. THIS really was a hard judgement for Zeos-7.1! Than read final statement about 7.2: Quote from: ab@EgonHugeist Now direct Zeos/ZDBC access is clearly the fastest way of using external SQL databases with mORMot. For both writing and reading - and especially at reading, where by- passing DB.pas and its TDataSet bottleneck makes ZDBC 2.5 times faster than the expensive FireDAC! Code: [Select]Insertion speed Direct Batch Trans Batch Trans SQLite3 (file full) 439 28715 67945 170259 SQLite3 (file off) 2060 87587 87556 194099 SQLite3 (file off exc) 24311 191000 88328 201661 SQLite3 (mem) 71484 228958 91606 225794 TObjectList (static) 280835 439521 269396 435502 TObjectList (virtual) 273972 439908 266880 438865 SQLite3 (ext full) 498 12472 84984 151666 SQLite3 (ext off) 2271 42367 93231 172205 SQLite3 (ext off exc) 23557 150132 94655 171291 SQLite3 (ext mem) 81559 205187 95796 205482 ODBC SQLite3 575 11936 33537 75480 ZEOS SQlite3 488 13143 44595 81663 FireDAC SQlite3 18684 38913 37886 106107 ODBC Firebird 980 15392 10051 14874 ZEOS Firebird 10395 54686 22504 52468 FireDAC Firebird 20150 49276 20291 49057 MSSQL2012 local 4234 42164 12292 57905 ODBC MSSQL2012 4054 7737 11171 9083 FireDAC MSSQL2012 3788 5729 9565 40822 ZEOS PostgreSQL 3029 30152 7837 45173 ODBC PostgreSQL 2842 29689 3862 32583 FireDAC PostgreSQL 2922 28586 7157 29408 Read speed   By one Virtual Direct SQLite3 (file full) 108811 480030 484496 SQLite3 (file off) 109361 478285 444049 SQLite3 (file off exc) 108429 476917 460744 SQLite3 (mem) 110392 478377 479984 TObjectList (static) 264466 831393 826993 TObjectList (virtual) 261684 359195 821692 SQLite3 (ext full) 115711 224024 464727 SQLite3 (ext off) 113273 228050 477600 SQLite3 (ext off exc) 115364 228550 477920 SQLite3 (ext mem) 115489 225032 475059 ODBC SQLite3 16297 113345 163089 ZEOS SQlite3 35073 168947 254439 FireDAC SQlite3 7951 76751 103887 ODBC Firebird 2015 60124 84109 ZEOS Firebird 21014 81447 109356 FireDAC Firebird 2227 53680 60292 MSSQL2012 local 8721 184311 292431 ODBC MSSQL2012 12064 116273 195472 FireDAC MSSQL2012 3908 91830 131337 ZEOS PostgreSQL 7296 131748 181310 ODBC PostgreSQL 7633 66365 92448 FireDAC PostgreSQL 1889 54675 73219 Clearly, 7.2 branch did achieve a huge performance boost. You did a great job! Note FireDac + SQLite is playing a unfair game. You can top the FireDac performance with Zeos7.2 by adding: Code: [Select]'synchronous=0' 'locking_mode=EXCLUSIVE' To the TZConnection/TZURL.Properties. Than we nearly reach performance of Synopse "SQLite3 (file off exc)" implementations. So if you compare 7.1 against 7.2... Numbers are talking! But don't forget ZDBC is not the TDataSet-layer... But the performance diffs with e.g. TZQuery of 7.1 and 7.2 are impresive TOO! Sade: He didn't include UniDac again, Oracle tests are missing too.  @Marcov & BigChimp Thanks for your researches.. @ALL Feel free to attach some camparision numbers!