There are over one trillion SQLite databases in active use
sqlite.org
sqlite.org
As would a red “GO AWAY” banner.
I'm extremely biased coming from a family with a long tradition of atheism and even anticlerical "militantism".
I have thought about this one a bit, as an Atheist, and frankly, I have a problem with it. Ok, heaven, yes. Eternal peace and love, sounds great. Hell, obviously bad, the torture, the pain. But, to suffer pain I need to be conscious, awake, aware.
For all Eternity.
And surely the Demons must take breaks. nip out for a quick fag. Maybe a long lunch at the pub. I mean they might not tell Satan they were doing it - these are evil beings after all, not known for following the rules. So 15 minutes here, an hour there. Over a week it will add up.
And weeks add up over all of eternity for infinite time.
I mean. You could manage. If you knew you had infinite time, to think, to be. Compared to my belief, extinction, Hell is probably good runners up medal.
That has helped ensure there are no forks given quality would be inferior.
It also kept SQLite out of the browser since there are no competing implementations of it.
“Web SQL Database is a deprecated web browser API specification for storing data in databases that can be queried using SQL variant.
The API is supported by Google Chrome, Opera, and the Android Browser.
The W3C Web Applications Working Group ceased working on the specification in November 2010, citing a lack of independent implementations (i.e. using database system other than SQLite as the backend) as the reason the specification could not move forward to become a W3C Recommendation.”
> User agents must implement the SQL dialect supported by Sqlite 3.6.19.
as the only definition on what's allowed SQL, which is a no-go for a spec. The authors could have provided a specification of a required SQL dialect that's sufficient to implement it from scratch/on top of another database, but decided to abandon the effort instead.
> This document was on the W3C Recommendation track but specification work has stopped. The specification reached an impasse: all interested implementors have used the same SQL backend (Sqlite), but we need multiple independent implementations to proceed along a standardisation path.
It seems like they didn't just need a specified SQL dialect, but multiple actual implementations, but I might be reading into the wording incorrectly.
Even if SQLite's test suite was open, I wouldn't see any big forks taking off, because why would you really want to build a competitor to something that's already super easy and free to use, extremely high quality, very high performance? What really is the drive? If SQLite ever does something the community really doesn't like, then a fork would be worth starting, but unless that happens, I don't see any point, and I really don't see that happening any time soon, given the consistent quality and power of SQLite.
Clearly Wozniak is Jesus.
Sounds reasonable to me.
Later on the page says "it is seems likely that there are over one trillion (1e12) SQLite databases in active use" which is the quoted title and seems like a reasonable claim and is counting "documents" not installs.
I don't think "documents" is an uninteresting statistic. It is just a different one.
And that's one single app.
The webpage is a bit unclear about the difference, I'll agree
On a more serious note, had there been something special about SQLite supporting military use of their project that prompted this? Otherwise that’s the point of free software, people are free to do (mostly) whatever they want with it. Including building weapons. SQLite is so prevalent, it’s almost like pointing out you have to include cruise missiles in the count of active x86 chips, or $insert_bad_guy as an active user of roads and electricity.
(Not that this never happens! https://www.simscale.com/blog/2017/12/nasa-mars-climate-orbi...)
At least you don't have to write garbage collection code for those. It just crashes.
great for them i guess!
High quality project that is useful for for small hobbyist projects, startups and large companies alike. Persisting data something that is used in probably the majority of software projects across many verticals. It is OSS software that is easy to pick up. It is a values driven project (both technical and ethical). And the team maintaining it has kept it going for a long time, so as it get rediscovered by others it still has relevancy for many.
Basically it is good software, with a wide TAM, and just enough quirks to appeal to the folks here.
I'd be using it in a large healthcare project I'm working on now.
Unfortunately, the JSON support is basically "serialize to a string". Postgres is miles ahead with jsonb.
Shame, I <3 sqlite.
But if you really wanted to use SQLite to store JSON à la jsonb in PostgreSQL you can use generated fields[1]
sqlite> create table t(id integer primary key autoincrement, data text);
sqlite> insert into t(data) values ('{"foo": "value", "bar": "other value"}'), ('{"foo": "baz", "bar": "qux"}');'
[…]
sqlite> alter table t add column foo text generated always as (json_extract(data, '$.foo')) virtual;
sqlite> select * from t;
id data foo
-- -------------------------------------- -----
1 {"foo": "value", "bar": "other value"} value
2 {"foo": "baz", "bar": "qux"} baz
You can even use a "stored" (instead of 'virtual') generated field, and create an index on it for fast lookups.It's not as powerful as Postgres, but it does a pretty good job.
one column for a timestamp and one column to store the json
You then build materialized views pulling out whatever json fields you need.
JSON is absolutely a valid approach to data storage when dealing with certain data structures. As is using a relational database and jsonb data types for it. Cherry picking columns gives you the advantages for both a NoSQL document storage database as well as a relational analytics database.
This is a pretty common modern technique that Postgres, for example, has made easy.
Go try modeling a FHIR database structure using standard normalization rules.
You'll quickly discover why no one does it. Even HAPI FHIR server (the most full featured and popular FHIR server) written in Java doesn't attempt it.
Since PostgreSQL allows for functional indexes, you can query and index the data in a structured way.
For example you have a table t with "id" and "data" where data is a jsonb field like {foo: ..., bar: ...}. You can do
SELECT id, data->'foo'
FROM t
WHERE data->'bar' > 5
Which will yield the value of "foo" (inside the json field) for rows where "bar" (inside the json field) is greater than 5. SELECT id, json_extract(data, '$.foo')
FROM t
WHERE json_extract(data, '$.bar') > 5
in SQLite. You can also add an index on one of these expressions: https://dgl.cx/2020/06/sqlite-json-support CREATE INDEX idx_t_bar ON t(json_extract(data, '$.bar'));
for fast lookups. But you can do CREATE INDEX idx_t_bar ON t(data->'bar');
in PostgreSQL. You have some workarounds like I explained.[1]Also PostgreSQL has many operators[2] which makes using JSON fields easier.
SQLite has "Indexes On Expressions"[1] since 2015. I'm assuming functional indexing in Postgres is the same. So I think the syntax would be:
CREATE INDEX idx_t_bar ON json_extract(data, '$.bar');
[1]: https://www.sqlite.org/expridx.html> Also PostgreSQL has many operators[2] which makes using JSON fields easier.
This does look a little more convenient to write than SQLite's JSON syntax, but I don't see any fundamental difference here.
Both validate syntax on insert. The JSONB datatype (not JSON; note the B on the end) further stores the content in a parsed, binary form so future accesses are faster. The schema author does not have to indicate which columns they would like "fast" access to - queries are free to access any arbitrary path in the JSON, and will get reads that don't require JSON parsing.
It seems like SQLite can achieve something similar but not quite the same. It looks like the user has to specifically enumerate and materialize the columns to which they want fast access.
So it seems like json_extract(...) is comparable to Postgres's JSON type, but there's not quite an analagous thing for Postgres's JSONB type.
https://www.theguardian.com/info/2018/nov/30/bye-bye-mongo-h...
Example: The Guardian switched from Mongo to Postgres jsonb as a nosql db.