Hacker News new | past | comments | ask | show | jobs | submit login
TurtleDB ā€“ Offline-first, collaborative Web application framework (github.com/turtle-db)
26 points by jchook 2 days ago | hide | past | favorite | 10 comments

So a storage abstraction layer on top of IndexDB with a proprietery API.

I would not want to tie my projects to that API. What I would like to see on top of IndexDB is an SQL database.

So you can run SQL queries on the client against your IndexDB storage. SQL is such an awesome language to work with data. No matter which frameworks, languages or libraries become popular or go out of fashion, I am sure I will maintain my SQL queries for decades.

> So a storage abstraction layer on top of IndexDB with a proprietery API.

...that synchronizes with a server-side abstraction layer on top of MongoDB. This is essentially the Meteor architecture.

Synchronization is non-trivial and the storage abstraction options come down to NoSQL JSON document stores, GraphQL, and SQL. Browsers support IndexedDB while native iOS/Android support SQLite. Iā€™m not aware of any decent solution that synchronizes a relational database with client-side SQLite.

I too would prefer a SQLite Sync solution that just works and SQLite in the browser available from Service Workers but it is what it is.

SQL is how I want to talk to my storage abstraction layer. And I want it to do that one thing and do it well.

Syncing to a server is another issue and I am not sure if it should be part of the same library.

SQL is great for relational tables with a two-dimensional structure of rows and fixed columns.

It's not so great for schemaless object databases or navigating nested arrays and hashmaps.

Some relational databases can store JSON objects, and incorporate SQL extensions to navigate those objects.

But in general, SQL doesn't seem to be a great tool for data that isn't a collection of two-dimensional data structures.

Did you say the same when you heard of MongoDB? that you want NOSQL on SQL, instead of "proprietary" JSON and JS code?

Nosql was a trend, then we put sql in top of it in NewSQL.

Then we put sql on top of data lakes with things like big query, spark structured streaming, Athena etc.

Then we put sql on top of streaming systems like kafka with ksqldb.

And on top of search engines etc etc...

He's not wrong... Sql is easy, easy is good.

> Note: for the best user experience we strongly recommend using Chrome.

Does that mean that TurtleDB is slow on Firefox and Safari? Why?

I don't understand the "offline first" in a permanently connected world.

I have a lot of customers in remote regions that get an unreliable 3g connection - offline first is a great approach to consider in that regard

Will still make it faster (responsiveness only limited by your device) and works around the annoying network hiccups that will inevitably occur.

Guidelines | FAQ | Support | API | Security | Lists | Bookmarklet | Legal | Apply to YC | Contact