准备弄个小说程序,
但不知道小说内容是直接存到数据库还是 txt 里面
假设预计 10W 本 平均每本 1000 章
还是数据库 跟 txt 都存?
1
111111111111 2015-11-10 17:55:00 +08:00
用来下载的话附件就好了,如果在线阅读的话,数据库吧,不然跳章翻页多痛苦
|
2
gamexg 2015-11-10 17:57:12 +08:00 1
存数据库你算下会有多少 TB 吧。
之前想做小说站,结果算了一下尺寸把我吓住了。 3*3000 字 /章 * 1000 章 * 10W = 900000000000 字节 = 0.8TB |
3
abelyao 2015-11-10 18:15:58 +08:00 1
小说可以存 txt 或其它文件,文件名随机生成,
数据库保存索引关系,例如 第一章第一页 => 7646c928-0b09-4c96-b96d-17a98d5fb4a2.txt 这样数据库也要不了多少空间,同时还可以降低存储成本 |
5
Zzzzzzzzz 2015-11-10 18:31:40 +08:00
@gamexg 反了, 数据库一般都带压缩的, 大文本的压缩比还成, 而一般用的 ext3 和 ext4 都是不带压缩的, 最小 block 默认 4k, 还有拆分文件夹的占用,反而会大得多。
|
6
ksc010 2015-11-10 18:31:47 +08:00
若放数据库的话可以选择 支持压缩的引擎
小说的压缩率应该挺客观 并且是静态数据一般不会变动吧 |
7
Zzzzzzzzz 2015-11-10 18:36:31 +08:00
用 mysql 的话记得把 txt 单独一个表。
我是偏向数据库的, 一方面比文本文件小, 二来无论全盘备份还是异地同步都方便得多. 万一有性能瓶颈, 拆成其他 backend 也很容易。 |
9
dphdjy 2015-11-10 19:37:07 +08:00 1
数据库无误~~存 txt io 成本高~!
后期在线预览不好拓展~~最好的是一段一个条目~~:) 用 4 层 id 定位~~ |
10
blacktulip 2015-11-10 19:40:14 +08:00
要提供下载的话只怕得都存,不然难道动态生成一个 txt
|
11
Kilerd 2015-11-10 20:16:58 +08:00
|
13
dphdjy 2015-11-10 20:34:17 +08:00 1
@yy001 之前做小说站的时候用的~
bid,vid,cid,pid book,volume,chapters,paragraph book ``` { "author": "支仓冻砂", "bookid": 109, "cover": "cover", "introduction": "旅行商人罗伦斯在马车货台上的麦束堆里,发现睡梦中的少女。自称是丰收之神赫萝的美丽少女,有着狼的耳朵及尾巴。「虽然咱长久以来被尊为神,不过,咱就是咱,咱是赫萝。」 罗伦斯不断被说话狡诈的赫萝捉弄。尽管无法确信赫萝是否是掌控丰收的狼神,罗伦斯还是答应让赫萝与他一同旅行。二人展开旅途不就,一个意外的发财机会降临,据说某种银币在不久的将来会升值。新村怀疑的罗伦斯觉得放手一搏,但是—— 第 12 届电击小说“银赏”得奖作品 贤狼与商人的奇妙之旅—— 说话老气横秋并充满智慧,却又十足孩子气的赫萝真的是狼神吗?怀着如此疑问的罗伦斯与她踏上了旅程…… 结合商业活动与独特角色魅力的必读杰作!", "press": "电击文库", "subtitle": "", "title": "狼与香辛料", "updatetime": 1344532584000 } ``` volume ``` { "bookid": 109, "cover": "cover", "order": 455, "subtitle": "", "title": "狼与香辛料\u00A0 第 01 卷", "updatetime": 1344532584000, "volumeid": 455 } ``` chapter ``` { "bookid": 109, "chapterid": 3400, "order": 0, "subtitle": "", "title": "第 0 章 序幕", "volumeid": 455 } ``` paragraph ``` { "bookid": 109, "chapterid": 3400, "C": "从阵阵摇摆的麦穗缝中仰望的秋天天空,即使过了好几百年也不曾改变,但是底下的人事物全变了样。", "T": 0 } ``` |
14
dphdjy 2015-11-10 20:35:26 +08:00
@dphdjy 手滑了~
paragraph ``` { "bookid": 109, "chapterid": 3400, "volumeid": 455 "content": "从阵阵摇摆的麦穗缝中仰望的秋天天空,即使过了好几百年也不曾改变,但是底下的人事物全变了样。", "type": 0 } ``` |
16
movtoy 2015-11-10 20:56:01 +08:00
用数据库只是对复杂数据的管理本身有需求,例如查询。
其他用途都是滥用 |
17
Tink 2015-11-10 21:01:15 +08:00
我觉得还是 txt 好,理由如上,数据库对于查询类的需求很得手,但是这种 90%纯文本的还是交给 txt 靠谱
|
18
tabris17 2015-11-10 21:34:41 +08:00
如果没有全文检索需求的话可以压缩后存数据库。
我写了个自己用的小说库,使用 sqlite 做数据库,备份的时候只要复制一个文件就行了 |
19
master 2015-11-10 22:14:51 +08:00
TokuDB
|
21
dphdjy 2015-11-10 22:42:20 +08:00
如果考虑下载~我是做 2 套~一套按照卷压缩成 zip 包含插画~还有一套写数据库 做全文检索~api 调用~在线阅读~讨论段落什么的~
|
23
dphdjy 2017-11-06 16:51:39 +08:00 1
@microget 一段内容太多,不应该在数据库层进行分页处理,写过一个前端分页的东西 https://github.com/GitaiQAQ/HyaReader
|