The database is the core of Synapse, allowing it to save and load data, undo and redo, and generate user interfaces automatically from user defined nodes. Synapse 1 used an XML file format, and used a database system written specifically for Synapse (called Alter), this system was written quite quickly in order to get Synapse going, and had some relatively major flaws.
With more time to write Synapse 2 the database system has been rewritten to give several key improvements:
Alter has now been split into several core libraries, initially it was an application framework with a database built in, now Alter is only an application framework. The database component initially built into Alter is now Shift, with a sub component of Graphics related data types.
The entire source for Alter is only a few files, all it really does is load some plugins. Its quite neat, but is also one of the areas I think needs a bit more work before its finished. However, it completes its purpose for now of providing a base for all the other components to work from.
Synapse 1 was bad at handling itself when loading large files, especially when creating and deleting a lot of data. We are now supporting a range of file formats, aiming for much improved speed and readability, all faster than the original XML format. The main format planned for use is currently not finalised, but will most likely be JSON.
Synapse 1 was based heavily on Qt's data types, and while we still rely on Qt at the core of Shift for string types and containers, data types are now stripped away from Qt, are much more efficient and flexible too.
The basic data type in Shift is the property (called an attribute in Alter 1), we then build on these properties by adding more functionality in derived classes until we have an Entity, similar to Alter 1, an Entity holds a bunch of properties/attributes and can also have child Entities. This flexibility to store anything in a property, including other properties makes Shift much more powerful than the previous version of Synapse.
The latest work going on for Synapse 2 is the Part and Document interfaces, a document is any file you may have open in Alter, so for example, you could open a Synapse composite, that is a document. You could also open a Synapse Node, and edit its contents, that is a Document too. Saving the node document will (in theory) automatically edit and replace any nodes in any document you've used it in. automatically. The node document is also a Part, as it has defined inputs and outputs, and is conceptually a reusable piece of node structure.
So, thats a quick summary of how everything might work in Synapse 2, its obviously not doing much right now, but very soon the Document work will come down to the development branch, and the work on the document editors can start.