Sunday, May 27, 2012

Didget Organization

Each Chamber within the Didget Realm is capable of storing billions of Didgets. Unlike files in a file system, a Didget does not have to be "located" within a folder. Each Didget can be assigned certain types, attributes, and tags that can be used to distinguish it from all the other Didgets in the system. Simple queries can quickly sort out all the Didgets that match a given search criteria.

Each Didget can be a member of one or more "data sets" but there is no requirement to do so. This means that I could have a Chamber with 10 million Didgets in it and have none of them categorized into a specific data set. This would be like the early days of file systems where there were no folders and all files were in the "root directory".

Even with folders, it is possible to have lots of files in any given folder. For example, some folders like "Windows", "bin", or "My Documents" can sometimes get populated with several thousand files. In file systems, such a situation can cause some real problems. Name conflicts are more likely to arise as the number of files within a single folder rises, since you can't have two files with the same name in the same folder. Performance is also slow when you try to load the contents of the directory into a file manager or dump the list to a terminal screen when there are so many files.

There have been tools available for a long time to help users pick a subset of files out of a long list of available files within such a "crowded folder".  To pick out a smaller subset of all those files a user may issue a command like "Dir *.exe" or "ls *.cpp". Just those files with that extension will be listed, giving the user a much more manageable list to navigate.

In the Didget Realm, things are substantially different. Since each Didget has a unique number as its identifier, there is no problem with having 10 million Didgets all in the same "root directory". The interface is designed to perform lightning-fast searches based on criteria much more powerful than just file names or extensions. In this respect it has a lot more in common with a database than a file system.

So if I want to get a quick list of all the Didgets that are photos in JPEG format of my vacation in Hawaii last year, I can just do a simple query against all 10 million Didgets and get a list of all 100 photos in less than a second. I don't have to navigate down through a directory hierarchy to try and find the C:\Photos\Vacations\Hawaii\2011 directory that has all 100 photo files in it. If I want a Didget to be a part of several different queries, I can just attach additional tags like ".people.Group = Family" and ".activity.Sport = Surfing" and it will appear when I search for those things. I don't need to create separate folders like "C:\Photos\Family" or "C:\Photos\Surfing" and either put copies of the photos in them or create hard or soft links to the original photos.

In addition to the quick query capability of our system, Didgets can be organized into different groups or sets that are more persistent than ad hoc queries. There are three special kinds of Didgets that help organize them - List Didgets, Menu Didgets, and Collection Didgets. I will discuss them further in my next post.

No comments:

Post a Comment