Hi Laszlo, I'm currently in the process of adding a caching layer on top of JdbcTemplate, which would greatly reduce the number of database activities we have, so that would solve the last item you raised. I didn't mean the ORM performance is caused by the mapping. I think the problem lies in the fact that we will modify our code to have batch updates for most insert activities - a thing that is impossible in JPA/Hibernate. So, if we'll have some code in SQL and some in ORM - I prefer we stick all code to SQL…
On Apr 2, 2013, at 9:34 AM, Laszlo Hornyak wrote: > Hi Liran, > > I agree that ORM tools in general have to add some mapping overhead, but that > overhead is very small compared to the time needed by the database > interaction. > ORM tools sometimes generate SQL statements that we could imagine being > better, I do not think they are as hard for the DB as for example the ones > generated by searchbackend. Also, we can do rdbms specific optimizations when > needed. > Plus we could finally have some caching in ovirt engine and the code would > not have to read e.g. the DC record again and again. There are some more like > that. > > Therefore having a JPA could improve the performance in engine. > > Laszlo > > ----- Original Message ----- >> From: "Liran Zelkha" <lzel...@redhat.com> >> To: "Eli Mesika" <emes...@redhat.com> >> Cc: engine-devel@ovirt.org >> Sent: Tuesday, April 2, 2013 7:24:08 AM >> Subject: Re: [Engine-devel] Move SQL out of stored procedures >> >> I also apologize for jumping in late... >> I think concerning SQL injection we'll be covered by using >> PreparedStatements. Since we're using SpringJDBC, most of our code uses >> PreparedStatements anyway. >> Concerning ORM - I feel it won't really be beneficial to us. I know of very >> few projects who can actually be cross-database, and just maintaining schema >> creation scripts for different databases can be too difficult to maintain. >> Also, from a performance perspective, ORM performs worse than regular SQL >> (or stored procedures), so it wouldn't be the direction I choose. >> I think we should keep using SpringJDBC with either SQL or stored procedures >> (doesn't really matter, whatever is easier to maintain and performs faster) >> and maybe add a better, more generic, RowMapper class. >> >> ----- Original Message ----- >> From: "Eli Mesika" <emes...@redhat.com> >> To: engine-devel@ovirt.org >> Sent: Tuesday, April 2, 2013 12:35:03 AM >> Subject: Re: [Engine-devel] Move SQL out of stored procedures >> >> >> >> ----- Original Message ----- >>> From: "Laszlo Hornyak" <lhorn...@redhat.com> >>> To: "Libor Spevak" <lspe...@redhat.com> >>> Cc: "Juan Hernandez" <jhern...@redhat.com>, engine-devel@ovirt.org >>> Sent: Thursday, March 28, 2013 5:31:34 PM >>> Subject: Re: [Engine-devel] Move SQL out of stored procedures >>> >>> >>> >>> ----- Original Message ----- >>>> From: "Libor Spevak" <lspe...@redhat.com> >>>> To: "Itamar Heim" <ih...@redhat.com> >>>> Cc: "Juan Hernandez" <jhern...@redhat.com>, engine-devel@ovirt.org >>>> Sent: Thursday, March 28, 2013 4:04:20 PM >>>> Subject: Re: [Engine-devel] Move SQL out of stored procedures >>>> >>>> Hi, >>>> >>>> apart from SQL vs. stored procedures discussion, I am trying to >>>> understand what we can get if we support more databases... >> >> Sorry for joining this discussion so late (I was in a vacation) >> anyway >> two points missing from SQL VS. SP are >> 1) security - With plain SQL we will have to handle SQL Injection >> 2) It is more economic to pass a call to SP than the full SQL on the wire... >> >> >>>> >>>> Some points: >>>> 1. Is there a real need by end-users/customers to run it on e.g. >>>> Oracle >>>> only? (performance, stability, easier administration). >>> >>> Usually companies have one database and they are trying to stick to that >>> one. >>> Having two doubles the resource needs, you need one more DBA team, care for >>> mirrors, backups. So it almost doubles the costs. >> >> Generally, I agree with Alon B L , if you have to support X DBs you are not >> doubling the effort by X >> Actually, we had already experience with that when we supported both MS SQL & >> Postgres >> I believe that as we have some customers with large installations, >> performance counts and the best way (and sometimes teh only way) id the DB >> layer >> >>> This is why I frequently hear people asking if we plan to support XyDB in >>> the >>> future. PostgreSQL is cool, but those who already use MySQL/MariaDB, they >>> just do not want one more. >>> >>>> What is the future of PostgreSQL? >>>> >>>> 2. Is it decided by architectural board, what kind of databases we >>>> would >>>> like to support? (cannot support any db) >>> >>> With a JPA we could support most mainstream relational databases, but in my >>> opinion 99 percent of people run oracle, mysql/mariadb or postgresql. So >>> maybe we do not have to think in big number of database engines. >>> This is theoretical since JPA is still on wishlist :( >>> >>>> >>>> 3. Are we talking about the Engine only, or there will be a need to >>>> rewrite ETL mappings and upgrade DWH database, or maybe modify >>>> JasperReports templates (simply, some DB types behave differently)? >>>> Maybe we can look at JasperSoft solution, they support more >>>> databases. >> >> IMHO , ETL & DWH are perfect candidates for NO SQL which is already supported >> by Jasper >> >>>> >>>> 4. Current full/incremental upgrade process of PostgreSQL is IMHO >>>> very >>>> good tuned (it is similar to dbmaintain.org tool - Java >>>> implementation - >>>> I used successfully on one project - after some changes of course). I >>>> do >>>> not believe we can use or easily develop general upgrade/migration >>>> tool, >>>> and XML based (I am sorry Alissa, not sure about Liquibase, I haven't >>>> studied it deeply, but there is a need to incrementally change db >>>> objects, but sometimes also to migrate data to new structures, the >>>> most >>>> flexible and quickest is to do it using native SQL, but yes, it >>>> depends >>>> on the project needs...). >> >> I had evaluated Liquibase and I think that managing your DB upgrades via XML >> is very unfriendly and very limited as you reach complex upgrades as we had >> in the past. >> Just think of the tables in which we change the key from long to UUID , there >> is no way to do that in such tools >> >>>> >>>> 5. As a developer, with every new column I need to write upgrade >>>> scripts, prepare test environments and test all scenarios several >>>> times >>>> on different databases, so time-consuming. >> >> Did it also , again , since our SQL is 90% simple , the effort of writing a >> SP for more than one DB is not so high (and you have free converters you can >> use for that) >> >> Finally, embedded SQL in the Java code is not a good idea, it will be hard to >> maintain it and it is not advancing us in supporting more than one database. >> We have already SQL generated in the Java code on the search engine and IMHO >> this is one of the parts in the applications that needs a rewrite ... >> >>>> >>>> >>>> On 27.3.2013 13:53, Itamar Heim wrote: >>>>> On 03/26/2013 08:39 PM, Alon Bar-Lev wrote: >>>>>> >>>>>> >>>>>> ----- Original Message ----- >>>>>>> From: "Juan Hernandez" <jhern...@redhat.com> >>>>>>> To: engine-devel@ovirt.org >>>>>>> Sent: Tuesday, March 26, 2013 7:34:04 PM >>>>>>> Subject: [Engine-devel] Move SQL out of stored procedures >>>>>>> >>>>>>> Hello, >>>>>>> >>>>>>> I would like to start a discussion about the subject. I think >>>>>>> this is >>>>>>> something we need to do if one day we want to be able to use any >>>>>>> database other than PostgreSQL. >>>>>> >>>>>> Hello, >>>>>> >>>>>> I think that database layer is a software interface like any other >>>>>> software interface, if done properly, a dba can convert the stored >>>>>> procedure to any other database without any code change. >>>>>> >>>>>> This way the database specific implementation lives within the >>>>>> database and maintained by the designated dba. >>>>>> >>>>>> Fixups and optimizations can be done in database without touching >>>>>> the >>>>>> code. >>>>>> >>>>>> Backward compatibility layer is much simpler to implement based on >>>>>> stored procedures than complex set of views and tables. >>>>>> >>>>>> Also, accessing the database via different technologies is simpler >>>>>> if >>>>>> there is maintained database interface (stored procedures). >>>>>> >>>>>> I've seen hibernate based java applications that promised to be >>>>>> database independent but at the edges when performance counts, the >>>>>> DAO became HQL, then a special dialect and finally database >>>>>> specific >>>>>> SQLS. >>>>> >>>>> there may be db specific optimization/logic, but I don't see why we >>>>> need STPs for 80% (if not more) of the CRUD and basic queries. >>>>> >>>>> I also agree with Tal later in the thread that its a good question >>>>> if >>>>> we can't find a better solution than re-writing the sql's in the >>>>> code >>>>> >>>>> _______________________________________________ >>>>> Engine-devel mailing list >>>>> Engine-devel@ovirt.org >>>>> http://lists.ovirt.org/mailman/listinfo/engine-devel >>>> >>>> _______________________________________________ >>>> Engine-devel mailing list >>>> Engine-devel@ovirt.org >>>> http://lists.ovirt.org/mailman/listinfo/engine-devel >>>> >>> _______________________________________________ >>> Engine-devel mailing list >>> Engine-devel@ovirt.org >>> http://lists.ovirt.org/mailman/listinfo/engine-devel >>> >> _______________________________________________ >> Engine-devel mailing list >> Engine-devel@ovirt.org >> http://lists.ovirt.org/mailman/listinfo/engine-devel >> _______________________________________________ >> Engine-devel mailing list >> Engine-devel@ovirt.org >> http://lists.ovirt.org/mailman/listinfo/engine-devel >> > _______________________________________________ > Engine-devel mailing list > Engine-devel@ovirt.org > http://lists.ovirt.org/mailman/listinfo/engine-devel _______________________________________________ Engine-devel mailing list Engine-devel@ovirt.org http://lists.ovirt.org/mailman/listinfo/engine-devel