jaleman:
Servoy’s current export is not suitable to export 400,000 records. To do that use the database tools of the database you use. In a three tier architecture it is simply not a good plan to export large amounts of data on the client going through all layers. We are looking into export support on the server, however this is not easy with all the different sql databases out there. Nevertheless until we get there: it’s fairly easy to write sql scripts for the database of your choice to export 400,000 rows.
Whilst we are on this topic: can you share a real life example on how this should ideally work on Servoy and why you can’t do it on the database side?
Jan:
My job is to provide good tools for my end-users. My environment and end-users are more dynamic and varied then most. I have a “multi-tiered” user environment, you might say.
The “middle-level” users are quite sophisticated and get around in Filemaker quite well. We deal with a wide variety of data that comes and goes just about daily. Most sets of data are relatively small, but we have some large ones too. We do a great deal of “on the fly” analysis of this data, because it is so varied. The “middle-level” users are not programmers, but they use and undertand the data in very sophisticated ways. They need to be able to do fast summarization and reporting on the data very quickly.
Filemaker has served them very well in most cases, but the sets are getting larger, and the program is requireing more checks and balances, so speed and reliability are getting to be an issue. The attractiveness of Servoy is the “blending” of the FM interface and “feeling” with a more sturdy database and a better delivery mechanism for wide area networked users. While the tools for the programmer (me) are very important and compelling, the tools for the end user must also be. They must be able to move data around at will, and be able to quickly assemble and change reports.
The import features in servoy work pretty well, but the export has been disappointing. I’ve worked on other “three tier” environments, so I understand the challenges. No, moving data through Servoy is not the most efficient, but, if I choose to implement Servoy, it will be the primary and most sophisticated tools my middle and low level users have access to. If it can not handle the basic functions, it will be a hard sell to the users. The middle-level users do not want to come running to me to import and export their data, nor should they have to.
I could certainly write some routines to handle this process in Servoy myself, perhaps with some plug-ins. But, the point is, that this should be BASIC functionality in my opinion. The bar has been set in some ways by Filemaker. I understand that Servoy IS NOT Filemaker, but IMHO, that just means that it should be SUPERIOR in every possible way.
In the case of exports, I believe the problem is more with how the export function has been implemented then the fact that it’s a “three-tier” architecture. Buffering small sets of data in the Client may make sense, but with large exports, the Client should only act as a conduit for the records as they are written out to a local file. The fact that the Client is attempting to buffer the entire data stream is where the problem lies. I can accept a speed decrease as a price to pay for using Servoy with a large data set. I can not accept the product/function not working at all.
I’m sure it’s just a matter of priorities, and perhaps for the bulk of your users, this is not a problem. Even for me it’s an occassional problem ( a few times a month), not a daily one. It is important though, and I do not think that you should artificially limit the capabilities of your program because there are other ways to solve the problem. You are competing with the Filemakers and Omnis type products of the world, and they can handle this problem relatively well.
I’d be happy to discuss in more detail. It’s difficult to try to explain in a short time frame typing. Let’s just say I have to work in a very challenging environment. Our “product” has to suit a wide variety of both internal and external users, and both are equally important. It’s a challenge at every level of the program, including the levels that I have to implement. The needs and goals of the different users are often quite different, almost opposing at times. It makes for some very stressfull days at the office.
Regards,
Lee Snover