Although our project was ambitious, we wanted to use whatever meteor packages that were available to us in order to best integrate with the Meteor environment, and to save time by not having to reinvent the wheel. At the onset we considered several approaches which were ultimately not chosen for certain reasons. These include:
- Using minimongo as client side db - ultimately this would be trying to fit a square peg in a round hole by making relational data non-relational.
- Implementing oplog capabilities for PostgreSQL - Ultimately this would have been an entirely different project with an entirely different scope.
- Reducing the scope - Other implementations of SQL in Meteor had focused on achieving one way reactivity (server to client), and so we felt it would simplify our task if we chose to abandon goals of database everywhere or latency compensation. Ultimately this was not a concession we were willing to make.
Throughout the start of the project our approach was refined, and ultimately we landed on the following: