So decision whether use CHAR or VARCHAR should be based solely on application's requirements.
E.g. store fixed length codes in CHAR, store names in VARCHAR (to allow correct concatenating).
1Kb page size => 64 Mb 2Kb page size => 512 Mb 4Kb page size => 4 Gb 8Kb page size => 32 GbBLOB +
DB_KEY, which is 64 bit value, where
32 bits represents relation id and 32 bits are used to locate the row.
So theoretical maximum number of rows in one table is 2^32
(but for several reasons the real maximum is even lower).
Blob-ids are assigned from the same address space as DB_KEYs,
it means the more blobs in table, the less DB_KEYs will remain to address rows.
On the other hand when stored rows are wide (e.g. if they contain long VARCHARs),
then less rows fit on data page and many DB_KEY values will remain unasigned anyway.
INSERT INTO tab(MyBlob) VALUES('abc');
(But it is possible to use UDF for converting string to blob).