V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
yy001
V2EX  ›  问与答

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

  •  
  •   yy001 · 2015-11-10 17:26:27 +08:00 · 11175 次点击
    这是一个创建于 3295 天前的主题,其中的信息可能已经有所发展或是发生改变。

    准备弄个小说程序,
    但不知道小说内容是直接存到数据库还是 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
    若放数据库的话可以选择 支持压缩的引擎
    小说的压缩率应该挺客观 并且是静态数据一般不会变动吧
    Zzzzzzzzz
        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,
    "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
    }
    ```
    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  
       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 调用~在线阅读~讨论段落什么的~
    microget
        22
    microget  
       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   ·   实用小工具   ·   3019 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 28ms · UTC 13:40 · PVG 21:40 · LAX 05:40 · JFK 08:40
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.