#1: It’s Amazing SQL Engine
The most impressive feature of SequelSphere has to be its revolutionary SQL parsing and execution engine. It handles all normal SELECT features and expressions, and then goes beyond handling LEFT, RIGHT, and FULL outer joins. It not only boasts of handling unlimited nesting of Sub-queries, it handles them in every major clause (SELECT, FROM, WHERE, JOIN, ON, HAVING, even GROUP BY!). Speaking of grouping, it also handles grouping sets, rollup, cube, and grand-total grouping functions. It even gracefully handles complex conditional expressions such as:
(a,b) not in ((1, 2), (3, 4), (select c, d from tab))
#2: Integration with 3rd Party RIA Frameworks
SequelSphere has no dependencies on any RIA framework, yet its simple and flexible API makes it easy to integrate with any RIA framework out-of-the-box. Populating edit screens, grids, charts and graphs is simple. And when more advanced integrations (such as using the RIA framework’s own data stores in SQL queries) are required, SequelSphere provides “connectors” to the most common RIA frameworks (such as jQuery, Ext JS, YUI, etc.). But SequelSphere’s true power lies in the flexible and dynamic query results that make it easy to integrate with any RIA framework. As such, connectors are rarely required. And when they are required, they are easy to create.
#3: Synchronization Support Using Change Trackers
Refreshing a SequelSphere database from a remote source and then accessing and updating the data locally is a breeze; the real difficulty lies in synching local updates back to the remote source. To support this, SequelSphere provides “Change Trackers” to track client-side data changes and report them in transaction order. This makes upwards synchronization a simple and manageable process. The application programmer can create a “Change Tracker” for any combination of tables that track inserts, updates, and deletes. The tracker even respectively follows transaction commits and rollbacks, reporting changes as arrays or JSON objects. And, since the changes are persisted intelligently, “Change Trackers” work when used “offline” and across browser restarts. When the application is network connected and ready to sync up data, the trackers intelligently report prior changes when the application is back on-line. That is truly remarkable assistance for synchronizing offline activity.
#4: Uses IndexedDB or LocalStorage to Persist Data Locally
SequelSphere uses the latest in HTML5 data persistence technologies to provide local storage of data across most modern browsers. That makes SequelSphere perfect for managing data for offline applications, and making the data available across browser restarts. SequelSphere abstracts the data management details away from the application, providing the app with a single Relational manner of managing the data. As such, the application can remain browser agnostic and let SequelSphere do the work of determining which storage mechanism works best for each client. Furthermore, SequelSphere deftly handles transactional commits and rollbacks, requiring the data be written and read from the storage mechanisms as necessary.
#5: User-Defined Functions
#6: Cross-Browser Support
#7: Web Service- & JSON-Friendly
#8: SequelSphere’s Simplified API
Every interaction with the SequelSphere database was designed to be simple. The programmers at SequelSphere believe whole heartedly in the “Keep It Simple” principle, and that the simplest code is the most robust code. Consequently, performing queries and retrieving results is simple. Getting the results in a variety of formats is simple. Manipulating the data, managing transactions, creating tables… every aspect was designed to be simple.
#9: Easy 3rd Party Table Integration
A unique testament to the power and flexibility of SequelSphere is its incredibly cool ability to incorporate other products’ data tables into SQL queries. By implementing the “TableProvider” interface, any external tabular data source can be queried using SQL. Furthermore, any of the tables, SequelSphere or externally provided, can be used side-by-side in the same SQL statements with all features of the SELECT statement continuing to work. Now that’s awesome.