Slashdot Mirror


How To Implement A Database Oriented File System

ALundi writes "A really great read from Andrew Orlowski over at The Register on how Benoit Schillings and Dominic Giampaolo created the 64-bit journaled and attribute based Be File System. Schillings and Giampaolo discuss a variety of design and implementation issues, including data integrity and file system performance. " Interesting in the context of MSFTs plans to implement a DB filesystem in future versions of MS Windows.

24 of 232 comments (clear)

  1. BeOS file system rocks. by morgajel · · Score: 5, Interesting

    I used Be on and off for about 6 months. Once you get the hang of it(the filesystem), you see the true power- especially with the address book.
    If you want some real insights into the OS as a whole, check out the BEOS Bible. not so good if you want an in depth discussion, but for non-kernel hackers it's a fun read and very informative.
    Read the section explaining how their address book works. it's really cool.

    --
    Looking for Book Reviews? Check out Literary Escapism.
  2. Reminds me of the BeOS 5 Bible reading on this. by redhatbox · · Score: 4, Informative


    If I remember correctly, Be originally used a "true" database backend as the filesystem, but ran into performance issues compared to the R5 fs implementation. I can't help but wonder how many of these issues were largely due to the speed of the technology used at the time.

    I suppose it depends on your application, but I know a lot of web-based platforms already use true db backends (Oracle, PostgreSQL) to handle all data storage, representing a filesystem as a hierarchial set of rows in numerous tables. I've written several applications this way, and am currently working on a content management platform which also uses this model. Need to make a change to the filesystem structure (adding attributes, changing the security model)? Just modify the DB structure and you're done, especially with databases like PostgreSQL where you can use the database engine itself for a *lot* of functions (via triggers, stored procedures, security settings, etc).

    As more and more functionality is brought into web-based application environments, I can see the importance of "old style" filesystems starting to fade somewhat for a lot of apps. Yes, they'll still be necessary (the database itself has to reside somewhere, obvisouly), but not in the same way they used to be. Just a few thoughts :).

    1. Re:Reminds me of the BeOS 5 Bible reading on this. by JordanH · · Score: 3, Informative
      If you were using Oracle, you could take advantage of iFS to provide a file system integrated with your database.

      It's a true (NFS, SMB) mountable filesystem, with all the flexibility that provides, but also the replication and other Enterprise features you want from a database.

  3. New FS Engineer at Apple! by entrylevel · · Score: 3, Interesting

    ...while Dominic, we are delighted to learn, has subsequently joined Apple as a file system engineer. (He started last week)...

    Does this mean that Apple is finally going to put some kind of reasonably modern filesystem under OS X?

    Have they finally seen the true genius behind their own iTunes interface?

    Have they finally realized that they will shortly be THE ONLY operating system that still relies on file extensions as the primary way of identifying files?

    I truly hope that this snippet is as wonderful as it sounds, as it may finally restore my faith in Apple, as well as cure me of my unhealthy Debian and XFS addiction.
    --
    Karma: Incomprehensible (Mostly affected by posting at +5, reading at -1, and metamoderating everything unfair.)
    1. Re:New FS Engineer at Apple! by loosifer · · Score: 3, Insightful
      what's so bad about file extentions??

      Ugh, don't get me started... Here's a short list:

      • Only a single piece of metadata can be stored (filetype)
      • Combining data (filename) and metadata (filetype) kind of belies the definition of metadata in the first place
      • It can get very confusing to see things like file.txt.rtf
      • The tendency of systems to want to hide the extension, and the resulting confusion when your FTP client says the file is named stuff.zip but your interface just says "stuff"
      isn't it easier and faster to look at the filename than metadata and file contents??

      Only if the metadata is stored in some other inode.

      In the case of BFS, the inodes are always 1024 bytes, but the inode information is only about 300 bytes; that meant that BFS had 700 free bytes in the inode--free in the sense that they don't take up any more space, but also free in the sense that you don't need to do an extra seek or an extra read to get them. Now that's free! You can go about 700 bytes, but then it needs to allocate more blocks (I don't know if that requires another inode, though).

      Also, in this case, even if it is just slightly faster to look at the filename, you lose every other possible metadata feature, just to get an essentially unmeasurable increase in performance. I'd take BFS and all of its features at half the speed if I could use it on any OS I wanted.

    2. Re:New FS Engineer at Apple! by curmi · · Score: 3, Insightful
      Have they finally realized that they will shortly be THE ONLY operating system that still relies on file extensions as the primary way of identifying files?

      You gotta love how every Unix/Linux/Windows user now talks about how file extensions are so bad. A few years ago these same people used to say how crap Apple's idea of meta data was, and that file extensions were better (cross platform, etc, etc). The arguments that I've had with Unix people at different places I've worked. It seems to take the rest of the world at least 10 years to catch on to ideas...
  4. Dominic's Book by jimm · · Score: 5, Informative

    Dominic's book, Practical File System Design with the Be File System, is wonderful. I'd never delved into the innards of a file system before. Reading his book was enjoyable and interesting. I learned quite a lot.

    --
    Transcript show: self sigs atRandom.
  5. Database-like by fm6 · · Score: 5, Insightful
    It's important to note that they ended up with something "database-like" rather than a true relational DBMS. That distinction is often overlooked (not least by MySQL enthusiasts!) and is pretty important. The thought of a workstation file system that has all the performance and maintenance issues of a "real" DBMS strikes me as pretty scary.

    XFS is also "database-like". But BFS seems to be rather more ambititous an effort -- and very intriguing.

    This is one of several BeOS features that the Open Source community should reall consider stealing. But let's consider these features individually, with one eye on whether they're likely to achieve acceptance outside the ranks of BeOS enthusiasts. Let's not waste time on wholesale BeOS clones and compatibility layers. Those are exercises in denial. BeOS was a nice piece of work, but it's as dead as CP/M. Deal with it.

  6. Re:We already have a "database" file system... by MsGeek · · Score: 3, Informative

    No, it's called the Classic MacOS. The Mac has used a database to store files and their attendant metadata since HFS was introduced.

    It uses B-Trees which if you RTFA is thought not to be a very good solution, but it was revolutionary for its day.

    The idea of having a resource fork to all files, a little name badge for every file that tells file type and creator type, is tremendously helpful too. However, the resource fork on Classic MacOS files tends to corrupt at the drop of a hat, rendering this little innovation, also introduced with HFS, fairly useless.

    Oddly enough, however, I find good ol' MacOS fairly robust...so much so that there is no need to reformat and reinstall on a regular basis. Its memory management sucks, but aside from that glaring problem it's a beautiful operating system. I have PCs running Windows and PCs running Linux here at Catseye Labs, but it's my good ol' G3 that I do most of my work on.

    --
    Knowledge is power. Knowledge shared is power multiplied.
  7. Possibilities by Justen · · Score: 3, Insightful

    The possibilities with the Be file system were pretty much infinite. There were little things in the OS that would show you this, the address book and email "client" being some great examples. It was incredibly powerful. The only problem was when transporting files from one operating system to the other. And, even in this, Be did an admirable job.

    My fear, and I think the reality is that Microsoft will not be so kind.

    jrbd

  8. Re:wrong way round by JordanH · · Score: 5, Interesting
    • for the majority of databases the data should be moved to the filesystem no the database.

      Simple joins, and most of them are can be replicated with links if necessary. Almost all the databases I've seen would lose little from moving out of the DB and into the filesystem.

    But then, you lose all the advantages of database journaling (not just integrity, the ability to rollback to a previous state, if necessary), consistency (you have to make sure the files can't be accessed by other operations before the commits are done) and replication.

    If I were building an application today with Oracle, I would be very tempted to use iFS for these reasons.

  9. I prefer object-oriented graph filesystem by WetCat · · Score: 3, Interesting

    Object-oriented graph system
    - need much less overhead than database system
    - can hold multiple ways to access one object, easing semantic link
    representation
    - can be secure by allowing only the workflow links.
    It should be organised as a set of object that hold data within them,
    with links between them.

  10. Leveraging a DB FS by bihoy · · Score: 5, Interesting

    One of the areas that I am interested in is using a DB FS with various "helper" apps. These helper apps would provide a way of managing your data. They could be integrated into another app directly or as a plugin or they could be standalone apps by themselves.

    One could provide a helper app that allows you to look at the stored files in ways other than your typical file listing. To do this would require various metadata attributes to be associated with the data. Helper apps would be provided for all of the standard applications that read and write to data to the file.

    For example, one app could set attributes to categorize data. One could then search for data on your system, and potentially others, much in the same way as you would search for stuff on Yahoo.

    Say you are in a rush to finish your taxes but you need to put together an itemized list of business expenses. You have information on them stored in various places including text files, e-mail, spreadsheets, etc. You could use find and grep to go poking around looking for them or you could use a helper app that does a quick search of attributes and presents you with a list of candidates and ca even call up other apps or services to look at the data. Once you have identified the data another attribute can be set that your tax software uses to record it and pull it into your tax forms.

  11. OpenBeOS BFS by Anonymous Coward · · Score: 3, Informative

    Bruno G. Albuquerque and Axel Dorfler are working to make a 100% compatiable clone of the file system that shipped with the later versions of BeOS as part of the OpenBeOS project.

    They have a fantastic amount of the work done already such as :
    o Read-only BFS
    o Kernel Interface
    o Full Attribute Support
    o Indexing
    o Symlink Traversal
    o Queries, full UTF-8 Support, and support for non-indexed attributes.

    I believe they are also fixing some problems that were in the original FS.

    I am sure they would be glad for some more file system engineers. Come to think of it, the rest of this open source project is going really well too, but as always it needs more programmers....

  12. Re:Noooooo! by the_2nd_coming · · Score: 3, Informative

    well lets see......Ciro (code name for Win 2k) was begun in 1995, they wanted to have a DB file system in that, that was thier plan and that is when it began.

    BeOS began development in 1991. the first iteration of a DB backed file system came out with BeOS 1.0 and BFS replaced in around 1994ish.\

    soooooooo.......MS again is a day late and a dollor short.

    same with MATURE Office productivity products, since workperfect was mature long befor word 1.0 was released, as was lotus spread sheet.

    perhaps they did good work on the OLE crap, but that stuff sucks (imho) and Adobe has much better products to crate desktop publishing work that OLE was intended to help with....not to mention that word still can not do what TEX can do.

    --



    I am the Alpha and the Omega-3
  13. I used to like this idea. by Oggust · · Score: 3, Insightful
    But there are some very real problems:

    • Portability: Have you ever tried to move data from DB system to another? Not fun! There need to be some standards! There is such a thing as SQL-92, but nobody uses it yet. Yet? Right...
    • Portablility again: Isn't it nice today how you can get a tar file from just anybode, and it will just untar on your system, even if you haven't got the same OS and filesystem as the guy you got it from? Well see the previous point.
    • Performance, but that's possibly not that big a deal: A database can do a lot of work "server side". What do you think will happen to the system load on a big multi-user system when some moron submits a huge SQL query with all kinds of weird joins and stuff?

      Not much user, lots of system and iowait, that's what. We run into a whole new realm of needing accounting for these kinds of things.

    /August.

    --
    "An object declared as type _Bool is large enough to store the values 0 and 1." -- 6.1.2.5, C99 standard.
  14. my two cents by joshuaos · · Score: 3, Interesting
    Benoit: Either you make the data shared, or you make the application components shared. And sharing the data was easier. (Dominic agrees).

    If the data is shared, and you have libraries that are shared, then why not ask the data to display itself (object.display(x);) and have it call to a standard library (system library?) which queries a system properties database object as to what application to display it? Don't actually store the display code in the objects, but have the objects query the system as to what the user has specified to display that type of data with.

    Dominic: That's what I mean. Some people are very anal about organizing things in rigid hierarchies and others are 'I know what I want to find'.

    I think there is a place for hierarchies, but not as the base organizational method of the filesystem. I would like to see a hierarchy of attributes, or keys, or whatever you want to call them. When you save an object (off the internet, or out of your head), a title is only one possible attribute you want to give it. When I save a pr0n jpg, it doesn't need a damn title, I need to mark what it's a damn picture of (amateur AND cumshots AND redhead)! Perhaps start with people, places, things. Or later in the hierarchy, sound -> music -> various bands as well as various artists as well as various sound effects as well as dates and live or studio, all keyed (so to speak) and queryable. But the hierarchy is for browsing. Just for browsing, because browsing is important (when you want to look at cumshots, you want to look at cumshots, but when you query for cumshots, watersports and lesbians, well that's bloody well what you should get), and micro$oft's nice little explorer looks about right. Although instead of a stupid directory tree, we have a tree of object properties and types, and any object can be in any number of places in that tree, depending on it's attributes (categories?).

    I know of course that I haven't really said anything new in this post, and I know that performace needs to be taken into account. This is, however, the way things are moving, and all we really need is a really good, really fast, solid state storage medium. When permanent storage is as fast as or faster than RAM is today, the database filesystem will finally become a reality, until then, we'll sure be gearing up.

    Cheers, Joshua

    --

    When in danger or in doubt, run in circles, scream and shout!

  15. Microsoft is NOT putting SQL Server into Windows!! by Anonymous Coward · · Score: 5, Interesting
    I should know - I actually interviewed for a position in the group developing this. (I signed the standard pre-interview NDA, so I'm posting anonymously, but I'll still try to stay general so I don't get into too much trouble...)

    As the ExtremeTech article pointed out, they are not even considering putting the full-blown SQL Server into Windows. SQL Server is too resource-intensive (it really wants to use all of the available CPU, memory and disk space), too much overhead, and most importantly to MS, too profitable (sales of SQL Server / BackOffice make up about 10-15% of MS's revenue.) There's no reason to bundle it if people are willing to pay a ton for it separately!

    As the article says, they're thinking (nothing decided yet) about including MSDE, which is exactly the same as SQL Server 2000, except it is tuned for 5 concurrent users (and hard-limited to 10), the database size is limited to 2GB per database (the same as the Jet DB, aka Access), and it doesn't have the nice GUI admin tools bundled.

    Also, the OFS (Object File System) discussed previously probably won't get added either. There's a good reason why it was talked about way back in the Cairo (pre-Win95) days but never implemented - it's really, really hard to do, and it's hard to even convince anybody of its value. (Just look at Be.) Active Directory was originally supposed to be an object store, but I don't think anybody uses it for that (if anybody even uses it at all.)

    What probably will be included is an improved version of Indexing Service, which is currently included in Windows 2000 and XP. For those of who are fortunate enough to be unfamiliar with Indexing Service (formerly Index Server), it's an NT service (think "daemon") that periodically scans the file system for new / updated files, and then adds whatever metadata it can extract into a database of sorts, which is then used to speed up searches in the built-in Search dialog on the Start menu.
    There are a couple of problems with the current implementation:
    1. It's extremely buggy. For example, it's supposed to run only when the system is idle, but it usually chooses to run right when I'm doing some big IO-intensive process. It periodically also consumes all available memory and CPU cycles, so I usually leave it turned off.
    2. It doesn't index very much metadata. For most files, it only indexes the standard file system attributes (size, date, extension, etc.) For MS Office documents, it can index the Summary Information property stream, which usually includes things like Author, Title, etc. If you have IIS running on a box, it can also index the META tags in HTML documents. Other than that, not much. It does have some extensibility , by means of DLLs that implement the IFilter COM interface, but no 3rd-party vendor seems to have done much with that, perhaps because of #1.

    So, in summary, MS's plans for the DB-in-the-filesystem look a lot more like Reiser4 than like BeFS or SQL Server.
  16. Re:Threat to Open Source? by mmusn · · Score: 3, Interesting
    That's a tempest in a teapot. MS Office files still need to be serializable somehow, and that format cannot possibly be worse than it is right now. If anything, it may get better with Microsoft's push for XML.

    Functionally, database-based file systems are an old hat. If they were the magic bullet Microsoft and BeOS think they are, they would have caught on long ago. To me, it looks more like a bunch of college hackers getting mightily excited about a whizbang feature of little real value. (Database based file systems have worked well in some niche markets--IBM is selling some systems with such file systems.)

    Something needs to be done about indexing and search, but putting a database into the kernel is not the right thing.

  17. Integrated database computers: IBM AS/400 by octogen · · Score: 5, Informative

    It's really not Microsoft's innovation.

    IBM's AS/400 (a midrange computer system targeted for commercial use/accounting/warehouse/etc...) is based on an object-oriented database filesystem which is implemented at the firmware level (SLIC) rather than at the OS-level - and this system has been around for about 20 years and IIRC it always had quite good performance.

    -arch----

    A few words about its architecture, if you're interested...

    The operating system (OS/400) itself runs on top of this object-oriented low-level "OS" by calling its APIs - as a result, most parts of OS/400 are platform-independent. If you'd manage to get the SLIC running on another hardware platform, you could probably install a nearly unmodified version of OS/400, and it would do its work.

    Actually, I'd call the SLIC code the 'real' operating system kernel rather than OS/400, because OS/400 itself would not work without an apropriate SLIC layer.

    Everything on the system is an object, so you'll always have to use the object's methods to perform some operation.
    For some applications that may be an advantage, because security is enforced on each object at the firmware level. For other applications it might also be a disadvantage, because you'll always have to use a limited set of APIs for modifying data. That blocks many methods commonly used for writing highly optimized code.

    -end arch----

    One of the benefits of having a database-filesystem is probably the fact that you do not need to run a database product on top of the OS.
    Every object on the system can be backed up and restored in a very simple way. Logical files (multiple logical views of one physical file) can help to keep data management simple and consistent.

    On the other hand, you will have to update the entire OS (including the kernel) when you need to install a new release of the database - which means, that you'll have to reboot the machine.

    And - last but not least - the more code you have in the OS kernel, the higher is the probability of having dangerous bugs somewhere in the kernel.
    It should not be necessary to mention, that bugs in the OS kernel may compromise all system security.

    There are certainly many advantages and disadvantages regarding the database-filesystem issue, so I think it all depends on what you want to do with your computer.

    -----

    kind regards from Austria,
    octogen

    PS: i hope my english isn't too poor..
    And - by the way - even Microsoft uses AS/400 boxes for running its business, so what do you think, where did they get their inspiration from...?

    1. Re:Integrated database computers: IBM AS/400 by gabrieltss · · Score: 3, Insightful

      Mod this up!

      This guy has it right. I have been working AS/400's for YEARS! The OS is built around the DB2 database. And IBM beat MS to the idea a long time ago. But, MS likes to make everyone think they actually "Innovate" things. When in fact they don't! They buy up companies, steal technoligies etc... The only thing MS has perfected is the marketing engine. And yes it is true MS uses AS/400's. In fact MS wanted me to come interview to work on their team that did the MS--> As/400 integration work. (I told them to blow me, I wouldn't work for a company I dispised!).

      --
      The Truth is a Virus!!!
  18. Re:Unix lags by loosifer · · Score: 4, Informative
    No, I think I do understand the problem.

    No, you don't.

    Be used the following method of determining which app would open a file:

    1. Check for an app preference stored in the file. This was almost never used, but was there in case you wanted it.
    2. Check for an app preference for the file type. This is a system default, set by you, and was the most common method.
    3. Check for an app preference for the file supertype. Remember that this uses MIME types, which have super and subtypes. Again, this is a system-wide preference that you set.
    4. Check for any app that can open that filetype. You can't even do this on most systems!

    Notice that nowhere in here does it take into account what app created a file.

    Even better, you can always right click on any file (or any list of files of the same type) and get a list of:

    • The preferred app for that file
    • The preferred app for that filetype
    • Any apps that can open that filetype
    • Any apps that can open the supertype
    • Any apps that can open any filetype
    And the list shows up pretty much instantaneously. Do that in any other system, anywhere, no matter how many hacks you add. And yes, you'd use it every single day of your life if it were available to you.

    So no, I'd say that you don't understand the problem.

  19. Re:AD doesn't yet have wide acceptance, DBFS doome by Malcontent · · Score: 3, Insightful

    All of that means that all corporation will eventually be forced to migrate to AD whether they like it or not. How corporations pay to get their options taken away from them and make themselves bitches for MS never ceases to amaze me. The CIOs of america are awfully fond of saying "thank you sir may I have another!".

    --

    War is necrophilia.

  20. Re:Unix lags by BeBoxer · · Score: 3, Insightful

    Well put. The BeOS filetypeing is far and away the most robust of any OS I've ever worked on. I've got an audio application I've written which leverages attributes as much as I can. One of the neat tricks I can do is that I save playlists as folders. A "playlist" folder contains links to either individual songs or entire folders. It can also contain "query" files which perform searches on the file attributes. I actually create normal folders in the Tracker, and then assign them to open up with my application instead of Tracker. So if you double-click the folder, it runs my app and loads the playlist. If you want to muck with it manually, right-click and open it with Tracker. I don't know of any other OS that gives me that much flexibility.