Quote:[quote author=Rick_R link=1309958825/0#15 date=1310691463]Will Sesame 3 have a "blob" data type that allows storing random data with no change (such as an MP3 audio file, Excel spreadsheet, executable file, etc.)?
Internally, yes. In fact Sesame 2 has a field type for that purpose, as does 3. How do you want to enter this data into the database? How do you wish this type (unspecified binary) of data to be displayed or presented? Currently, it is recommended that you store the file path and filename of the file that contains the "blob" data. That allows the user to present that data using the default program they have selected for its presentation. It also prevents filling valuable database space with a copy of a file that is likely to also remain in the file-system. It is trivial to write a mass update that can collect the contained file paths so that they can be zipped/tarred for transportation to other systems.
Not to say that I won't implement some sort of interface to the BLOB type. We've had it sitting in the engine dormant since before Sesame 1.0. But I'd hate to draw large binary files into the engine simply for the sake of having them there rather than in a directory nearby.
I'm thinking, for instance of what FoxPro had--and we did have this discussion before, but not specifically in the Sesame 3 context.
Regarding display, because
any type of data could be stored there normally there is no provision to display the data. If you "look" at the field it only displays some type of "Empty/Not Empty" status indicator.
Regarding entering and retrieving the data, the only thing the program can do is store something to the field, (usually either the contents of the clipboard, a variable, a field, or a binary file), set a variable, a field or the clipboard to the contents of the field, use the field like other fields would be used, e.g., MyData = @Left(BlobField, 1000), or write the contents of the file to a binary file. Considering that the field content could be 10-100MB or more, you want the ability to read and write files directly without having to use a variable in memory.
I think I may have seen some programs that allow a text-box-like entry "window". But frankly, I don't see that all the extra work to include that functionality would be useful. The user could create an unbound text box and then set the blob contents to it.
Regarding, "valuable database space," with 2TB drives commonly available for well under $100, even a 100GB database really wouldn't be that big a deal. I could easily see storing things like audio files or hi-def photos--even in multiple formats and at multiple resolutions. For instance, awhile back I was looking into creating a "personal information" database with FoxPro that would have scans of diplomas, tax returns, photos of places I lived, and all sorts of information. Even though FoxPro is limited to 2GB per DBF file, that still would store a heck of a lot of data as long as I don't include any videos. Quicken, for example, has an "attachment" feature that lets you attach images of checks, invoices, etc., to an individual entry.
One problem with the "mass update", tar/zip, etc., approach is that it assumes someone fairly knowledgeable will be readily available. From what I have seen, it looks like Sesame's clientele are mainly Windows power users working at companies that can't/won't spend the money to have an outside firm write a custom application from scratch. Or an outside consultant writes the application and an in-house power user handles most of the sysadmin work and can do things like mass updates. In such cases, as long as the power user who works with Sesame is available, the mass update/archive approach may be viable. But one problem is it does clutter up the system with perhaps hundreds or even thousands of extra files. And then there is also the security issue, making sure users don't access such files. Another problem is the various indexing programs. You either have to make a huge list of "exclude" folders or search results show up hundreds of irrelevant files. In theory a sysadmin can handle that. But in a company where the sysadmin is really just a power user or one person is expected to handle
everything, those things usually fall by the wayside. Also, most programmers and sysadmins hate having a huge number of mixed file types. If they are going to have "associated files", normal practice would be to put all wordprocessing documents in one folder, audios in another, PDF's in another, etc. And then those probably would wind up being categorized
more, e.g., by client, year, decade, etc., with audio/PDF/video folders for each client. That basically would be unnecessary if the data is in the Sesame table.
Another problem with the mass update/archive approach is old records. Records from 2+ years ago are
removed from the database and archived. Subsequently, for whatever reason, someone decides to move all the current "associated" "blob" files and does a mass update. I guarantee you no one is going to remember to reload all the old records, unzip the archived "associated" files, move the "archived associated" to the new folders, mass update everything, and then rearchive and re-remove the old records. And, of course, sooner or later someone is going to need the archived records because an old client is being reactivated, etc. It's a
lot easier to do like Quicken and many other programs--when you exit it asks "Backup database?" You press OK and 30-60 seconds later it says "Done". That's a lot easier if everything is in a handful of table files.
Realistically, most binary files
won't be large. Yes, someone might store a 120-page scanned PDF or videos or executables. But Sesame isn't an "industrial-strength database". Chances are the majority of files would be less than 10MB--probably similar to what typically can be attached to an email.