Here are some modification introduced in this 1.2 version:
   - new TSynBigTableString class to store data indexed from a UTF-8 encoded string ID instead of a numerical ID;
   - added caching for last Get() items (may speed up next Get() a little bit);
   - custom Get() method for range retrieval into a dynamic array;
   - TSynBigTable modified in order to handle custom data in header (used to store string IDs for TSynBigTableString for instance);
   - whole engine more robust against any file corruption or type mismatch;
   - fix: Count property returned an incorrect value (including deleted values);
   - added timing (in 1/10 ms) for test steps.

TSynBigTableString is a new class to store huge amount of data, just specified by a UTF-8 encoded string ID
- string ID are case-sensitive (important warning);
- string ID are of UTF8String type, so you must make explicit conversion in your program to the native generic string type - you can use our Utf8ToString() and StringToUtf8() function provided in the same unit, which work for all version of Delphi (Unicode aware or not);
- because of string ID, this class is a bit slower than TSynBigTable (but bottleneck is in OS disk access, not in our string ID implementation) - but in all cases, the engine is very fast;
- each string ID maximum length is 65535 (to save some disk space);
- string ID are stored in alphabetical order, and can be accessed directly from StringID[] and NumericalID[] properties.

The source files (and the compiled test exe) can be downloaded from http://synopse.info/files/SynBigTable.zip