There are a few notable other alternatives that we believe are aiming to do something similar as FreeDB
.
We would like to try our best to summarise how these other alternatives work and how it compares with FreeDB
.
If you find there is anything inaccurate about the analysis below, please feel free to let us know and we can discuss it further.
Here is a quick summary of FreeDB
compared to other available alternatives.
-
We do not need any backend server at all.
- We aim for the minimum setup to use Google Sheets as your database.
-
All of our codes and protocols are available on GitHub.
- Some alternatives do not share their codes publicly.
- We publish the language agnostic protocols. This allows anyone to extend it to other languages as needed.
-
Conditions for retrieval, update, and deletion are more flexible.
- We are using Google Sheets
=QUERY()
function. - We can handle all supported conditions by
=QUERY()
function.
- We are using Google Sheets
-
Computations are all done through the Google Sheets API.
- We are not performing any filtering, ordering, limiting, or offsetting in the library.
- We use Google Sheets formula and run it through the Google Sheets APIs.
- This allows bigger data size computation as well.
- Essentially, we are offloading the computations into Google's servers.
-
Our library interfaces are designed to represent Google Sheets as a normal database.
- We support both KV and ROW (similar to SQL) database.
- We try to mimic the interfaces of a normal KV and SQL database (through a simple ORM model).
We are aware that our current implementation does not provide a caching mechanism yet. We see this as a potential future improvement that we are going to implement in the future version.
Stein
has a backend server as a proxy.
- It provides both hosted and self-managed backend option.
- Hosted backend offers higher capacity (more requests per month and more rows per sheet) at cost.
- The backend server provides a few REST API that can be called directly or using the official JavaScript library.
This project provides the following operations.
- Retrieve rows with conditions, limit, and offset.
- Insert new rows.
- Update rows with conditions and limit.
- Delete rows with conditions and limit.
A few important implementation details to take note.
- The conditions only support equality check (using JavaScript
===
check). - For retrieval,
update, and
deletion, the following is how it works:
- Retrieve all rows from Google Sheet.
- Perform the condition, offset, and limit operation in-memory.
- Either return the matching rows or update/delete the matching rows.
- The server has a dependency on a MongoDB instance to store client information.
Serve
has a backend server as a proxy.
- It only provides hosted backend option (currently it seems it is provided for free as of 24 August 2022).
- It provides integrations with many data storages, not just Google Sheets (e.g. Airtable, MySQL, PostgreSQL, etc.).
- There is no official client library provided, all REST APIs provided must be called manually.
Although
Serve
provides integrations with many different data storages, we are going to just focus on the Google Sheet capabilities.
This project provides the following operations for Google Sheet.
- Retrieve all rows.
- Insert new rows.
- Update rows.
- Delete rows.
A few important implementation details to take note.
- Retrieving rows must include all rows. It does not support filtering, offsetting, or limiting.
- No batch row insertion support as of 24 August 2022.
- A row can only be updated as a full row (cannot update only selected columns).
- If we want to update or delete a row, we must provide the row index.
SheetDB
has a backend server as a proxy.
- It only provides hosted backend option.
- It provides both free and paid tier.
This project provides the following operations.
- Retrieve rows with conditions, limit, offset, and order by a specific column.
- Retrieve keys (similar to column names).
- Count the number of rows.
- Insert new rows.
- Update rows with conditions and limit.
- Delete rows with conditions and limit.
- Delete duplicated rows within a sheet (the row must have the same exact content).
- Retrieve specific cell values.
- Insert new sheets.
- Delete sheets.
A few important implementation details to take note.
- Batch update is only supported in the paid version.
- The project defines their own condition format for retrieval, deletion ,and update.
- The project supports
handlebars
to display data directly in HTML. - The project supports data caching inside their hosted server (paid version only).
- This means when the data is cached, changes in Google Sheet (directly changed) is not going to be reflected immediately.
- However, if the data is updated/inserted/deleted via the APIs provided by
SheetDB
, the cache will be invalidated.
sheetsql
is a TypeScript library that treats Google Sheets as a database. There is no backend server as a proxy.
This project provides the following operations.
- Retrieve rows with conditions.
- Insert new rows.
- Update rows with conditions.
- Delete rows with conditions.
A few important implementation details to take note.
- The conditions only support string equality check.
- For retrieval,
update, and
delete, the following is how it works:
- Retrieve all rows from Google Sheet (data is cached in-memory).
- Perform the condition operation in-memory.
- Either return the matching rows or update/delete the matching rows.
- The update and delete
operations are done by calling the relevant Google Sheets API one-by-one for each row.
- Google Sheets API actually supports batch update and delete.
- The project supports data caching via in-memory caching.
- This means when the data is cached, changes in Google Sheet (directly changed) is not going to be reflected immediately.
- For write based operations (insert, update, and delete), both local and remote data will be updated.
gooss
is a JavaScript library that reads data from Google Sheets.
The project only supports reading all rows and applying a client provided callback for each row.
A few important implementation details to take note.
- It only supports full data retrieval.
- It does not support condition matching.
- It supports HTML templating using
Underscore.js
.
drive-db
is a JavaScript library that reads data from Google Sheets.
The project only supports reading all rows.
A few important implementation details to take note.
- It only supports full data retrieval.
- It does not support condition matching.
- The project supports data caching via in-memory caching.
- This means when the data is cached, changes in Google Sheet (directly changed) is not going to be reflected immediately.
Note that this project is already deprecated as it depends on Google Sheets v3 API.