Improve README

pull/16/head
Vinícius Garcia 2021-12-28 21:07:48 -03:00
parent 5c385bd974
commit 23fc43e523
1 changed files with 44 additions and 32 deletions

View File

@ -4,40 +4,16 @@
# KissSQL
KissSQL or the "Keep It Simple" SQL pkg was created because
of a few insatisfactions with the existing packages for
interacting with relational databases in Go. To mention a few:
KissSQL or the "Keep it Simple" SQL package was created to offer an
actually simple and satisfactory tool for interacting with SQL Databases.
**Low Level Tools:**
The core idea on `ksql` is to offer an easy to use interface,
the actual comunication with the database is decoupled so we can use
`ksql` on top of `pgx`, `database/sql` and possibly other tools.
You can even create you own backend adapter for `ksql` which is
useful in some situations.
Tools like `database/sql`, `sqlx` and even `pgx` will usually
require you to check errors several times for the same query and
also when iterating over several rows you end up with a `for rows.Next() {}`
loop which is often more cognitive complex than desirable.
**High Level Tools such as ORMs:**
More high level tools such as `gorm` and `bun` will often force you
and your team to interact with a complicated DSL which requires
time to learn it and then ending up still being a little bit harder
to read than a regular SQL query would be.
**Code Generation tools:**
Tools like `sqlc` and `sqlboiler` that rely on code generation
are good options if performance is your main goal, but they also
have some issues that might bother you:
- There is some learning curve that goes beyond just reading a GoDoc as with most packages.
- You will often need to copy to and from custom generated structs instead of using your own.
- Sometimes the generated function will not be as flexible as you'd prefer forcing you to make
some tricks with SQL (e.g. that happens with `sqlc` for partial updates for example).
- And it does add an extra step on your building process.
And finally you might just prefer to avoid codegen when possible,
in which case ksql is also for you.
### Why use ksql?
### Why ksql?
> Note: If you want numbers see our [Benchmark section](https://github.com/vingarcia/ksql#benchmark-comparison) below
@ -83,6 +59,42 @@ If you need a new `database/sql` driver or backend adapter included
please open an issue or make your own implementation
and submit it as a Pull Request.
### Comparing KissSQL with other tools
`ksql` was created because
of a few insatisfactions with the existing packages for
interacting with relational databases in Go. To mention a few:
**Low Level Tools:**
Tools like `database/sql`, `sqlx` and even `pgx` will usually
require you to check errors several times for the same query and
also when iterating over several rows you end up with a `for rows.Next() {}`
loop which is often more cognitive complex than desirable.
**High Level Tools such as ORMs:**
More high level tools such as `gorm` and `bun` will often force you
and your team to interact with a complicated DSL which requires
time to learn it and then ending up still being a little bit harder
to read than a regular SQL query would be.
**Code Generation tools:**
Tools like `sqlc` and `sqlboiler` that rely on code generation
are good options if performance is your main goal, but they also
have some issues that might bother you:
- There is some learning curve that goes beyond just reading a GoDoc as with most packages.
- You will often need to copy to and from custom generated structs instead of using your own.
- Sometimes the generated function will not be as flexible as you'd prefer forcing you to make
some tricks with SQL (e.g. that happens with `sqlc` for partial updates for example).
- And it does add an extra step on your building process.
And finally you might just prefer to avoid codegen when possible,
in which case ksql is also for you.
### Kiss Interface
The current interface is as follows and we plan on keeping