Statistical Modeling & Analysis, Economics
Machine Learning & AI, Analytics
In 2015 I (Artem V Shamsutdinov) wrote an Organizer app but wasn't satisfied with data sharing options available. I wanted to come up with a platform that allowed for secure and confidential data sharing between any number of individuals and organizations. So I started down that route in 2016 thinking that it will be a quick 3 month project. Several years of on-the-side development later AIRport suite is finally approaching readiness and Data Independence Network is now a project with aspirations of revolutionizing how the planet stores its data!
The future of computing is mobile. The smartphone finally has the resources required to do all of the data processing locally. CPU and RAM are plenty enough to run a personal database and all associated application logic. Storage is fast approaching the same point. I estimate that once smart phone storage reaches 1TB the question of "Why do a need that server again?" will be on every mobile developer's mind. It is possible that by 2025 every mobile smartphone will be storing most of data relevant to its user locally. Of course most of the planet's data is shared by multiple people. Autonomous Interpendent Repositories (AIR - US10902016B2) is our answer to how efficiently and securely manage that data.
AIR splits the data into virtual Repositories. They are virtual because any number of them can live in a standard (relational) database. These Repositories are fully autonomous and contain all of the data they need to be usable. Any given Repository is shared independently of all other repositories, via serialized Transaction Logs. The repositories are interdependent and can reference each other, hence building comprehensive data sets out of unique units of knowledge. AIRport Server (by default is a mobile app) that runs in the background and serves data to all of the Apps and Web pages running on that device. AIRport Client is a thin client library (installed by these Apps and Web sites) that deals with ORM, entity caching and general CRUD.
AIRport provides a net-like relational database of Repositories. Repositories are virtual databases, each with its own transaction log. Each Repository has a globally unique identifier that allows to distinguish it from other repositories in the same relational database (such as WebSql, or SqLite in a Cordova based App). For two Users to share a Repository it must be present on their devices, and the schemas used by that repository must be installed in AIRport databases on those devices.
Each device/phone contains a single AIRport database that is shared by all applications on that device. The composition of the applications on each device can be different. The composition of the schemas installed in each AIRport database on each device can be different as well. Each database contains only the Repositories the user of that device decides to keep on it.
AIRport Repositories have blockchain based transaction log storage to enable communication between devices. AIRport is fully functional off-line, commits are made locally and are added to the "longest chain" once device is back on-line. Each Repository transaction log is a separate chain and itself can consist of sub-chains if devices go out of sync. Thus, the Repository transaction log is a Directed Acyclic Graph with each commit being a separate block and all sub-chains are resolved to the "longest chain" via timestamp based conflict resolution mechanism.
AIR splits the data in a relational database into repositories. Each repository spans multiple tables. Each table contains records from any number of repositories. A repository is autonomous and represents a stand-alone unit of knowledge. Repositories are interdependent and can reference other repositories. A repository referencing other repositories can be used on its own (without others being present). A repository is stored in a ledger (transaction log) that is distributed between member devices (PC, mobile, IoT). It is secured and authenticated using standard data security mechanisms. A repository has a unique transaction order on each device. An overall order is computed for a repository as all member devices synchronize. An AIR application controls access to its database schema by other applications. CRUD (create/read/update/delete) access is determined on per-table basis. A user controls repository access by applications. She also determines access to her repositories by other users. Each device can contain only the repositories to which its user has access to. Globally repositories form an interconnected database. A device stores AIR data in a database shared by all Apps on that device.
AIRport Database servers AIR Repositories and is located right on every user's device. It contains only the data that the user contains and as much of it as the user decides to keep on that device (while archiving the rest). Since it's hosted locally on the device every database operation is as fast as that device allows it to be - no central server outages or overloads, no network deplays. Just the data that you need, when you need it.
Entity classes are decorated with JPA annotations. From them AIR dev tools generate a query API, which is then used in "TypeScript Instrumented Query Language" (TIQL) notation. It integrates SQL with TypeScript (with JSON-like query definition). This enables strict compile-time checks and query auto-completion. If you know JSON and SQL you can create and read TIQL queries. By default the select clause specifies object graphs and AIRport Query API retrieves fully interlinked object graphs (with more flat formats possible).
Every transaction for each AIR repository is signed by the Device+User+Application combination to ensure authenticity. It is also encrypted using repository specific key. Only the users that need to access or modify that repository are allowed to access/modify it. Transactions are (by default) shared directly between devices with no third party hosting services.
We are eager to collaborate with individuals and organizations that have alike goals.