When my spreadsheet-style web app grew beyond editing isolated cells, its first architecture became the problem. Formulas could reach across the grid, rows and columns could move, and one user action could change many records. Undo, redo, and history then required reconstructing coordinated state. I rebuilt the spreadsheet contents as a JSON document while keeping users, permissions, ownership, and metadata in relational tables. That boundary—not a blanket choice of JSON over SQL—made the system easier to reason about.
The first design treated a spreadsheet like ordinary application data
The app let users enter values, arrange rows and columns, and calculate formulas. I initially modeled rows, columns, cells, formulas, values, and their relationships with relational structures. That approach was familiar, but spreadsheet behavior kept adding coordination work.
As an Amazon Associate I earn from qualifying purchases.
A cell edit could affect formulas elsewhere. Moving a row or column changed coordinate relationships. Cells could be copied, inserted, deleted, recalculated, or restored. An operation that looked atomic in the interface might touch several database records underneath.
Recommended Free Tools
As those behaviors accumulated, I encountered the symptoms I associate with the failed design:
#1 Best Overall
- Classic Office Apps | Includes classic desktop versions of Word, Excel, PowerPoint, and OneNote for creating documents, spreadsheets, and presentations with ease.
- Install on a Single Device | Install classic desktop Office Apps for use on a single Windows laptop, Windows desktop, MacBook, or iMac.
- Ideal for One Person | With a one-time purchase of Microsoft Office 2024, you can create, organize, and get things done.
- Consider Upgrading to Microsoft 365 | Get premium benefits with a Microsoft 365 subscription, including ongoing updates, advanced security, and access to premium versions of Word, Excel, PowerPoint, Outlook, and more, plus 1TB cloud storage per person and multi-device support for Windows, Mac, iPhone, iPad, and Android.
- Slower operations as more related records had to be read or updated.
- Complicated synchronization between the grid, formula engine, and database.
- Undo and redo that were unreliable because one visible action did not map cleanly to one stored change.
- Difficult reconstruction of an earlier document state.
- Inconsistencies and edge-case data loss when related updates did not stay aligned.
- Growing complexity whenever a new spreadsheet feature crossed several tables.
These are observations from my project, not benchmark measurements. I did not produce before-and-after timings, dataset limits, concurrency counts, or an independent performance comparison.
Why version history exposed the architectural mismatch
Version history made the problem impossible to ignore. To undo a user operation, the system needed enough information to restore the previous state. If one operation changed multiple rows, cells, formulas, and coordinate relationships, history had to capture and reconstruct all of them in the correct order.
That meant treating a document change as more than a collection of unrelated row updates. The interface presents a spreadsheet as one connected artifact, while the original storage model split that artifact across many records. The gap showed up in synchronization, restoration, and error handling.
Free tools Windows power users keep installed
One-click scans. No signup required.
The rebuild: spreadsheet contents as one JSON document
I moved the spreadsheet state into a JSON document containing cells, coordinates, values, formulas, and related state. The document represented the part of the product that users experience as one spreadsheet.
Rank #2
- Fully compatible with Microsoft Office documents, Office Suite is the number 1 affordable alternative. It is compatible with Word, Excel and PowerPoint files allowing you to create, open, edit and save all your existing documents in an easy-to-use professional office suite. Suitable for home, student, school, family, personal and business use, it includes comprehensive PDF user guides to help you get started, plus a dedicated guide for university students to help with their studies. Multilingual - English, Spanish (Español) and more languages supported.
- Professional premier office suite includes word processor, spreadsheet, presentation, graphics, database and math apps! It can open a plethora of file formats including doc, docx, odt, txt, xls, xlsx, xlsm, ppt, pptx and many more, making it the only office suite you will ever need. You can use the ‘Save as’ feature to ensure your files remain compatible with Word, Excel and PowerPoint, plus you can convert and export your documents to PDF with ease.
- Full program included that will never expire! Free for life updates with lifetime license so no yearly subscription or key code required ever again! Unlimited users allow you to install to both desktop and laptop without any additional cost, and everything you need is provided on USB; perfect for offline installation, reinstallation and to keep as a backup. Compatible with Microsoft Windows 11, 10, 8.1, 8, 7, Vista, XP (32/64-bit), Mac OS X and macOS.
- PixelClassics exclusive extras include 1500 fonts, 120 professional templates, 1000's of clip art images, PDF user guides, over 40 language packs, easy-to-use PixelClassics installation menu (PC only), email support and more! Each USB comes complete with our quick start install guide, plus a fully comprehensive PDF guide is provided on USB.
- You will receive the USB (not a disc) exactly as pictured, in protective sleeve (retail box not included). Our slimline USB is 100% compatible with ALL standard size USB ports. To ensure you receive exactly as advertised including all our exclusive extras, please choose PixelClassics. All our USBs are checked and scanned 100% virus and malware free giving you peace of mind and hassle-free installation, and all of this is backed up by PixelClassics friendly and dedicated email support.
A simplified example is:
- A1 contains 100.
- A2 contains 50.
- A3 contains
=A1+A2and evaluates to 150.
With the grid represented together, reading and saving the spreadsheet required less reconstruction. Duplicating a document meant duplicating its document state. Restoring history meant selecting an earlier saved state rather than assembling many independently stored records. Mapping coordinates into the formula engine also became more direct.
This model did not make formula evaluation disappear. The application still needs a formula engine, dependency handling, validation, and rules for structural changes. It changed where the connected spreadsheet state lived so those operations could work against a coherent representation.
The relational database stayed—at the boundary where it fit
I did not replace every relational table with JSON. Users, permissions, ownership, document metadata, and other conventional business entities remained relational because they need ordinary constraints, relationships, and application queries.
Quick wins for a faster PC:
Fix the driver behind crashes, sound loss and screen glitchesFind Drivers →Clear out junk files and repair common Windows errorsFree Scan →The resulting split was deliberate:
| Data or behavior | Representation in the rebuilt design | Why it belongs there |
|---|---|---|
| Cells, coordinates, values, formulas, and spreadsheet state | JSON document | These elements change together and are consumed as one connected document. |
| Users and accounts | Relational tables | Identity and account relationships require structured constraints. |
| Permissions and ownership | Relational tables | Authorization rules need explicit, queryable relationships. |
| Document metadata | Relational tables | Titles, owners, timestamps, and similar business fields are ordinary application records. |
The lesson is not “JSON is better than SQL.” It is that spreadsheet contents and application records have different behavior, so forcing both into one representation created unnecessary friction.
What changed for undo, redo, and restore
The new versioning model let me reason about earlier and later document states. A user operation could produce a saved state, and undo or redo could move between those states without rebuilding the spreadsheet from a chain of unrelated row and cell records.
That is a simpler mental model, not a finished versioning algorithm. Important engineering questions remained:
- Storage growth: How many complete states can be retained before document storage becomes excessive?
- Retention: Which versions should be permanent, temporary, or discarded?
- Concurrency: What happens when multiple users edit the same document at once?
- Snapshot timing: Should every keystroke create a version, or should a logical user operation define the boundary?
- Recovery: How should interrupted saves and partially completed operations be detected and repaired?
The rebuild made these decisions visible. It did not answer them automatically.
Other spreadsheet models are possible
A JSON document is one design response to this project’s behavior, not a universal spreadsheet architecture. Any serious choice should be tested against the product’s actual requirements.
Rank #4
- THE ALTERNATIVE: The Office 9 Package is the perfect alternative to MS Office. It offers you word processing as well as spreadsheet analysis and the creation of presentations.
- Excellent word processing - Powerful spreadsheet processing - Stunning presentations
- Adjustable user interface: classic look or ribbon style
- Office at home, you can run it on up to 5 PCs! A single license is enough to provide your entire family with a powerful office suite! If you use it commercially though, it's one license per installation.
- FULL COMPATIBILITY: ✓ Compatible with Office Word, Excel and PowerPoint ✓ Suitable for Windows 11, 10 (32 and 64-bit versions) ✓ Fast and easy installation ✓ Easy to navigate
| Design question | Why it matters |
|---|---|
| How are formula dependencies and coordinate moves represented? | Coordinate-based formulas can become difficult to maintain when rows, columns, or ranges change. |
| Can a multi-cell operation be updated atomically? | Users expect one visible action to succeed or fail as one unit. |
| How are undo, redo, and historical restore implemented? | The representation must preserve enough information to return to a prior state. |
| How are concurrent edits merged or rejected? | Document snapshots alone do not define conflict resolution. |
| How does retention affect storage growth? | History policies determine how much state accumulates. |
| How will reporting query spreadsheet state? | Analytical and filtering needs may favor additional indexes or projections. |
| Which entities need relational constraints? | Users, permissions, ownership, and metadata remain different from cell content. |
Research has explored other directions. “Spreadsheet-Driven Web Applications,” a 2014 UIST paper about Quilt, connected spreadsheet data and computation to HTML interfaces and reported a study with 15 participants. That demonstrates a longstanding research interest in spreadsheet/web integration; it does not validate my redesign.
“Object Spreadsheets: A New Computational Model for Spreadsheets,” presented at Onward! 2016, described formulas over columns and data-structure locations rather than only a two-dimensional coordinate grid. Its discussion of grid formulas becoming brittle as data changes size is a reminder that even the spreadsheet model itself is a design choice.
What I would not claim from this rebuild
- I would not claim that JSON snapshots are faster in every workload.
- I would not claim that they solve concurrent editing or conflict resolution.
- I would not claim that they eliminate formula recalculation or dependency management.
- I would not claim that the design is a production-ready retention algorithm.
- I would not claim that relational schemas, event logs, CRDTs, or other approaches are inferior; this project did not provide a controlled comparison.
When rebuilding was cheaper than continuing to patch
Once each new spreadsheet feature required more coordination across the original tables, patches stopped reducing risk. The cost was not just implementation time; it was the difficulty of explaining what a user operation meant in storage and how to reverse it safely.
Rebuilding around a document representation aligned storage with the behavior users already saw: a spreadsheet is a connected document whose cells, coordinates, formulas, and history interact. Keeping relational storage for the surrounding business domain preserved the strengths of that model instead of turning the rebuild into a database-wide rewrite.
The practical takeaway is to model the boundary deliberately. Put tightly coupled spreadsheet state where whole-document operations are natural, and keep ordinary application entities in the relational system that serves them well. Then measure and design the unresolved parts—retention, concurrency, indexing, and recovery—rather than assuming the new representation has solved them.
Quick Recap
Product prices and availability are accurate as of the date/time indicated and are subject to change. Any price and availability information displayed on Amazon at the time of purchase will apply.




