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

求教设计一个图书管理系统的表,大约 3kw 个记录,要不要分 2 个表,数据库是 pg10

  •  
  •   find456789 · 2018-09-08 12:12:14 +08:00 · 1510 次点击
    这是一个创建于 2286 天前的主题,其中的信息可能已经有所发展或是发生改变。

    数据库:pg10

    目前猜测数据量 3000w 左右,但极大可能性数据量后续会缓慢增加,但估计数据总数不太可能超过 1 亿

    我比较在意查询的性能, 但也怕冗余浪费太多容量

    存的数据有点像京东网站的图书

    大约有以下字段:

    图书 id,图书名字,ISBN,出版社,出版时间,页数,库存,主图,销售量,价格,等等

    其中 [图书 id,图书名字,ISBN,出版社,出版时间,页数] 是静态数据,也就是不会变动,固定的

    其他字段,都会随着时间推移发生变动

    后期也会在页面前台显示出这个书的历史价格报表,历史销量报表,库存报表 等等

    也会在后台,显示出这个书的库存,销量 历史 等等 报表数据 给管理人员看


    在这种情况下,我想出了 2 个方案:

    方案 1: 所有字段放在一张表里, 查询方便,只需要查询一张表, 但是 如果数据量到了 7kw 条,那冗余会浪费很多硬盘容量

    优点: 查询方便,只需要查询一张表
    缺点:数据冗余,要额外支出数据库容量的费用(具体会多支出多少容量费用,小弟愚钝不知道怎么算)
    

    方案 2:分成 2 张表,1 张存放 静态字段(存长期不变的字段), 另外一张表存频繁变动的字段(如价格,库存,销量,等等)

    优点:比较节省数据库容量
    缺点: 数据量大了,可能会影响查询性能
    

    在此,求助各位前辈、大神, 这种情况,该如何抉择呢?

    8 条回复    2018-09-08 14:09:28 +08:00
    kslr
        1
    kslr  
       2018-09-08 12:18:04 +08:00   ❤️ 1
    秉承着机器不值钱
    airyland
        2
    airyland  
       2018-09-08 12:27:36 +08:00   ❤️ 1
    3000w 数据没必要分表,加索引加缓存用空间换时间。
    lockelee
        3
    lockelee  
       2018-09-08 12:28:12 +08:00 via iPhone   ❤️ 1
    方案 2,价格库存迁移到静态表,销量用销售记录 count 出来,静态表按查询条件加索引,做表分区即可。
    f4nyc
        4
    f4nyc  
       2018-09-08 13:13:38 +08:00 via iPhone   ❤️ 1
    3000w,先考虑索引、缓存、查询优化,分表分库最后再考虑吧
    zbinlin
        5
    zbinlin  
       2018-09-08 13:28:42 +08:00   ❤️ 1
    方案 2 吧,另一张表还可以再细分,只要做好索引,PG 在连接查询方面性能不是不错的。
    zbinlin
        6
    zbinlin  
       2018-09-08 13:29:22 +08:00
    #5 s/不是不错 /还是不错 /
    rrfeng
        7
    rrfeng  
       2018-09-08 13:38:20 +08:00   ❤️ 1
    不要 count
    sunnyadamm
        8
    sunnyadamm  
       2018-09-08 14:09:28 +08:00   ❤️ 1
    3 千万不算多,做好索引就行了,机器又不是你的,不用考虑那么多
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   4979 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 03:40 · PVG 11:40 · LAX 19:40 · JFK 22:40
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.