rupy
dbmate
Our great sponsors
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.
rupy
-
Considerations for a long-running Raspberry Pi
I have been running a Raspberry 2 cluster for 10 years: http://host.rupy.se
A few weeks back the first SD card to fail got so corrupted it failed to reboot!
My key learning is use oversized cards, because then the bitcycle will wear slower!
I'm going from 32GB to 256/512/1024!
- Sandstorm: Open-source platform for self-hosting web app
-
You Want Modules, Not Microservices
I think we're all confused over the definition. Also one might understand what all the proponents are talking about better if they think about this more as a process and not some technological solution:
https://github.com/tinspin/rupy/wiki/Process
All input I have is you want your code to run on many machines, in fact you want it to run the same on all machines you need to deliver and preferably more. Vertically and horizontally at the same time, so your services only call localhost but in many separate places.
This in turn mandates a distributed database. And later you discover it has to be capable of async-to-async = no blocking ever anywhere in the whole solution.
The way I do this is I hot-deploy my applications async. to all servers in the cluster, this is what a cluster node looks like in practice (the name next to Host: is the node): http://host.rupy.se if you click "api & metrics" you'll see the services.
With this not only do you get scalability, but also redundancy and development is maintained at live coding levels.
-
I wish my web server were in the corner of my room
I have hosted my own web server both physically and codevise since 2014.
It's on a Raspberry 2 cluster:
Since 2016 i have my own database also coded from scratch:
We need to implement HTTP/1.1 with less bloat, a C non-blocking web server that can share memory between threads is probably the most interesting project for humans right now, is anyone working on that?
-
Ask HN: Free and open source distributed database written in C++ or C
I have one in Java: https://github.com/tinspin/rupy
Here is the 2000 lines of code of the entire database: http://root.rupy.se/code?path=/Root.java
And here you can try it out: http://root.rupy.se
-
Dokku – Free Heroku Alternative
The smallest PaaS you have ever seen is one order of magnitude larger than mine: https://github.com/tinspin/rupy
And I bet you the same goes for performance, if not two!
-
Server-Sent Events: the alternative to WebSockets you should be using
Absolutely not, HTTP/1.1 is the way to make SSE fly:
https://github.com/tinspin/rupy/wiki/Comet-Stream
Old page search for "event-stream"... Comet-stream is a collection of techniques of which SSE is one. My findings are that SSE go through anti-viruses better!
I would look at my own app-server: https://github.com/tinspin/rupy
It's not the most well documented but it's the smallest implementation while still being one of the most performant so you can learn more than just SSE.
The data is here: http://fuse.rupy.se/about.html
Under Performance. Per watt the fuse/rupy platform completely crushes all competition because of 2 reasons:
- Event driven protocol design, averages at about 4 messages/player/second (means you cannot do spraying or headshots f.ex. which is another feature in my game design opinion).
- Java's memory model with atomic concurrency which needs a VM and GC (C++ copied that memory model in C++11, but it failed completely because they lack both VM and GC, but that model is still to this day the one C++ uses), you can read more about this here: https://github.com/tinspin/rupy/wiki
You can argue those points are bad arguments, but if you look at performance per watt with some consideration for developer friendlyness, I'm pretty sure in 100 years we will still be coding minimalist JavaSE on the server and vanilla C (compiled with C++ compiler) on the client.
- Jodd – The Unbearable Lightness of Java
dbmate
-
Level UP your RDBMS Productivity in GO
As we want to maintain the track of our changes to the DB, we are going to use migrations. In this case, we are going to use dbmate. But, you can use any other tool you want.
-
Rails 7.1 Released
> For example having database migrations built in etc.
I actually went the exact opposite route, at least when possible: https://github.com/amacneil/dbmate
Pure SQL migrations, regardless of the back end technology that you use, completely decoupled from how each framework/library views things and therefore not dependent on them (you could even rewrite the back end in another technology later on, if needed; or swap ORMs; or avoid issues when there's a major ORM version update).
It's really nice when you can generate entity mappings based on a live database, like with https://blog.jetbrains.com/dotnet/2022/01/31/entity-framewor...
So in my case, I can have:
* a DB that has migrations applied with dbmate, completely decoupled from any back end(s) that might use it
- FLaNK Stack Weekly 2 October 2023
-
How do your teams run DB migrations?
You can run dbmate as part of your CI/CD pipeline. You just keep a dbmate directory in your repo and deploy migrations with your code.
-
Working with TypeORM 0.3x with Nestjs - I wasn't aware so many people were facing issues with it
In general with ORMs, you will face a problem in one way or another. I ended up simply using https://github.com/gajus/slonik and https://github.com/amacneil/dbmate for migrations. My life is way much better since then.
-
what do you use for migrations? or how do you the sql tables and seeding?
I like dbmate, super simple and straightforward to use. For your specific use case, it can also be configured using your .env!
- GORM
-
New post: Is Prisma better than your 'traditional' ORM?
Would always go for a language agnostic migration tool, e.g. https://github.com/amacneil/dbmate to stay flexible and stay away from lock-in effects (besides sql).
- I greatly dislike ORMs, but I find myself wanting ORM agnostic SQL migration tools. What do you use to perform RDBMS table migrations outside of an ORM?
-
Instant Multi-Tenant GraphQL APIs with PostGraphile, RLS, and PropelAuth
For managing the schema, you’ll likely want to use a tool like dbmate or Flyway, which can help you update the database over time. For this tutorial, we’ll just create it directly:
What are some alternatives?
goose - A database migration tool. Supports SQL migrations and Go functions.
sqlite-bench - PostgreSQL & SQLite Speed Test
Flyway - Flyway by Redgate • Database Migrations Made Easy.
liquibase - Main Liquibase Source
migra - Like diff but for PostgreSQL schemas
SQLBoiler - Generate a Go ORM tailored to your database schema.
golang-samples - Sample apps and code written for Google Cloud in the Go programming language.
bytebase - The GitLab/GitHub for database DevOps. World's most advanced database DevOps and CI/CD for Developer, DBA and Platform Engineering teams.
tbls - tbls is a CI-Friendly tool for document a database, written in Go.
huproxy
pv-migrate - CLI tool to easily migrate Kubernetes persistent volumes
Task - A task runner / simpler Make alternative written in Go