Yes, SQLite does serialize writes and write-heavy workloads and long-running transactions are not a good fit. Small batching of writes can help but SQLite provides options to tradeoff throughput for durability if that works for your situation:
PRAGMA synchronous = NORMAL;
That avoids fsync() calls on the WAL until checkpointing. I don't know of any libraries that implement transaction coalescing as it can be different depending on if you need to batch sequential writes versus writes coming from multiple parallel threads
re: rqlite, yes it handles consensus/replication through Raft but IIRC it doesn't do sharding.
PRAGMA synchronous = NORMAL;
That avoids fsync() calls on the WAL until checkpointing. I don't know of any libraries that implement transaction coalescing as it can be different depending on if you need to batch sequential writes versus writes coming from multiple parallel threads
re: rqlite, yes it handles consensus/replication through Raft but IIRC it doesn't do sharding.