go-sqlite3-stdlib
datasette
go-sqlite3-stdlib | datasette | |
---|---|---|
6 | 187 | |
123 | 8,963 | |
0.0% | - | |
0.0 | 9.3 | |
9 months ago | 6 days ago | |
Go | Python | |
GNU General Public License v3.0 or later | Apache License 2.0 |
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.
go-sqlite3-stdlib
-
SQLite: Past, Present, and Future
Adding user-defined functions to SQLite is not difficult, and the mechanism is quite flexible. You can create extensions and load them when you create the SQLite connection to have the functions available in queries. I wrote a blog post explaining how to do that using Rust, and the example is precisely a `regex_extract` function [0].
If you need them, you also have a "stdlib" implemented for Go [1] and a pretty extensive collection of extensions [2]
[0]: https://ricardoanderegg.com/posts/extending-sqlite-with-rust...
[1]: https://github.com/multiprocessio/go-sqlite3-stdlib
[2]: https://github.com/nalgeon/sqlean
- SQLite has pretty limited builtin functions
-
OctoSQL allows you to join data from different sources using SQL
OctoSQL is an awesome project and Kuba has a lot of great experience to share from building this project I'm excited to learn from.
And while building a custom database engine does allow you to do pretty quick queries, there are a few issues.
First, the SQL implemented is nonstandard. As I was looking for documentation and it pointed me to `SELECT * FROM docs.functions fs`. I tried to count the number of functions but octosql crashed (a Go panic) when I ran `SELECT count(1) FROM docs.functions fs` and `SELECT count() FROM docs.functions fs` which is what I lazily do in standard SQL databases. (`SELECT count(fs.name) FROM docs.function fs` worked.)
This kind of thing will keep happening because this project just doesn't have as much resources today as SQLite, Postgres, DuckDB, etc. It will support a limited subset of SQL.
Second, the standard library seems pretty small. When I counted the builtin functions there were only 29. Now this is an easy thing to rectify over time but just noting about the state today.
And third this project only has builtin support for querying CSV and JSON files. Again this could be easy to rectify over time but just mentioning the state today.
octosql is a great project but there are also different ways to do the same thing.
I build dsq [0] which runs all queries through SQLite so it avoids point 1. It has access to SQLite's standard builtin functions plus* a battery of extra statistic aggregation, string manipulation, url manipulation, date manipulation, hashing, and math functions custom built to help this kind of interactive querying developers commonly do [1].
And dsq supports not just CSV and JSON but parquet, excel, ODS, ORC, YAML, TSV, and Apache and nginx logs.
A downside to dsq is that it is slower for large files (say over 10GB) when you only want a few columns whereas octosql does better in some of those cases. I'm hoping to improve this over time by adding a SQL filtering frontend to dsq but in all cases dsq will ultimately use SQLite as the query engine.
You can find more info about similar projects in octosql's Benchmark section but I also have a comparison section in dsq [2] and an extension of the octosql benchmark with different set of tools [3] including duckdb.
Everyone should check out duckdb. :)
[0] https://github.com/multiprocessio/dsq
[1] https://github.com/multiprocessio/go-sqlite3-stdlib
[2] https://github.com/multiprocessio/dsq#comparisons
[3] https://github.com/multiprocessio/dsq#benchmark
-
One year as a solo dev building open-source data tools without funding
Hey Kuba!
> Especially on the community building aspect, it's really impressive that you've been able to spark so many communities on various platforms (Reddit, GitHub, Discord, etc.)!
Yeah it's been so cool to see so many people come together, hobbyists and professionals.
> On a more technical note, since dsq is based on the "load it into SQLite and query it from there" architecture, have you considered integrating with the plugin ecosystems of other existing projects based on that same architecture, like Datasette[0]? It seems like a way to add a lot of value to your tools without much work.
Interesting idea! I haven't looked into Datasette too much. And I haven't thought about plugins too much either. The most I've done is extend the SQLite standard library [0] and I hope to continue growing that. I'd be curious to hear what specifically people like from Datasette they'd like to see in dsq.
> On a more commercial note, overall I think tools like this are very hard to monetize, because right now they're just a fairly niche use case, between - as you mentioned - full blown data analytics platforms and observability query systems, as well as standard unix tools. Especially since if you need the analytics a lot, you'll probably have time to integrate it into your preferred analytics solution (like BigQuery). Do you have any thoughts on that?
My idea was always to focus on smaller and less mature organizations, probably ones that have been around for 10+ years. They aren't using BigQuery, they prefer to host everything themselves, and they don't yet realize there are tools like DataStation that they can easily run to make analytics easier.
I've worked at a bunch of companies like this so I know the market exists. Actually I have been surprised how many people outside of this market showed up in the DataStation community. I've seen Googlers, MS-ers, modern startups, data science teams show up interested in DataStation compared to what they're already using.
For me it's just been a matter of time (and funding) to build out the product to serve these communities commercially as a SaaS or enterprise product.
[0] https://github.com/multiprocessio/go-sqlite3-stdlib
- Show HN: A standard library for mattn/go-sqlite3
- A standard library for mattn/go-sqlite3 including best-effort date parsing, url parsing, math/string functions, and stats aggregation functions
datasette
-
Ask HN: High quality Python scripts or small libraries to learn from
Simon Willison's github would be a great place to get started imo -
https://github.com/simonw/datasette
- Show HN: TextQuery – Query and Visualize Your CSV Data in Minutes
-
Little Data: How do we query personal data? (2013)
I'm a fan on simonw's datasette/dogsheep ecosystem https://datasette.io/
-
LaTeX and Neovim for technical note-taking
I use Anki the exact same way. After a lifetime of learning I have accepted that I will never read over anything I write for myself voluntarily - so my two options are:
1. Write an article so good I can publish it and look it over myself later on. I did this last year with https://andrew-quinn.me/fzf/, for example.
2. Create Anki cards out of the material. Use the builtin Card Browser or even https://datasette.io/ on the underlying SQLite database in a pinch to search for my notes any time I have to.
-
Daily Price Tracking for Trader Joes
Were you aware of, or tempted by https://datasette.io/ for creating your solution?
- SQLite-Web: Web-based SQLite database browser written in Python
-
Ask HN: What two software products should have a kid?
Browsing HN, GitHub and the like we get to see a huge variety of software products and code bases.
I often see products and think - if this product X, got together with Y, it would be pretty cool - kind of like if they had a kid together.
Not too literally, but more on the conceptual level - my level of programming is low.
E.g. Just some....
- pocketable.io & datasette (+with some more charting) [https://pocketbase.io, https://datasette.io]
-
Ask HN: Looking for a project to volunteer on? (February 2024)
You might like the Datasette project: https://datasette.io/
I don't think they are desperate for contributions but it's a welcoming environment and a fun project to hack on. You'll learn a lot just from reading the source and the incredibly informative PRs. The creator is a really talented developer with a great blog which shows up on the HN front page often.
-
Stuff I Learned during Hanukkah of Data 2023
Last year I worked through the challenges using VisiData, Datasette, and Pandas. I walked through my thought process and solutions in a series of posts.
-
What We Watched: A Netflix Engagement Report – About Netflix
> uploads of boring raw excel data and receive a nice UI
https://datasette.io/
What are some alternatives?
sqlite-past-present-future - Performance evaluation and optimization of SQLite
nocodb - 🔥 🔥 🔥 Open Source Airtable Alternative
octosql-plugin-postgres
duckdb - DuckDB is an in-process SQL OLAP Database Management System
sqlite-plus - The ultimate set of SQLite extensions
sql.js-httpvfs - Hosting read-only SQLite databases on static file hosters like Github Pages
octosql-plugin-random_data - OctoSQL plugin serving random data
litestream - Streaming replication for SQLite.
mycelite - Mycelite is a SQLite extension that allows you to synchronize changes from one instance of SQLite to another.
Sequel-Ace - MySQL/MariaDB database management for macOS
cargo-semver-checks - Scan your Rust crate for semver violations.
beekeeper-studio - Modern and easy to use SQL client for MySQL, Postgres, SQLite, SQL Server, and more. Linux, MacOS, and Windows.