数据采集和保存问题

马少华 2012-12-08 09:32:43
每天有10W件商品,会从三个仓库进行入库和出库,
我现在想到两种方案存储,
方案一:
对每件商品的每次出库和入库分两条记录存储
仓库编号 基本信息... 入库/出库 操作时间

方案二:
对每件商品的每次出库和入库用一条记录存储
仓库编号 基本信息... 是否入库 入库时间 是否出库 出库时间

产生的数据量:
方案一:60W/天
方案二:30W/天

自己觉得开销比较大的操作:
对于方案一:查询一段时间内某个库没有出库的商品(还没想出简单高效的方法)。
对于方案二:因为一次会出库一大批商品,出库操作比较集中,出库时更新对应的出库记录。

再顺便帮看看这个贴子
Service broker
...全文
133 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
Andy-W 2012-12-08
  • 打赏
  • 举报
回复
每个分公司的库存都会发一份到总部去,这个用service broker合适吗? MSDN上写着service borker比较效率和可靠 如果採用service broker,可以參考: http://msdn.microsoft.com/zh-cn/library/ms345108%28v=SQL.90%29.aspx#mainSection
马少华 2012-12-08
  • 打赏
  • 举报
回复
引用 11 楼 DVD_01 的回复:
1,服务器是多磁盘做的阵列,在阵列上用分区表性能有没有提升? 如果是磁盤陣列,分區對性能提升不大,除非是多個磁盤陳列同時應用,可以考慮分區。 2,条码是15位的数字,用bigint存储和varchar(15)存储,操作性能区别大不大?bitint这里是不是可以模糊查询,还是要把查询的内容转换成数字? 条码号会有模糊查询(LIKE '前八位%'), 建議……
好的,按这个思路试试。 每个分公司的库存都会发一份到总部去,这个用service broker合适吗? MSDN上写着service borker比较效率和可靠
Andy-W 2012-12-08
  • 打赏
  • 举报
回复
修正下: 建議採用bigint,因為bigint佔 8 bytes,而使用varchar(15),佔用 實際長度 + 2個bytes。如果是15位的固定編號就要占17 bytes. bigint對應使用模糊查詢是沒問題的,使用like '前八位%' 可以應用到索引。
Andy-W 2012-12-08
  • 打赏
  • 举报
回复
1,服务器是多磁盘做的阵列,在阵列上用分区表性能有没有提升? 如果是磁盤陣列,分區對性能提升不大,除非是多個磁盤陳列同時應用,可以考慮分區。 2,条码是15位的数字,用bigint存储和varchar(15)存储,操作性能区别大不大?bitint这里是不是可以模糊查询,还是要把查询的内容转换成数字? 条码号会有模糊查询(LIKE '前八位%'), 建議採用bigint,因為bigint佔 8 bytes,而使用varchar(15),佔用 15個bytes。 bigint對應使用模糊查詢是沒問題的,使用like '前八位%' 可以應用到索引。
马少华 2012-12-08
  • 打赏
  • 举报
回复
引用 9 楼 abclm 的回复:
我的建议不用分.三个库用一个入库表,出库表,及库存表.在每个表内增加一个字段.仓库标示,下单到那个仓库,那个仓库进行发货,入库雷同.
不是说分三个数据库,我是说业务中会经过三个仓库, 另外真不想加库存表,感觉这就是个包袱,正在沿用的设计中就有库存表,但在批量出入库中,更新库存将近去了50%的开销。
  • 打赏
  • 举报
回复
我的建议不用分.三个库用一个入库表,出库表,及库存表.在每个表内增加一个字段.仓库标示,下单到那个仓库,那个仓库进行发货,入库雷同.
马少华 2012-12-08
  • 打赏
  • 举报
回复
引用 6 楼 ap0405140 的回复:
引用 5 楼 evionmzs 的回复:引用 4 楼 ap0405140 的回复:引用 3 楼 evionmzs 的回复:引用 2 楼 ap0405140 的回复:推荐用方案二,分别用出库表和入库表. 你是说采用方案二存储,但把出库和入库记录分开? 正是. 分成两条记录还是两个表? 两个表.
引用 7 楼 DVD_01 的回复:
引用 5 楼 evionmzs 的回复:引用 4 楼 ap0405140 的回复:引用 3 楼 evionmzs 的回复:引用 2 楼 ap0405140 的回复:推荐用方案二,分别用出库表和入库表. 你是说采用方案二存储,但把出库和入库记录分开? 正是. 分成两条记录还是两个表? 從業務上分析,出庫和入庫是不同的業務,在數據庫設計上可以考慮分兩個table來……
谢谢两位的建议, 还有两个问题。 1,服务器是多磁盘做的阵列,在阵列上用分区表性能有没有提升? 2,条码是15位的数字,用bigint存储和varchar(15)存储,操作性能区别大不大?bitint这里是不是可以模糊查询,还是要把查询的内容转换成数字? 条码号会有模糊查询(LIKE '前八位%'),
Andy-W 2012-12-08
  • 打赏
  • 举报
回复
引用 5 楼 evionmzs 的回复:
引用 4 楼 ap0405140 的回复:引用 3 楼 evionmzs 的回复:引用 2 楼 ap0405140 的回复:推荐用方案二,分别用出库表和入库表. 你是说采用方案二存储,但把出库和入库记录分开? 正是. 分成两条记录还是两个表?
從業務上分析,出庫和入庫是不同的業務,在數據庫設計上可以考慮分兩個table來存儲出庫入庫情況,也就是描述出入帳。而且對對於數據量大情況查詢(询一段时间内某个库没有出库的商品)也有好處。如果你服務器是多磁盤的話,你還可以對於出庫入庫table按在時間字段上進行分區,這樣你查詢某一個時間內的數據,性能會更好。
唐诗三百首 2012-12-08
  • 打赏
  • 举报
回复
引用 5 楼 evionmzs 的回复:
引用 4 楼 ap0405140 的回复:引用 3 楼 evionmzs 的回复:引用 2 楼 ap0405140 的回复:推荐用方案二,分别用出库表和入库表. 你是说采用方案二存储,但把出库和入库记录分开? 正是. 分成两条记录还是两个表?
两个表.
马少华 2012-12-08
  • 打赏
  • 举报
回复
引用 4 楼 ap0405140 的回复:
引用 3 楼 evionmzs 的回复:引用 2 楼 ap0405140 的回复:推荐用方案二,分别用出库表和入库表. 你是说采用方案二存储,但把出库和入库记录分开? 正是.
分成两条记录还是两个表?
唐诗三百首 2012-12-08
  • 打赏
  • 举报
回复
引用 3 楼 evionmzs 的回复:
引用 2 楼 ap0405140 的回复:推荐用方案二,分别用出库表和入库表. 你是说采用方案二存储,但把出库和入库记录分开?
正是.
马少华 2012-12-08
  • 打赏
  • 举报
回复
引用 2 楼 ap0405140 的回复:
推荐用方案二,分别用出库表和入库表.
你是说采用方案二存储,但把出库和入库记录分开?
唐诗三百首 2012-12-08
  • 打赏
  • 举报
回复
推荐用方案二,分别用出库表和入库表.
马少华 2012-12-08
  • 打赏
  • 举报
回复
有经验的朋友帮看看那种方案比较好,或者是其它的方案

22,206

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