PennFS: A on Relational Database

Dept. of CIS - Senior Design 2012-2013

Jin You Di Mu Hongda Ma [email protected] [email protected] [email protected] Univ. of Pennsylvania Univ. of Pennsylvania Univ. of Pennsylvania Philadelphia, PA Philadelphia, PA Philadelphia, PA Boon Thau Loo [email protected] Univ. of Pennsylvania Philadelphia, PA

ABSTRACT collaboration system. PennFS, a Windows 8 Store Application, aims to visualize The current file system made many attempts to solve the and simplify the user experience of file management by im- problems. For example, to reduce the time of going deep plementing an alternative file system that is better indexed to the folder of folders, current file system allows the user and organized through relational database. The traditional to create shortcut to files and favorite folders on desktop. hierarchical file system has several limitations; especially, Also, current file system accelerates file searching by allow- when files share multiple relational properties, one file may ing search by keyword. However, these solutions are still relate to multiple folders, and the primary search method limited by the disadvantage of tree structure in current file using keywords is not universally efficient. To resolve this system. problem, a tagging system is implemented using database de- A customized based on a relational database is an sign principles to index the filesystem. In PennFS, a new ideal way to resolve this problem. Using a relational database application layer based on relational database and Language- to manage the file information, the limitations of the tree integrated Query (LINQ) is introduced to coordinate with a structure in hierarchical file system can be mitigated. After user interface built with C#/Extensible Application Markup users attach multiple tags onto a file, tags can be digested Language (XAML) [9], local file system accessed using Win- by the relational database as indexes to facilitate the search dows Software Development Kit (SDK) for Windows 8 [10], . One advantage brought by this tagging system is and an email system accessed using Limilab application pro- that only one copy of file is required in the system to present gramming interface (API) [6]. files in multiple views. In addition, database layer is able to translate and forward a user query to search for data in both local file system and email. At last, since the relational 1. INTRODUCTION database stores only file , it allows easier integra- tion with other platforms. In almost every mainstream , a hierar- To implement the above idea, PennFS integrates the user chical file system with a tree structure and extra utilities interface using Visual Studio 2012 with Blend [8], a local file allowing search by keyword is used to store files and doc- access system using Windows SDK for Windows 8, a Gmail uments. This structure has remained unchanged for many file system access system built with Limilab API, with a years while the daily usage of computers soars and the com- database management system using LINQ. PennFS builds a plexity of file relationships increases, so it is very helpful to relational layer on top of the hierarchical file system and con- develop new ways to facilitate file searches. nects the database includes Windows 8 file system metadata Several problems are innate in traditional hierarchical file so that files under the same tag, including user-defined tag system which is based on the tree data structure. First, and system-recorded tag, could be searched and managed by since the files are always treated as leaves of a tree, as the LINQ queries. Secondly, metadata from online email service number of files increases, users have to build complicated and online file storage platforms is recorded in the database. tree structure to classify the data manually, thus extending Examples include email metadata from Gmail. In addition the time of file management. Secondly, the more relation- to the feature of searching for files, PennFS supports search- ships the files have, the deeper and more complex the tree ing of tags from the database. With this feature, when becomes. In many cases, since the files are hidden deep in searching with keywords, users could avoid placing multi- the tree structure, search for files become very inefficient. ple queries in various products such as mailboxes and cloud Thirdly, files sharing common features may scatter in many storage. places in the tree structure, so users who want multiple files at the same time have to search in many locations to collect all the files. Fourthly, users have to save duplicate files un- 2. RELATED WORK der different folders if they want to organize files according This section discusses related work includes the origin of to multiple relationships. Finally, the current file system the idea of relational file system, WinFS, an attempt of does not support management of email and files in online implementation database file system on Windows platform, tagging system in Gmail, and database connection. to SQL maps the of a relational database to an object model expressed in the programming language of 2.1 Idea of Relational File System the developer, which is C# in our application. It translates Hierarchical file system is the most traditional and commonly- developing programming language into SQL the language- used file system. With a tree-like data structure, it is con- integrated queries in the object model and sends them to venient for users to navigate at front-end and easy for de- the database for execution at run-time. Also, LINQ to SQL velopers to implement at back-end. However, hierarchical translates the return result from database back to objects database has its limit; it is too specific and restrictive on so that developer can work with developing programming defining a file since one file can only belong to one folder. language. Many theoretical and practical works have been done to im- prove the file storage and management. Here we want to 3. SYSTEM MODEL discuss the idea of building a file system based on relational database principles. In 2005 File and Storage Technologies Conference, a suggestion that filesystem should borrow ideas from database was presented by Dr. Jim Gary [3]. Later in his technical report published in 2006, he argues that, unlike what previous folklore suggests, file system performance may be improved by using database techniques to handle small files [12]. 2.2 Relational Filesystem on platform, the project that most closely re- sembles our approach is WinFS, an advanced storage sub- system project for Windows platform. WinFS, developed but later cancelled by in 2003, was intended to be a revolutionary file storage system which empowers users to search and manage files based on content [5]. It introduces the idea that everything is an item, and each item has meta- data properties that are described by a schema. Unlike the Figure 1: System Model Diagram small projects for Unix mentioned above, WinFS intends to change the structure of file storage to allow a single item to PennFS builds an alternative file system on top of the ex- exist in more than one WinFS folder. PennFS adopts some isting New Technology File System (NTFS) system in Win- ideas of WinFS. First, the WinFS UI, unlike the traditional dows operating system. As shown in Figure 1, it consists of hierarchical folder view, is very friendly to users with com- five major components including user interface, API infras- plex projects by embodying many data visualization ideas tructure, file systems, email, and relational database. not traditionally in hierarchical file system, such as timeline i) User Interface: The user interface, a Windows 8 Store and graph. Also, the searching in WinFS is a process of Application, presents the file system view in a clean and organizing the relationships across the data and connecting user-friendly fashion. It allows user to create and assign tags them together. to file from local file system and emails. User should be able to configure the backend, set email accounts. This module 2.3 Tagging System: Gmail also takes different user requests such as search and files The tagging system in Gmail, one of the most popular access, and sends it to the API infrastructure. After hearing email services provided by Google, a simple and efficient way back from the backend, the user interface will visualize the to organize messages. With two important features, Gmail’s search results and file previews. tagging system inspires us to build a similar system in our ii) API infrastructure: the API infrastructure layer glues application. First, it does not limit the number and names all the other four components together. It takes requests of labels; users are able to classify a great number of emails from the user interface and propagates the query to the rest into categories like work, family, to do, read later and any of the system after proper translation of the request. At category users want. Secondly, while labels do all the work the same time, it collects the results and return to the user that folders do, users are able to add more than one label interface. Since this component is doing all the heavy lift- to one message. Thus, we decided to build a tagging system ing, the load for the user interface could be largely reduced. in our application to help the user to classify and find the In other word, minimum modification needs to be made in files more conveniently. Especially in the searching process, the user interface when we are extending our application to the tags can be transformed to search query directly; as a be compatible with new platforms such as new online email result, users with little background of database are able to folder and collaboration folder. The extensibility of the ap- utilize the advantages of database. plication is largely increased. iii) Local File system Access: this component deals with 2.4 Database Connection: LINQ to SQL all the requests for the local file system. It interacts directly Our application requires the communication between our with the operating system, fetching metadata, opening files development programming language C# and the SQLite and making edits. It is commanded by the API infrastruc- database, and LINQ to SQL [2], a component of .NET Frame- ture and performs the request as long as the request is within work version 3.5 provides a run-time infrastructure for man- the authorization of the system. aging relational data as objects, solves the problem. LINQ iv) Email Access: this component is added because emails are also managed in a similar fashion nowadays. As they are Infrastructure calls the local file system for the user. becoming an indispensable part of our life, we want to inte- grate emails into our system to enhance the user experience. 4. SYSTEM IMPLEMENTATION Since organize emails into different folders for future This sections explains the implementation of front-end lookups, this component is very similar to local file system user interface, and back-end including file access and email module in terms of functionalities. access in PennFS. v) Relational Database: The database component stores and manages the entire file metadata and customized tag- 4.1 Front-end Design ging information. It executes query requests from the API The user interface (UI) of PennFS is a Windows 8 Applica- infrastructure and returns the result back to the central com- tion adopting the Windows Application Store development ponent. As the metadata information is very small, a large framework [10]. Since the focus of PennFS is to provide the amount of redundant entries might be stored to optimize the user with a fluid and intuitive experience in file management, search performance. “Metro” the Windows 8 UI design style which embodies sim- plicity and the distinctive “touch-first” interaction, became our first choice. The UI consists of two parts; the layout and styling are implemented using XAML, and the controller and data ac- cess are implemented using C#. Blend for Visual Studio 2012 [8], a styling tool that automatic synchronizes be- tween Blend and Visual Studio is used to edit the XAML files. The XAML, a declarative markup language, is cho- sen because it simplified the creation of UI, especially under .Net Framework by allowing developers to create visible UI elements and to separate the UI definition from run-time logic. C# is chosen as the primary language for user in- teraction implementation because it is commonly used to develop applications that run on the .NET Framework [9]. Its compatibility with .NET framework and abundance in library documentations made the development of user in- terface very convenient. Moreover, with a simplified syntax compared to C++ syntax, C# provides many useful fea- tures such as nullable value types, enumerations, and direct memory access. Figure 2: Search Scenario 4.2 Local Filesystem Access Figure 2 shows a scenario of searching. Once user makes In this section, the discussion concentrates on the code- a search query (such as searching for all the files under tag base which supports Windows 8 local filesystem access. First, “cis400”), the application would respond in the following the overall assessment and justification of the local filesys- manner. 1) 1 : The UI forwards the requesting informa- tem design decisions are described, including development tion of tag and file source to the API infrastructure. toolkit and programming language.Then, five topics are cov- 2) 2 or 4 or 7 : The backend generates separate query ered in this section regarding the implementation. for different data stores and propagates the result at the The entire suite of local file system access interfaces was same time. For local file system, it sends the query to local developed using Windows Software Development Kit (SDK) SQLite database with database connector. Another query for Windows 8. It is adopted as the development infrastruc- of different format but same content is also sent to the email ture of PennFS because it provides a comprehensive set of system through email connector. libraries and tools to build the new Windows Store appli- 3) 3 or 5 or 6 : API infrastructure collects the result cations introduced with Windows 8 [10]. Since Windows 8 from the database and the email system. The result is inte- SDK is a first-party development toolkit from Microsoft, it grated to a uniform format. provides a number of key features required in PennFS. To 4) 8 : The integrated result is propagated back to the name a few, it encapsulates the managed .NET Framework front end, the UI organizes the result into a user friendly programming model which is essential in Windows Store view. application development. It functions seamlessly with Vi- In general, the system provides a simple interface to the sual Studio 2012, the major IDE. Also, it has a sufficient user while hiding all the complexity in the backend. In the and complete set of documentations and samples for each case of tagging and searching, a single query is translated to API. Lastly, it includes the Windows App Certification Kit multiple queries in the API Infrastructure first. Every trans- (ACK) for application testing and verification, a feature that lated query is then forwarded to its respective connector to has been shown extremely beneficial to PennFS. perform the required jobs (in the database, on the email Given its native compatibility with our development tools and so on). All the feedbacks received by the connec- and its comprehensive development facilities, Windows 8 tors after the jobs are completed return to the user interface. SDK has exhibited both consistent performance and high The user interface is responsible of parsing and formatting efficiency and has been proved to ease the complexity dur- the feedback before presenting it to the user. Similarly, when ing debugging. As discussed intensively in the User Interface the user wants to open a file from the user interface, the API section, the primary programming language is C# for front- end. To reduce the implementation complexity introduced tocol (IMAP) and Simple Transfer Protocol (SMTP) by inter-process communication, the local file system access protocols for operations on email. It only requires Transport utilizes the C# interface package from Windows 8 SDK. Layer Security (SSL) and could be access the same way as Listed below are six completed features developed using accessing any other standard email systems. Windows 8 SDK for PennFS and their respective function- On the Java side, Oracle provides a JavaMail API for all alities in the system model in Section 3. Java developers to build mail application. The API is stable i) Retrieval of file and folder properties. This suite of and less prone to bugs. More importantly, it was used by interfaces enable PennFS user to view the selected file and a number of developers in the community. Plenty of well properties in Windows 8 local file system. The file property written tutorials could be found online. The way JavaMail list provided to the user includes filename, file type, file size, works is it connects the IMAP server with an instance of date modified, date accessed and file owner while the folder the IMAPStore class. It is an instance of the Store abstract property list includes folder name and date created. class in the API. The store could connect to the IMAP server ii) Creating, renaming and removal of a file or folder. This with user credentials. All the messages in any folder could set of interfaces is crucial in supporting the system model be downloaded and from the server once the stored is con- since a user of PennFS should be able to modify the local nected. The attachments could also be downloaded to the file system. local file system. iii) Aggregate selection of one file or folder or multiple However the difficulty with JavaMail is to integrate the files. This interface has significance in allowing the user to email module with .Net platform where the front end was perform file operations. Before a user could either access built. While it was extremely convenient to manipulate the or modify the file or folder, a measure should be provided Gmail folder with JavaMail, it was relatively complicated to to select the file or folder for the action. Therefore, PennFS invoke the Java program from the .Net system. For exam- provides aggregate file and folder selection through Windows ple, the API infrastructure would call the email connector to 8 SDK. However, the limitation is that only one folder could fetch the file if the front end is trying to access the file from be selected at one time due to one application constraint on the Gmail. The call to the connector (in Java) from a dif- Windows Store Application. ferent platform (.Net) requires additional mechanism. One iv) Retrieval of file or folder thumbnails. First, the file solution is to maintain a common variable, such as entry in and folder thumbnails are different from each other. The the database, some temporary file on the file system, as sig- file’s thumbnail might be an icon for a PDF file, a preview nal and run a Java thread at background to monitor such for a picture-type file or a note symbol for a music-type file change. This is quite expensive in terms of the clock cycle while the folder’ s thumbnail is an icon of a folder. The user wasted when running the application as the Java program interface component of PennFS requires displaying file and is busy waiting in the entire lifespan of the application. An folder thumbnails as well as file and folder properties. alternative solution is to build a bridge between Java and v) Tracking the most recently accessed files or folders by C#. There are several such implementations available, in- the user. This feature is particularly useful in providing cluding paid and open source versions. The paid version the tagging functionalities. This task needs the backend is too costly to use, and the reliability of the open source capability to track the most recently used (MRU) files, which bridge was questionable, and they were also expensive to is provided by this interface. A MRU token is stored in implement because it created Java Virtual Machine while PennFS to retain access to the same MRU list. This feature running the C# program. can be used together with tags, described in section 4.4, in On the C# side, it would be straightforward to embed the determining the most recently used files under a particular connector into the API infrastructure module in our system tag. as the front end was also written on the .Net framework. vi) Keyword search on local file system. This feature is However, there was no official email library developed on the crucial for the realization of keyword-based tagging because .Net framework yet. Therefore, a third party C# library was it provides intuitive native search functionalities. used to establish the IMAP connection for the application. A few free libraries were examined, but none of them was 4.3 Gmail Filesystem Access well maintained. For instance, MailSystem.Net [11] was one of the libraries explored. It was a complete library with In this section, the design decisions for the Email Sys- SMTP, POP3 and IMAP support. The download package tem and the choice of Email client API are discussed. First, also contained many samples for different usages. However, Gmail was chosen as the first email server to integrate. Sec- the project was not updated for years and there was no ond, the language on which the email module was imple- longer any good support for the build issue occurred while mented on is narrowed down to C#. Then, a third party runnning on the current system. API, Mail.dll by Limilab, is chosen to be a temporary so- Open source libraries were also not chosen due to the in- lution that works well with rest of the components. Fur- compatibility. An open source library, AE.Net.Mail, was thermore, the idea of writing a new email clients for better previously a major focus prior to the integration of all mod- compatibility of the system will be discussed in the Future ules in our system. However, even it was implemented in Works section. C#, the API could not be directly called by the Windows The email component of our system was mainly modeled Store App. The reason was that the library was imple- based on Gmail email system. In addition, Gmail already mented as a old class library in C#. .Net for Windows has a built-in labeling system on its end. Hence the labeling store apps, the platform where the user interface was im- function for emails in our system could be managed directly plemented, is incompatible with the traditional C# class by Google, which reduces the burden of our local database library. Several standard C# libraries used in AE.Net.Mail by storing less data for each index. no longer exist in .Net for Windows app. Gmail supports the standard Internet Message Access Pro- As a result, Mail.dll by Limilab was integrated into the dating and removing database contents. Therefore, Pen- system as a major part of the mail connector. Mail.dll is nFS obtains correct dependencies for the SQLite database a paid API developed by Limilab. It offers a trial version after including the extension. On the other hand, by in- with little limitation in the functionality such as not showing stalling the SQLite Extension, the database interactions can the title of the email. Despite the limitation, the API is be implemented using C# programming language [4]. This compatible with Windows Runtim and .Net for Windows has reduced the backend debugging complexity and, in re- store apps. Moreover, even though it was close source, the turn, enhances the performance. Additionally, since SQLite API is well documented and easy to understand. So far the database is hosted under the default application execution best solution to circumvent the lack of .Net email library was folder in local filesystem, it maintains a steady performance to use Mail.dll in C#. To access an email or attachment in in real-time modifications. As shown in the Figure 3, the Gmail, the email connector could call the functions in the Mail.dll API directly without any cross-language bridge. As most part of the application is written on .Net framework, using Mail.dll is better than the Java solution because it does not add any overhead to the API structure. To have a more compatible email component, a licence for Mail.dll need to be purchase to reach its full functionalities. 4.4 Database Management System In this section, the reason that PennFS uses relational database, SQLite, for backend storage system is explained. Then, the entity-relation diagram of the database tables is included and design decisions of the diagram is provided. Lastly, a list of existing interfaces provided to the front-end user experience module is introduced. From the previous system model section, the tagging in- Figure 3: Entity Relation Diagram terface and system have been introduced and they are vital in PennFS. It is the role of tagging system to produce an ag- database design contains two entities, FileInfo and Tag, and gregate view of files, folders and emails to the user. There- one relation, Has. To better illustrate the diagram, defini- fore, tagging support is of major concern in the backend stor- tions of technical terms are given as follows. Entity-Relation age system design. Among the options of relational database diagram for database describes the data requirements and and key-value database, the former has a distinct advantage assumptions in the system from a top-down perspective [1]. in achieving the tagging system since relational database na- In the scope of database management system, Entity means tively supports indexing on its database table entries. It is an object that can be uniquely identified. Relation means a readily noticed that indexing is an interchangeable concept relationship that associates one or multiple entities. Prop- with tagging because they both are mechanisms in grouping erty means an attribute associated with only one entity. A data entries, thereby supporting the fast retrieval of data primary key is a set of properties that uniquely identifies one entries under same group [7]. For instance, the relational instance from an entity. By default, an entity should have database sets the “tagˆaA˘I˙ property as its primary index in at least one primary key [13]. storing the data entries. If a query requests for the entire As mentioned in System Model section, the backend database group of data under a particular “tag” property, the rela- system stores file metadata. Therefore, it is clear that the tional database uses the indexing mechanism to return the database should record file information such as name, time data entries directly. This correspondence encourages the of creation and time of modification. Tag entity is necessary usage of relational database. since the backend needs to retain the user-defined tags and One limitation of the relational database system is that its associates the tags with different set of files. The Has rela- scalability in indexing and returning query results is ques- tion signifies the connection between the two entities. Given tionable if the data entries are of large volume. However, one tag, Has relation can return a set of file metadata under because the scope of PennFS concentrates on the metadata that tag, while given one file token, Has relation can return of files and folders from local file system, online email ac- a set of tags associated with that file. Hence, the design count and online file depots, the volume of the data won’t and implementation of the above system is necessary and exceed the efficient scale of relational database, which is at sufficient for PennFS. least of magnitude of tens of gigabytes. As the justification of the Entity-Relation diagram has SQLite is the particular relational database management been introduced, the SQLite access interfaces are elaborated system which is the backbone of PennFS. It has both the ad- here. In particular, the database creation, update and query vantage of seamless integration with Visual Studio 2012 and are established using LINQ, a that has exten- the stable performance in data storage. To justify the first sive support for SQLite Windows 8 Runtime. With LINQ, reason, because SQLite team has incorporated the SQLite database entity tables are defined using “Table” attribute in native service interfaces into Visual Studio Extension SDK its declaration whereas the relation tables are defined using format, SQLite is currently an integrated service called SQLite “Association” attribute. Properties of entities are defined as for . This has greatly reduced the work- member variables under entity tables. The LINQ queries load in bridging the native SQLite queries and the managed are described in standard query operators for various entity front-end user experience. Moreover, this SQLite extension and relation tables [2]. has provided thoroughly tested interfaces in accessing, up- PennFS uses LINQ statements extensively to establish supports user-defined tagging and searching. The completed 5.2 Performance interfaces include the following: storing the user-defined tag To test our application, we loaded the folders for the into SQLite database; retrieving a set of files and folders course of this semester’s into the database. There are 279 metadata under a particular tag; searching reversely for the folders and 3194 files including coding projects files. Also, tags associated with a file in the database; Adding and delet- we tagged them using names of the courses, and add up to ing a FileInfo instance into the database; Adding and delet- 82 tags. For the current data set, our application is able ing a Tag instance into the database. to locate the files with tags efficiently. Traditionally, start- ing from a single root, such as “Fall2012”, locating four files 5. RESULTS from four different folders with an average depths of four would require 16 steps. The number of steps increase as 5.1 Product the number of file and depth increase. However with our implementation all the files will be presented in a flat view. The step of locating files in multiple folders is reduced to one single query. This shows that the search experience our system could largely benefit from the tagging with enough organization effort.

