Session
Under the NIO Hood: Building a File System on Neo4J
How well do you understand Java NIO? I mean REALLY grok Java NIO? Yes, java.nio.file.Files is incredibly simple for basic file work, but dive any deeper? Nope, me neither ... until now!
Applications, SaaS apps in particular, often implement app-specific file management where local disk doesn't meet the requirements. A directory tree is stored in a database - too often SQL - and files are persisted externally (think Azure Blob or AWS S3). The functionality is via customized APIs and limited to basic CRUD operations: create directories, upload/download files, read/modify security attributes, delete files and directories, etc. A limitation that nothing is standard, everything is a one-off.
A second limitation I've discovered is how a directory tree is managed: for performance, files and directories entries are fully "inflated" with its fully-qualified pathname, inherited permissions, and whatever else stored with the entry. While this approach does reduce database calls when navigating, but certain tasks - moving a directory or changing its permissions - requires updating every moved entry. When thousands of files are involved, it's expensive and time-consuming.
This is where Java NIO and Neo4J rocks. Java NIO provides a File System API for implementing custom file systems that are used via standard JDK calls. A directory tree is a simple directed graph - no loops - and Neo4J excels in navigating an arbitrary graph distance. Now derived data can remain derived, not persisted. Looks like both limitations could be addressed!
Join me to learn of my Java NIO file system solution using Neo4J and how powerful Java NIO's design and implementation is. Yes, geeky but more fun than I've had in a while. I'd love to explain the architecture and design and show you it in action.
New talk for 2026. Combination presentation and live coding. Geeky buy deep Java.
Scott Sosna
Independent Consultant
Saint Paul, Minnesota, United States
Links
Please note that Sessionize is not responsible for the accuracy or validity of the data provided by speakers. If you suspect this profile to be fake or spam, please let us know.
Jump to top