In jumping back into Valentina, I’ve learned a number of things over the past few days that I thought I’d share. In no particular order…
– Valentina support (particularly Ruslan) has to be the most responsive support of any company in any country, ever.
– Valentina is fast. I mean, really fast. Using a flat-file database of 7 fields and 5 million+ records, and comparing it to other solutions like MySQL, PostgreSQL, SQLite and FileMaker Pro, Valentina beats them all in every test I can come up with. The only thing that is even close to the same range is MySQL, and only in some tests.
– Using fld.FindContains within REALbasic is the same as using “WHERE LOCATE( str, fld ) <> 0” in SQL. However (for now), it is not the same as using “WHERE LOCATE( str, fld ) > 0”. The latter is very slow.
– When you want to do a “contains” type search, you have three obvious options: fld LIKE ‘%str%’, LOCATE( str, fld ) <> 0, and fld REGEX ‘(?i)str’. Using LIKE is the fastest among these for large data sets, but the next fastest (for now) is REGEX, not LOCATE. It doesn’t make a lot of sense to me, but every test confirms it.
– Don’t shy away from REGEX, it’s actually pretty fast. For example, you can emulate an index by words in a string field by using a search like fld REGEX ‘(?i)\\bstr’. It is NOT as fast as having “index by words”, but it’s not that slow either. In my tests, with “index by words” turned on, fld LIKE ‘str%’ takes 0.019 secs, but fld REGEX ‘(?i)\\bstr’ takes about 2 seconds with “index by words” off.
– That same regex search in MySQL has to be written as “fld REGEXP ‘[[:<:]]str”, and takes over 5 seconds.
– PostgreSQL is a royal pain. That has nothing to do with Valentina per se, but I thought I’d throw that out there.
Kem Tekinay (212) 201-1465
MacTechnologies Consulting Fax (914) 242-7294
To join the MacTechnologies Consulting mailing list, send an e-mail to: