不是程序员,只是自己写着玩,迫于条件,只能在手机上写,用 termux 。
termux 不能安装 mysql,不能安装 mongodb,但是可以装 sqlite 和 redis,所以决定使用这两个其中的一个作为小说网站的数据库,但是对数据库不了解,不知道用哪个好。
小说每本字数在 10 万~ 30 万之间,总数大概一两百本,所以数据量不大,至多也就几百兆。
另外也想知道小说网站的数据库表一般是怎么设计的,求大佬指点迷津。
1
cat 2020-11-09 07:56:16 +08:00 via iPhone
小说内容不存数据库… 有的数据库只存个章节索引,有的甚至全站静态化
|
2
hz570815725 2020-11-09 07:57:59 +08:00 1
不要存,存了就律师函警告。只能做搜索换源
|
3
manami 2020-11-09 07:59:22 +08:00 via Android
看上不上线吧。本地自己玩的话不需要用户鉴权和认证,直接一张小说表增删改查算了,要加标签什么的花还需要标签表,就看你怎么玩了
|
4
wy7305e 2020-11-09 08:12:18 +08:00 via Android
javascript 直接读取 txt 文件。
|
5
Cbdy 2020-11-09 08:21:13 +08:00 via Android
我记得 termux 好像可以用 mariadb
|
7
t6attack 2020-11-09 08:45:41 +08:00
最简单的方法就是直接拿 txt 做数据库。每本小说一个 txt 。然后做一个索引,索引可以存进数据库,也可以自己把它序列化后存成文本格式。
对每本 txt 执行一次“生成索引”的操作,记录每个章节的文件指针 起始位置 和 长度。用户访问某本小说某个章节时,根据索引位置读取内容就行了。 |
8
nonduality 2020-11-09 09:33:39 +08:00 1
sqlite 很强悍的,有家网站的 sqlite 数据库文件上 T,都跑得好好的。小说存 sqlite 里当然可以,但最好根据需要,sqlite 数据库只用来存储相关的元数据,如分类、日期、作者、目录、章节所在文件路径等等。
|
9
nguoidiqua 2020-11-09 09:35:35 +08:00 via Android
termux 可以 proot 一个完整 Linux,能装其他数据库,桌面都可以装。
可以看看 Anlinux 这个应用。 不过这个事最好别做,真要做大文本也不必存在数据库,直接 txt 或者 html 存就行了。 |
11
misaka19000 2020-11-09 09:47:54 +08:00
@nonduality #8 sqlite 能解决并发的问题吗?
|
12
cheng6563 2020-11-09 11:17:02 +08:00
直接存硬盘文件吧,然后硬盘开个透明压缩
|
13
nonduality 2020-11-09 12:04:08 +08:00
@misaka19000 sqlite 并发性完全没问题
|
14
misaka19000 2020-11-09 12:15:27 +08:00
@nonduality #13 我直接使用 Python 自带的 sqlite 库来操作 sqlite 是否会存在一些弊端?
|
15
mxT52CRuqR6o5 2020-11-09 12:20:28 +08:00 via Android
Termux 下能用 redis 和 mariadb,比 sqlite 正经点
|
16
nonduality 2020-11-09 12:21:10 +08:00
@misaka19000 完全没有问题,那个 client 是很可靠的。总之,sqlite 是被高度低估了,放心使用 sqlite 就是,等到你真觉得太慢了,也许都需要下一步的代码重构或融资了。
|
17
leoskey 2020-11-09 13:12:12 +08:00
放心食用 sqlite
|
18
icyalala 2020-11-09 13:21:31 +08:00 1
sqlite 性能完全不是问题,有各种 benchmark 比如这个: https://github.com/stcarrez/sql-benchmark
数据不上 T 、功能够用的时候 sqlite 很合适的。 |
19
wangxiaoaer 2020-11-09 13:33:01 +08:00
sqlite 能否通过 nas 的方式同时给多台服务器提供服务?
|