ChDB: Embedded OLAP SQL Engine Powered by ClickHouse
github.com
github.com
We recently worked with the chDB team to add support for Jupyter notebooks: https://jupysql.ploomber.io/en/latest/integrations/chdb.html
Disclaimer: I work at ClickHouse
Note chdb is based on ClickHouse codebase but completely community powered so there's no feud with DuckDB (I'm a quackhead, too!) which actually offers lots of great inspiration and many integration opportunities with ClickHouse/chdb for combined compute and processing of datasets. I personally love both and use them together all the time in my colab "OLAPps"
It and the ability to do `from 'https://example.com/.csv` is why i love duckdb
SELECT * FROM url('https://example.com/*.csv')
Other reasons include their wide range of input formats, special table functions (e.g. query a URL).
https://clickhouse.com/docs/en/operations/utilities/clickhou... https://clickhouse.com/docs/en/getting-started/quick-start
People badmouth Python packaging a lot, but once you've learned how to use a virtual environment (admittedly a steeper learning curve than I'd like it to be) having binary wheels for so much of this kind of stuff is a huge win.
See also Playwright, DuckDB, ziglang... I wrote a bit about those here https://simonwillison.net/2022/May/23/bundling-binary-tools-...
And the fact that it's not easy to use doesn't really make things better.
I think Python's biggest weakness on this front is mainly that virtual environments came along too late - if they'd been designed into how pip etc worked from the beginning we would be in much better shape.
Lots of programming languages or build systems will look for dependencies in globally-known locations.
Other than cargo, python's virtualenv, node_modules, and some other modern languages/systems I would imagine most are not project-scoped. Go had a single global dependency tree until go.mod, etc...
A good language-specific package manager should know how to resolve its dependencies and maybe install them locally, but most importantly provide this information to the system package manager (apt, rpm, etc.) to handle.
Having "pip install x" is a poor man's ad-hoc system package manager.