It All Starts with Data
Rock-Solid Data Design

Underneath it all, making excellent software comes down to designing excellent data structures. Short-sighted data design that does not use best practices will make applications brittle, preventing them from scaling and mutating as business requirements inevitably change. A proactive design strategy makes sure that data are ready to answer the questions we didn’t know we would need to ask.

Whether it’s a relational database like Microsoft SQL Server or MySQL, a graph database like Neo4j or OrientDB or a simple Access file or spreadsheet, the technology that’s used to store and serve the data is far less important than the experience and forethought that go into its design. Our data design experience reaches back into the 1980s and includes web-based search engines before anyone knew what a Google was as well as complex credit analysis tools for banking, financial reporting for governmental agencies and countless other business applications.

Relational Databases

With all the new-fangled database systems we have these days, relational databases almost seem quaint. But they remain the workhorse for a large number of business applications. We have extensive experience in designing, optimizing and managing RDBMSs including Microsoft SQL Server, IBM DB2, Oracle, MySQL, Microsoft Access, PostgreSQL, IBM AS400, Clarion, FileMakerPro and FoxPro. We even remember working on Ashton-Tate DB2 and its subsequent versions and clones.

OLAP and Data Warehousing

Our extensive work in financial analysis and reporting means we’ve worked with OLAP cubes and data warehouses for many years. We often work our way backward from reporting requirements, to OLAP and warehousing and then to the underlying data structures to make sure that we’re capturing and satisfying user requirements along the way. This approach saves time and frustration compared to designing reports only to realize that the data are not stored in a way that will generate the needed information.


The various alternatives to relational databases can yield huge gains in performance, especially in systems where large amounts of transactional data are concerned or where users are consuming data in disconnected ways such as with mobile applications. Graph databases, document stores, key-value records and wide-column databases each have their advantages. Modern applications require us to examine all of the use cases to see which architecture is best for the job. Often, it is a combination of platforms that serve different components of the overall application ecosystem.