小说系统有必要把内容存到数据库不? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
yy001
V2EX    问与答

小说系统有必要把内容存到数据库不?

  •  
  •   a href="/member/yy001">yy001 2015-11-10 17:26:27 +08:00 11598 次点击
    这是一个创建于 3630 天前的主题,其中的信息可能已经有所发展或是发生改变。

    准备弄个小说程序,
    但不知道小说内容是直接存到数据库还是 txt 里面

    假设预计 10W 本 平均每本 1000 章

    还是数据库 跟 txt 都存?

    23 条回复    2017-11-06 16:51:39 +08:00
    111111111111
        1
    111111111111  
       2015-11-10 17:55:00 +08:00
    用来下载的话附件就好了,如果在线阅读的话,数据库吧,不然跳章翻页多痛苦
    gamexg
        2
    gamexg  
       2015-11-10 17:57:12 +08:00   1
    存数据库你算下会有多少 TB 吧。
    之前想做小说站,结果算了一下尺寸把我吓住了。

    3*3000 字 /章 * 1000 章 * 10W = 900000000000 字节 = 0.8TB
    abelyao
        3
    abelyao  
       2015-11-10 18:15:58 +08:00   1
    小说可以存 txt 或其它文件,文件名随机生成,
    数据库保存索引关系,例如 第一章第一页 => 7646c928-0b09-4c96-b96d-17a98d5fb4a2.txt
    这样数据库也要不了多少空间,同时还可以降低存储成本
    kslr
        4
    kslr  
       2015-11-10 18:27:23 +08:00
    @gamexg 这。。。。。。
    Zzzzzzzzz
        5
    Zzzzzzzzz  
       2015-11-10 18:31:40 +08:00
    @gamexg 反了, 数据库一般都带压缩的, 大文本的压缩比还成, 而一般用的 ext3 和 ext4 都是不带压缩的, 最小 block 默认 4k, 还有拆分文件夹的占用,反而会大得多。
    ksc010
        6
    ksc010  
       2015-11-10 18:31:47 +08:00
    若放数据库的话可以选择 支持压缩的引擎
    小说的压缩率应该挺客观 并且是静态数据一般不会变动吧
    Zzzzzzzz
        7
    Zzzzzzzzz  
       2015-11-10 18:36:31 +08:00
    用 mysql 的话记得把 txt 单独一个表。

    我是偏向数据库的, 一方面比文本文件小, 二来无论全盘备份还是异地同步都方便得多.

    万一有性能瓶颈, 拆成其他 backend 也很容易。
    yy001
        8
    yy001  
    OP
       2015-11-10 18:37:21 +08:00
    @ksc010
    存数据库的话
    1 章节 1 条记录?
    dphdjy
        9
    dphdjy  
       2015-11-10 19:37:07 +08:00   1
    数据库无误~~存 txt io 成本高~!

    后期在线预览不好拓展~~最好的是一段一个条目~~:)

    用 4 层 id 定位~~
    blacktulip
        10
    blacktulip  
       2015-11-10 19:40:14 +08:00
    要提供下载的话只怕得都存,不然难道动态生成一个 txt
    Kilerd
        11
    Kilerd  
       2015-11-10 20:16:58 +08:00
    @blacktulip 下载的话确实可以动态生成。

    建议还是存数据库好,毕竟可以压缩,纯文本的压缩率还是挺客观的。
    yy001
        12
    yy001  
    OP
       2015-11-10 20:24:35 +08:00
    @dphdjy
    用 4 层 id 定位~~
    什么意思
    dphdjy
        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,
    "sbtitle": "",
    "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
    }
    ```
    dphdjy
        14
    dphdjy  
       2015-11-10 20:35:26 +08:00
    @dphdjy 手滑了~

    paragraph
    ```
    {
    "bookid": 109,
    "chapterid": 3400,
    "volumeid": 455
    "content": "从阵阵摇摆的麦穗缝中仰望的秋天天空,即使过了好几百年也不曾改变,但是底下的人事物全变了样。",
    "type": 0
    }
    ```
    ksc010
        15
    ksc010  
       2015-11-10 20:40:05 +08:00
    @yy001 可以啊 看你具体需求
    movtoy
        16
    movtoy  
       2015-11-10 20:56:01 +08:00
    用数据库只是对复杂数据的管理本身有需求,例如查询。

    其他用途都是滥用
    Tink
        17
    Tink  
    PRO
       2015-11-10 21:01:15 +08:00
    我觉得还是 txt 好,理由如上,数据库对于查询类的需求很得手,但是这种 90%纯文本的还是交给 txt 靠谱
    tabris17
        18
    tabris17  
       2015-11-10 21:34:41 +08:00
    如果没有全文检索需求的话可以压缩后存数据库。
    我写了个自己用的小说库,使用 sqlite 做数据库,备份的时候只要复制一个文件就行了
    master
        19
    master  
       2015-11-10 22:14:51 +08:00
    TokuDB
    msg7086
        20
    msg7086  
       2015-11-10 22:16:58 +08:00
    @movtoy
    看小说 -> 查询
    书 /卷 /章多级架构 -> 复杂数据
    dphdjy
        21
    dphdjy  
       2015-11-10 22:42:20 +08:00
    如果考虑下载~我是做 2 套~一套按照卷压缩成 zip 包含插画~还有一套写数据库 做全文检索~api 调用~在线阅读~讨论段落什么的~
    ixo
        22
    ixo  
       2017-11-05 22:49:58 +08:00
    @dphdjy 前辈请教下,数据分页如何处理?如果 paragraph 还是文字数量很多不宜单页显示,如何处理分页。
    dphdjy
        23
    dphdjy  
       2017-11-06 16:51:39 +08:00   1
    @microget 一段内容太多,不应该在数据库层进行分页处理,写过一个前端分页的东西 https://github.com/GitaiQAQ/HyaReader
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2693 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 35ms UTC 13:49 PVG 21:49 LAX 06:49 JFK 09:49
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86