Many Cards Versus One Card and a List Field

Richard Gaskin ambassador at fourthworld.com
Tue Jan 15 12:43:17 EST 2008


Peter Alcibiades wrote:
> Maybe I don't understand the question (does happen!) but isn't the answer 
> something like this.
> 
> 1)  Once data storage gets serious, more than a few thousand records, Rev 
> alone is not what to do it in.  If you want to do the rest of the app in Rev, 
> you have to add a real database.  This means sqlite, mysql (if you need multi 
> user and networked), Valentina, whatever.
>   
> The issue is not one card versus many, the issue is tab delimited fields 
> versus real databases.  

True.  If you need a database, Rev has connections available for a wide 
variety of them, including SQLite, MySQL, Valentina, Oracle, and ODBC 
for everything else.

But as Mark Smith noted, you may be pleasantly surprised by what you can 
do with storing data in custom property sets.  One could use text files 
as well, but I tend to use properties so I can have metadata containing 
field names, types, and sizes in a separate property set from the data 
itself.  I regularly work with data sets from 100 to 50,000 records this 
way.

Using "repeat for each..." I can search at the rate of 98,000 records 
per second for a single-criterion search, and more than 34,000 records 
per second for a three-criteria search.  I can extract a single column 
at the rate of about a million records a second (for field 7; 1.4 
million for field 1), and return only unique values in that column at 
about three-quarter-million records per second.  And that's using a 
generalized (read "slower than is possible") method on a modest Mac.  On 
a top-of-the-line Wintel box I would imagine one can nearly double that.

For smaller data sets of about a thousand records or so, one can still 
use cards if desired.  I prefer the flexibility of separating code from 
presentation, but for quick-n-dirty solutions using cards can be convenient.

Being able to handle data up to 50,000 records in Rev alone is not bad, 
and having the connectivity to a variety of well-honed DBMS engines is 
even better.


> 2)  If data storage retrieval and reports is the primary or only need, its 
> incredibly much quicker to do that sort of thing to some level in Filemaker, 
> but it may not come for your OS and has other limitations.  But you do get 
> point and click relational database and report construction.  
> 
> This is a real issue about Rev + sqlite, but its also an issue about 
> alternatives to Rev + sqlite.

FileMaker is in a class by itself for ease of use, and I've seen a few 
projects done in Rev, even commercial ones, that might well have 
benefited from having been done with FMP instead.  It's a good tool, and 
if it does what a project needs it can be a very good choice.


> 3)  Even if you can live with tab delimited files for storage, getting reports 
> out of them in Rev is not much fun  So you have to add Quartam.  Or Perl or 
> Awk.  This too is much easier and quicker in FM.  But the same comment applies 
> to the alternatives to Rev. 

True, reporting in most 4GLs is done through commercial add-ons.  VB 
uses Crystal Reports, HyperCard used Reports Data Pro, and Rev uses Quartam.

That said, I've rolled my own reporting as needed, since my apps tend to 
have specialized needs, and they've been acceptable in both cost and 
performance.  Though I don't have the direct experience to say with 
certainty, I would venture to guess that rolling one's one reporting 
tools would be more costly in VB by at least a factor of two, and 
perhaps an order of magnitude in Java.


> Is there a gui package  (except the database packages with end user 
> pretensions like FM) that does data storage and retrieval and reporting much 
> better than Rev?  Most seem to be a lot worse.  Python for instance, I think 
> you have to use a real database for just about any storage.  Nothing is 
> perfect.
> 
> This is my own case:  15-20k records of sales during the fiscal year.  I 
> accumulate them (with some trepidation) into an external tab delimited text 
> file.  Then we need to go through and extract sales by product by month for 
> some 200+ items.  After a prolonged meditation on switch, if and repeat, and 
> the prospect of creating a 200 x 12 matrix of fields with each one 
> individually named and scripted, I broke out "Effective Awk Programming".  
> 
> Its like reaching for a plane, after trying to get a smooth finish with a 
> chisel.  But chisels have their uses too, and are often the right tool for 
> the job.  Don't try doing a mortise with a plane!
> 
> Well, please correct if this is not right.

I think you summed it up well.  If one needs a database, use a database. 
  If FMP, or even Bento (FileMaker Inc.'s new ultra-simple DB product) 
will do the trick, it'd be a shame not to use it.

And if one needs more flexibility with the UI than FileMaker 
accommodates, Rev can be used for tens of thousands of records natively 
or take advantage of its connectivity options for millions of records 
with any of its many DBMS engines.

-- 
  Richard Gaskin
  Managing Editor, revJournal
  _______________________________________________________
  Rev tips, tutorials and more: http://www.revJournal.com



More information about the use-livecode mailing list