如何规划数据量很大的数据库

soldierluo 2011-11-19 10:30:52
请问,如何规划数据量很大的数据库,我预计每个月会有1-3千万的数据量,请问这样的数据量改如何来规划数据库,谢谢
...全文
241 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
highpr 2011-11-26
  • 打赏
  • 举报
回复
第一范式
gzdiablo 2011-11-26
  • 打赏
  • 举报
回复
首先要搞清楚数据库存放的数据是干什么的。通常情况下会有几种数据。
1.日志类
2.数据类 例如静态页面、图片、或基本上独立而且不经常改动的数据
3.业务类
4.报表类

基于几种数据的存储
1.尽量使用文件系统进行存储。在每段数据开始的位置添加时间戳,可能的话尽量保持每条数据的的容量是一样的,不足的用其他符号补足。
2.通常这类型的数据不会经常改动或根本不改动,这类数据适合使用类似Nosql的数据库。
3.这类型的数据可能经常要被取出并且进行操作,这类型的数据适合使用sql数据库存放。因为需要用很强的事务来约束。
4.这类数据通常是用于数据挖掘,所以需要强结构化的数据来支持。所以必须使用sql数据库,但可以根据业务需求进行适当的拆分。

对于性能而言如果你的数据是
1.因为有时间戳,如果每条数据容量是一样的情况下,可以用简单的算法快速定位到某一个时间段的数据。(建议用12个字符base64格式的DateTime),如果数据容量不一样那么查询速度就差很多了。
2.如果使用了分布式的Nosql或分布式的文件系统,基本上没压力。
3.通常情况下,如果使用的是oracle或mysql那么可以应用分布式策略,基本上只是配置一下。如果是mssql很悲剧的只能从结构上索引上进行优化。mssql2008有分区索引,很适合这种类型的数据。
4.这类数据通常不需要非常高的实时性,基本上用另外一个新的数据库去计算和存储。但需要做数据同步。
段传涛 2011-11-25
  • 打赏
  • 举报
回复
1.按照月来分,每个月让系统自动建一张表,然后把这个月的数据放在这个表里面

2.就是用一个备份的数据服务器,把每个月的数据都导出到那个备份服务器上去,在备份服务器上面数据的存储不按月来分,按照年来分,每年建一张新表,做报表的时候,就到备份服务器上面操作

3.就是对这几张表用对象数据库,来存储一个月的数据,这数据是在内存的,操作起来,比操作关系数据库快,前段时间的数据还是放在关系数据库里面,这样就可以不用数据备份服务器了


4 .定时清理数据,可以考虑用触发器或者带存储过程的作业来实现;

5.是考虑数据的转换与提取,定期用程序或用事务复制导入原始/汇总数据,把数据复制到一台专门做统计的服务器上,专门做查询所用;查询的时候做相应的优化,例如索引,视图等这样查询的时候压力就会小很多;同时考虑负载平衡,在空隙时利用其cpu和内存

6 .各业务系统和外部数据源传送的数据为维系挽留系统输入,这些数据分别经过数据格式检查;源数据清洗抽取转换、装载数据到收集层;对收集层中数据抽取、转换、装载到数据仓库;数据仓库中数据进行抽取、转换并结合模型算法库中的算法生成维系结果集以供输出;同时通过数据仓库接口,可将数据提供给应用系统的本地化查询使用。
段传涛 2011-11-25
  • 打赏
  • 举报
回复
1,表分区。
2,中间表。
3,集群。
风一样的大叔 2011-11-25
  • 打赏
  • 举报
回复
Im_Sorry 2011-11-25
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 sp1234 的回复:]

想明白什么才需要从数据库中去运算。比如腾讯它是负责提供即时通讯服务的,但是如果你认为消息是保存到数据库中然后对方再去数据库读取记录,那么腾讯就该倒闭了。数据库只是做备份、后台(甚至很多Slave机器上)统计各种报表。
[/Quote]


你对腾讯技术也有研究哦,腾讯技术很强大哦!
soldierluo 2011-11-25
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 sp1234 的回复:]
想明白什么才需要从数据库中去运算。比如腾讯它是负责提供即时通讯服务的,但是如果你认为消息是保存到数据库中然后对方再去数据库读取记录,那么腾讯就该倒闭了。数据库只是做备份、后台(甚至很多Slave机器上)统计各种报表。
[/Quote]

嗯,我规划的这个库就是个log库来的,如果有多台服务器,多台服务器的数据都会汇总到这个库来,所以数据量会比较大



现在想请教一个问题,分区表索引的创建是不是和普通表一样,谢谢
丁码农 2011-11-19
  • 打赏
  • 举报
回复
海量数据的存储,管理,性能优化,这是一个很广的话题。只能简单说几点吧。
在sqlserver 2005-2008中,可以使用表分区(横向切割或者纵向切割),对于查询方面,可以合理使用索引。
阿非 2011-11-19
  • 打赏
  • 举报
回复
表分区
md5e 2011-11-19
  • 打赏
  • 举报
回复
  • 打赏
  • 举报
回复
想明白什么才需要从数据库中去运算。比如腾讯它是负责提供即时通讯服务的,但是如果你认为消息是保存到数据库中然后对方再去数据库读取记录,那么腾讯就该倒闭了。数据库只是做备份、后台(甚至很多Slave机器上)统计各种报表。
chen_ya_ping 2011-11-19
  • 打赏
  • 举报
回复
比如每个月都可以新建一个表来进行存储当月的数据。
CalvinR 2011-11-19
  • 打赏
  • 举报
回复
分区啊

62,041

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

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