小型Web数据库的选择

2013-12-05 22:36:10 +08:00
 daiv
一直用Python + web.py + SQLite ,主要这个数据库小巧,省资源,有128m就够用。但是SQLite 写的时候有锁,导致并发大大减弱。

我该放弃SQLite ?

我的需求:数据库只做 插入和查询,不需要更新数据的。只有2个表,

请大家推荐一款,谢谢啦
想要插入的时候也可以查询呀。毕竟没有更新操作。
6628 次点击
所在节点    程序员
42 条回复
daiv
2013-12-05 22:43:20 +08:00
我的需求:数据库只做 插入和查询操作,不需要 更新 操作。只有2个表,数据1—100万之间。
ixiaohei
2013-12-05 22:47:02 +08:00
mysql
ipconfiger
2013-12-05 22:51:02 +08:00
@daiv 每一条多大呢?
daiv
2013-12-05 22:54:03 +08:00
@ipconfiger 小于100k
daiv
2013-12-05 22:55:14 +08:00
@ixiaohei mySQL 是不是有一点点大了 谢谢
ipconfiger
2013-12-05 22:57:51 +08:00
@daiv 按每条100K计算,100w条大概有10G左右的数据,还是上正儿八经的数据库吧,128M什么的就不要想了。bdb,sqlite,leveldb神码的都存在多进程的问题,且bdb和leveldb都需要内存
daiv
2013-12-05 23:00:23 +08:00
@ipconfiger 最大1-2G,一般都是10条左右了。

只做插入和查询。
推荐一个啦
clino
2013-12-05 23:00:27 +08:00
sqlite 我觉得注意一下是可以提高并发的,减少被锁影响的方法:
-将timeout时间设长一些
-将操作数据库的时间尽量缩短,例如读就一把读出来再处理,写也是把要写的数据全部准备好了一把写入
daiv
2013-12-05 23:02:20 +08:00
@ipconfiger 一般10万条左右,上面写错了
yakczh
2013-12-05 23:10:55 +08:00
memsql
clino
2013-12-05 23:14:14 +08:00
上面减少操作数据库时间的具体做法,我在用uliweb的时候用到过一个就是
for item in model:
这里面对model的遍历会引发对数据库的操作,这样如果for里做得时间比较多,花的时间比较长,那占用的时间就长了
可以改成这样:
for item in list(model):
这样就将操作数据库的时间最小化了

还有我碰到一个情形是,除了web的进程,还有一些daemon进程也会操作数据库,后来就改成调用web api来做,这样把对数据库的操作都集中到web进程里,这样我觉得对避免这个问题也有好处
ipconfiger
2013-12-05 23:17:23 +08:00
@daiv 你就只有128M的VPS啊?
tshwangq
2013-12-05 23:35:27 +08:00
firebird?
moroumo
2013-12-05 23:37:20 +08:00
我用得也是sqlite,也是128M VPS,哈哈。
注重一下业务流程上能不能简化,避免读写冲突
ipconfiger
2013-12-05 23:42:21 +08:00
@daiv 1G,2G的数据可以继续用SQLite,为了避免锁问题,可以用一个独立的进程单线程访问SQLite数据库,然后web用tornado异步请求
tshwangq
2013-12-05 23:44:47 +08:00
Kyoto Cabinet, 似乎也是个不错的选择。
likuku
2013-12-05 23:48:07 +08:00
加一个memcached…读的负载转移到内存去。
tshwangq
2013-12-05 23:50:00 +08:00
http://yserial.sourceforge.net/
这个也很有意思啊,用sqlite构建起来的小型nosql。
非常符合你的写+读的场景
barbery
2013-12-06 00:13:42 +08:00
用mysql的myisam表, 关闭innodb, 应该耗不了多少内存吧
loading
2013-12-06 07:15:46 +08:00
数据量不大可以使用sqlite内存方式

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/92010

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX