Gustav Brock
gustav at cactus.dk
Tue Feb 10 03:50:52 CST 2004
Hi Erwin > Well my friends.... > I noticed Ms is using a modified Jet more and more for OS management. > I'm guessing here but I think to know why MS would stop with Jet. > Because they are not gooing to put the database in to a filesystem, but > the filesystem in a database! > And thats gonna be jet. > Jet has proven to be so fast and performing, that the only option they > have to resolve the slowness of NTFS. > Think about it! Is this not more logical? > How do you manage a giant list of files in a fast way? > -Exchange server is proven for years now that Jet can be very fast and > good. > -DHCP Server > -DNS server (not sure) > -WINS server > -Briefcase > All using Jet. The idea of using a database engine for file storage is not new - it may even be contradictory as the filesystem itself is a database, though an extremely basic one where the "engine" is an essential part of the OS. Oracle materialized this idea a couple of years ago; the model is roughly to cut down the OS (Linux) to handle one set of files - the database - and add an interface to the engine which mimics a drive. Nice idea - you may call it a bootable database engine - which gives you all the power, security, features, and years of experience of a heavy-duty engine. Allow me to quote myself from Oct. 2002: </quote> A part of an operating system is at least one file system. But the file system is nothing more than a specialized database, so storing images and documents as files just means to store them in another database system; you can say that an mdb file is a database in a database. When Drew puts an mdb into a blob field in his Access database, he just goes one step further. This is in line with Oracle which ultimately offer their database system with an extension which allows it to be used as a true file repository with an interface which simulates a file system. The ring is closed. However, this Oracle system runs on a rudimentary file system though, which is optimized for handling the Oracle engine only ... In fact, storing pictures, documents, etc. - or objects if you like - outside an mdb only represents two challenges: to keep the pointers to the file names and these file names in sync, and to handle security. Meeting the first is not difficult. Adding or updating, say, images is nothing more than storing the images in a directory and the paths of the images in the mdb. Deleting an image is done by either removing the file or deleting the path in the mdb or, preferably, both. Deleting paths to images creates orphaned files which can be deleted at the same time by the app or later by a clean-up routine - comparable to compacting the database file. Paths can be stored relatively to the mdb file - in the same directory or one or more subdirectories - or to a preset path which is used as a prefix; this is useful if you wish to store the files somewhere else like on another server. The prefix path must, of course, be available for the user. Never should you store the absolute path to the files, like "g:\images" as this may leave the mdb non-portable without a manual update of the stored paths. The second challenge, security, is more difficult to handle and will be specific to the actual environment as the user must have the same rights to add, update, delete and retrieve files as for the records storing the paths of those in the Access database. One possible way is to store the files on the server in a directory with no rights granted for the users and create groups in Access and for access to the file server directory with equal rights. Then, when the user opens the app, the group is read and a mapping of the restricted directory with the actual rights of the user's group is created by the app. </quote> This would also put an end to the discussion of where pictures should be stored: inside the database or as discrete files. In this context a cab file is also a small database. As another example - moving from the cab file to the other extreme - Lotus Notes invented the idea of storing all documents in a way which is logic and searchable for the user leaving the physical storage to the engine and the administrator. Thus, nothing new here. /gustav