Support for indexes that use deterministic expressions
sqlite.org
sqlite.org
BEGIN TRANSACTION;
CREATE TABLE json_tbl(id integer primary key, json text collate nocase); CREATE VIEW json_tbl_view AS SELECT id, json_extract(json, '$.value') AS val FROM json_tbl;
CREATE INDEX json_tbl_idx on json_tbl(json_extract(json, '$.value'));
EXPLAIN QUERY PLAN SELECT * FROM json_tbl_view WHERE 'the_value_33' = val;
COMMIT;
It makes inserts and updates more expensive, because the calculated values must be recalculated, but it can be an awesome win.
Hooray SQLite!
I use it in several of my personal and professional projects, especially in cases where data can be sharded well. The one thing that is a bit annoying though is the locking mechanism in SQLite, which prevents simultaneous writes to the database and locks it for reading while a write transaction is underway. If they could find a way to improve that behavior I think the use cases of SQLite would grow way beyond embedded application databases. Whether or not this is a good thing is of course a different question, but having a zero-configuration "plug-and-play" database engine could be a very attractive proposition to many people.
BerkeleyDB for example, which handles concurrent access much better than SQLite and also comes in a high-availability version is used in many production environments today, most notably as the backend of Amazon's DynamoDB key/value store.
This blog post (2010) explains what the status is http://0pointer.de/blog/projects/locking.html
If something has changed since then (or that article is incorrect), please let me know.
Quoting my friend Wikipedia: "Big data is a broad term for data sets so large or complex that traditional data processing applications are inadequate."
But yes, I agree that SQLite gets better all the time.
(Writes will still block writes of course.)
http://charlesleifer.com/blog/building-the-python-sqlite-dri...