sqlite-rw

sqlite读写分离库


License
MIT
Install
pip install sqlite-rw==0.0.2

Documentation

sqlite-rw

为sqlite提供读写分离能力,提高并发度。

解决什么问题?

sqlite是一个很好用的嵌入式数据库,但是由于sqlite采用了库级别的文件锁,所以并发能力不强,当存在慢SQL,比如在大表上select count(*) from large_table的时候,会导致其他任务无法写入。

sqlite-rw就是为了解决这个问题的,思路如下

  • 采用读写分离的存储模式,每次写入会持久化写库,并且记录日志到binlog表,然后异步写入读库。
  • 读取的时候可以选择从读库或者写库读取,默认从读库读取。

提高并发度的原理

  • sqlite本身读取是支持并发的,但是写入是不能和读取并发的。所以读库本身是支持并发读取的,同步的写操作是通过id主键写入的,耗时会比较短,基本上不会阻塞读操作。
  • 由于是读写分离的,在读库存在慢SQL的情况下,写库也能够正常工作,在读库慢SQL执行完成之后,系统会把写库的数据同步到读库中,使两者保持一致。

使用限制和影响

  • 存储量相比于单独的sqlite会翻倍
  • 写入性能会有所下降,待详细的基准测试
  • 依赖web.pydb接口进行操作