honeysql
Bedrock
honeysql | Bedrock | |
---|---|---|
16 | 23 | |
1,705 | 1,050 | |
- | 1.4% | |
8.6 | 9.4 | |
15 days ago | 4 days ago | |
Clojure | C | |
- | GNU Lesser General Public License v3.0 only |
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.
honeysql
-
Why Is Jepsen Written in Clojure?
I recall using korma way back I and I don’t recall it being terrible but I would say https://github.com/seancorfield/honeysql has very much superseded it by this point… (but I can see how that might not be obviously clear if one is to look at superficial metrics like GitHub stars for example…)
-
That's a Lot of YAML
Joins can certainly work in a data format like YAML. For an example, see Honey SQL from the Clojure community [0] (though without something to contrast strings like Clojure's keywords, you miss out on the automatic parameterization).
You mentioned moving JOINs around, so I'll mention that if represented as structured data, you can move any of the top level components around, so you could more closely follow the "true order of SQL" [1]. For example, I would love to be able to put FROM before SELECT in all or almost all cases. There's also being able to share and add to something like a complicated WHERE clause, where essentially all programming languages have built-in facilities for robustly manipulating ordered and associative data compared to string manipulation, which is not well-suited for the task.
Now don't get me wrong, I don't particularly care for YAML (though it doesn't bother me that much), but as someone who's done their fair share of programmatic SQL creation and manipulation in strings, not having a native way to represent SQL as data is a mistake in my opinion.
0: https://github.com/seancorfield/honeysql#big-complicated-exa...
- Como desenvolvi um backend web em Clojure
-
XTDB 2.x Early Access
In Clojure-land, we are also using HoneySQL [1] which has similar characteristics. You are still working within SQL semantics so it's a bit more complicated, but we are doing great complicated things with just maps, no API necessary.
[1] https://github.com/seancorfield/honeysql
-
Run SQL queries against your system and get back structured data using osquery and Babashka
using honeysql we can make structured queries as well
-
Some questions regarding developing simple web apps in Clojure from a Clojure "beginner"
As someone else already pointed out, next.jdbc is good for database connectivity (for Postgres and beyond). For composing the queries themselves, I strongly recommend Honey SQL. It lets you represent queries themselves as normal Clojure data structures, just vectors and maps.
- What are some more options or good practices for dynamic SQL query building?
-
Ask HN: Does anyone else think SQL needs help?
Perhaps you're looking for a way of arranging SQL as an AST represented by data structures (or objects) that can be fed to a compiler. HoneySQL[0] is one such implementation of this idea and it makes your general transformation trivial for Clojure programs. You don't need to mess around with string concatenation because you have a predictable and extensible compiler for data structures (which are themselves easily composable/transformable/storable with Clojure) that you can trust to do the right thing. If you're using some weird database or need an esoteric syntax, extending the compiler to your clause is easy to do[1].
[0] https://github.com/seancorfield/honeysql
[1] https://github.com/seancorfield/honeysql#extensibility
-
Lisp feature - domain specific language
https://github.com/seancorfield/honeysql (write SQL without having to write SQL)
-
Fly.io Buys Litestream
I've used it from Clojure, via HoneySQL, so no ORM, no danger of SQL injection. It was really wonderful!
https://github.com/seancorfield/honeysql
I used it to quickly iterate on the development of migration SQL scripts for a MySQL DB, which was running in production on RDS.
I might have switched to H2 DB later, because that was more compatible with MariaDB, but I could use the same Clojure code, representing the SQL queries, because HoneySQL can emit different syntaxes.
Bedrock
-
Marmot: Multi-writer distributed SQLite based on NATS
Also Expensify's Bedrock, which powers their famous "Scaling SQLite to 4M QPS" article:
https://bedrockdb.com/
https://use.expensify.com/blog/scaling-sqlite-to-4m-qps-on-a...
- I'm All-In on Server-Side SQLite
-
SQLite is not a toy database
Lots of things don't need failover, but if you do, you can use Bedrock, which is built on sqlite.
-
Amazon announces 'Bedrock,' its ChatGPT and DALL-E rival
At first, I thought Amazon was launching their own SQLite hosted database.
BedrockDB is a SQLite based database with MySQL compatible drivers.
https://bedrockdb.com
-
Ask HN: Hunting for a Framework
Vapor[0] based on Swift. Advantage of this is that you don't have to evaluate multiple frameworks for Swift and suffer paralysis by analysis. All the Swift community is behind one framework.
The next is Actix[1] based on Rust. There are many frameworks in Rust and most of them have not reached 1.0 And which framework will survive becomes a question.
Other not so well-known is Wt[2] based on C++. This actually is created for programmers who are not web developers. The development experience is similar to desktop app development like Qt.
If that is not acceptable then Django[3], based on Python, is the one that will be good for you.
For the front-end I would recommend Flutter[4]. As much as I dislike getting tied to a single company for whom the framework is not their bread-and-butter, I don't see any other viable options to Flutter that will cover all web, mobile and desktop out of the box.
For databases, I would recommend BedrockDB[5], if you are not averse to SQLite. Or FoundationDB[6], if you want NoSQL. But if you are not concerned about horizontal scalability or okay with self-managing database availability, then PostgreSQL[7] is a very good option.
For push notifications, PushPin[8] is a good option.
[0] https://vapor.codes
[1] https://actix.rs
[2] https://webtoolkit.eu
[3] https://www.djangoproject.com
[4] https://flutter.dev
[5] https://bedrockdb.com
[6] https://www.foundationdb.org
[7] https://postgresql.org
[8] https://pushpin.org
-
Databases: 2021 in Review and Predictions for 2022
Recently I stumbled upon BedrockDB[0] from Expensify. It is based on SQLite and has very interesting idea on HA and distributed DB.
[0] https://bedrockdb.com
-
One million queries per second with MySQL
This is not SQLite though, also the test is trivial compared to TPC: https://github.com/Expensify/Bedrock/blob/dbarrett_perftest/...
-
Turning SQLite into a Distributed Database
Don’t forget BedrockDB (built on SQLite) that’s used in production at Expensify.
How it scales as well.
https://bedrockdb.com/
https://blog.expensify.com/2018/01/08/scaling-sqlite-to-4m-q...
- Fly.io Buys Litestream
- Ask HN: Have you used SQLite as a primary database?
What are some alternatives?
hugsql - A Clojure library for embracing SQL
SQLite - Unofficial git mirror of SQLite sources (see link for build instructions)
SqlKata Query Builder - SQL query builder, written in c#, helps you build complex queries easily, supports SqlServer, MySql, PostgreSql, Oracle, Sqlite and Firebird
MySQL - MySQL Server, the world's most popular open source database, and MySQL Cluster, a real-time, open source transactional database.
malli - High-performance data-driven data specification library for Clojure/Script.
rqlite - The lightweight, distributed relational database built on SQLite.
pggen - Generate type-safe Go for any Postgres query. If Postgres can run the query, pggen can generate code for it.
ClickHouse - ClickHouse® is a free analytics DBMS for big data
missionary - A functional effect and streaming system for Clojure/Script
LevelDB - LevelDB is a fast key-value storage library written at Google that provides an ordered mapping from string keys to string values.
awesome-clojure - A curated list of awesome Clojure libraries and resources. Inspired by awesome-... stuff
Adminer - Database management in a single PHP file