6. FUTURE WORK Given the flexible database design and user experience, PennFS could be extended in several aspects. First of all, more online file sharing depots could be incorporated. One additional overhead is the configuration on the database. In particular, because of the heterogenenity of metadata from other online depots, database entities should be expanded and corresponding interfaces should be updated. The other overhead is network delay because transferring updates from online depots requires network communication. Currently, Dropbox has a stable third-party API, Spring.NET Social Figure 4: Screenshot of PennFS Dropbox, available for Windows Store Application. Secondly, the email attachments could also be included in PennFS, a Windows 8 Store Application, provides a uni- the backend database. It is common that a user would use fied view of both the local file system and online email and the attachment functionality to store temporary files and file storage services. As the Figure. 4, a screenshot of the thus the inclusion of the attachments would increase the ac- application indicates, PennFS consist of three major views. cessability and mobility of PennFS. This functionality could On the left is a list of clickable options including Recent be built upon the existing LimiLab application interface. Files, Browse Files, Browse Email and Search. In the mid- Finally, recommendation algorithms could be applied to dle is the view displaying selectable files and emails. On the PennFS so that it could suggest relevant files for a particu- right is a list of all the tags in the system. Controls are done lar tag. This could be built from the active database entries by using an App bar (Figure. 5)at the bottom of the page. and the Most Recently Accessed list, which is introduced in PennFS users are able to organize their existing local file Section 4.2. However, to ensure that the recommendations system and email using tags. Under the browse files option, are up-to-date in real-time, it requires effort to implement user is able to create and edit tags by clicking the button an asynchronous event to execute the recommendation al- on the App bar. Once at least tag is created, user is able gorithm on the database. to load files belong to the selected tags into the database by clicking the load files button on the App bar. The files loaded would be shown in the middle file display view. To 7. ETHICS select emails, user can go to the browse email options to tag PennFS might introduce several ethical issues but they the emails in the same fashion. are all amendable in the long run. First of all, since Win- PennFS users are able to search for files according to tags dows 8 allows multiple users sharing the same device with and keyword. Once one or more tags are selected, the users different accounts, PennFS backend storage could introduce are able to choose to do either a union or intersection opera- an access conflict because all users on the same physical ma- tions on the result. If union is chosen, files belong to one or chine would share the same database location. One solution more tags would be shown in file display view. If intersection to this issue is that PennFS could utilize the Microsoft Sky- is chosen, files belong to all tags selected would be shown in Drive, a Microsoft native file hosting service, to store back- the file display view. In addition, if the user enters keywords end metadata. In principle, because SkyDrive allows user to in the query textbox while selecting tags, a combination of files private, the backend access conflict problem could be all result matches the query would be displayed. resolved. Since PennFS is integrated with Gmail platform, an addi- tional sign-in system should be implemented to ensure the privacy of the user. Windows 8 API has already provided customizable login prototypes which could be utilized to im- Figure 5: App Bar of PennFS plement the sign-in system. To prevent misuse of creden- tials, PennFS is required to directly invoke the sign-in mod- ule from Windows 8 and would not store the from Gmail system. Once the system is in-place, PennFS would just require credentials to be set by the user before providing email accessing functionalities.

8. CONCLUSION An alternative file system based on relational database rather than tree structure is successfully built on the top of NTFS filesystem. With a unified view, PennFS allows management and access of files on local filesystem and emails using tags. PennFS simplifies the process of file management and displays the multiple relationships between files using the logic operations between tags.

9. REFERENCES [1] Peter Pin-Shan Chen. The entity-relationship mode: toward a unified view of data. ACM Trans. Database Syst., 1(1):9–36, March 1976. [2] Matt Warren Anders Hejlsberg Kit George Dinesh Kulkarni, Luca Bolognese. Linq to : .net language-integrated query for relational data. http:// msdn.microsoft.com/en-us/library/bb425822.aspx, March 2007. [3] Jim Gary. Greeings! from a filesystem user. 4 th USENIX Conference on File and Storage Technologies, San Francisco, CA, 2005. [4] Robert Green-MFST. Using sqlite in windows 8 store apps. http: //blogs.msdn.com/b/robertgreen/archive/2012/ 11/13/using-sqlite-in-windows-store-apps.aspx, November 2011. [5] Richard Grimes. Winfs lets users search and manage files based on content. http://msdn.microsoft.com/ en-us/magazine/cc164028.aspx, 2004. [6] Limilabs. http://www.limilabs.com/mail. http://www.limilabs.com/maill. [7] Sharad Mehrotra, Chun Zhang, Jeffrey Naughton, David DeWitt, Qiong Luo, and Guy Lohman. On supporting containment queries in relational database management systems, pages 425–436. Association for Computing Machinery, 2001. [8] Microsoft. Blend for visual studio 2012. http://msdn.microsoft.com/en-us/library/ windows/apps/jj129478.aspx, December 2012. [9] Microsoft. Introduction to the c# language and the .net framework. http://msdn.microsoft.com/en-US/ library/vstudio/z1zx9t92, August 2012. [10] Microsoft. Windows software development kit (sdk) for windows 8. WindowsSoftwareDevelopmentKit(SDK)forWindows8, August 2012. [11] pmengal. Mailsystem.net. http://mailsystem.codeplex.com, October 2012. [12] Russell Sears, Catherine Van Ingen, and Jim Gary. To blob or not to blob: Large in a database or a filesystem? In Microsoft Research Technical Report, 2006. [13] B Thalheim. Entity-relationship modeling : foundations of database technology. Springer, Berlin New York, 2000.