700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > 大数据量数据存储分表实例(企业级应用系统)附原码

大数据量数据存储分表实例(企业级应用系统)附原码

时间:2021-06-21 13:53:36

相关推荐

大数据量数据存储分表实例(企业级应用系统)附原码

数据库|mysql教程

数据,存储,分表,实例,企业级,应用系统,原码,随着,数据,

数据库-mysql教程

浏览器源码.rar,vscode 插件框架,moka ubuntu,tomcat进程问题,sqlite判断表已存在,wordpress插件收录,物流网站前端框架,夏季除爬虫的最好方法,php 直销源码,自学seo要多久,网站扒手是什么意思,精品网页模板,做门户网站用什么模板lzw

随着数据不断增长,数据库中单表无法满足大数据量的存储,所以我们就提出按照自然时间、单站点信息分表来存储大量秒级数据。 例如:大气、水利、交通(GPS)信息监测系统中的实时数据进行存储,一般时按照开始时间、结束时间、单站点、多站点、监测项目等方

y源码之家,vscode安装文件,ubuntu 设置mac,tomcat使用系统代理,sqlite3看数据库,网站被恶意爬虫攻击了怎么办,反射机制 php,锦州seo优化排名服务,网站广告弹窗代码,如何制作ecshop模板lzw

多平台网盘源码下载,ubuntu文字界面启动,tomcat9网页打不开,爬虫抽屉饲养箱,成都PHP软件实施工程师,医院seo行业lzw

随着数据不断增长,数据库中单表无法满足大数据量的存储,所以我们就提出按照自然时间、单站点信息分表来存储大量秒级数据。

例如:大气、水利、交通(GPS)信息监测系统中的实时数据进行存储,一般时按照开始时间、结束时间、单站点、多站点、监测项目等方式进行数据查询、分析、图表。

如 按5分钟单站点的数据12*24(小时)*365(天)*(监测项)10=100W ,也就是一个站点一年数据量 100w条,100站*100W =1亿条这样的数据是无法满足快速查询。

所以我们就按照 ”tb_5M_年_站号“建表名称,tb_时间刻度_年份_站号建表 。 “TB_5M__A0001”, “TB_5M__A0002”, “TB_5M__A0003”,, “TB_5M__A0004”

条张表 存储100W,如存储1分钟的数据单表就 500W条, 如1秒钟数据:60*500W=3亿条数据,这样不行啊,我们要以在分表,分表规则中加一个月份,tb_5M_年_月_站号,这里就不说了。

问题来,我们如何方便快捷编写代码那?,我们还想用ORM(EF)进行数据查询,就拿我们真实项目来说吧。

思路,我们用.NET开发,在数据库建基本表(tb_5m_Base)来实现EF,用 DbContext实现数据访问。

别的不多说了,直接来代码吧,

功能5分钟数据查询,用户指定开始时间、结束时间、单(多)选择站点、单(多)选择监测 项目,进行数据查询功能。

代码发如下:

public class Tb_5m_Base

{

public int ID{ get; set; }

public Datatime Time{ get; set; }

public string Pcodes { get; set; }

public double Values{ get; set; }

}

public partial class EntityFrameworkDataContext : DbContext

{

static EntityFrameworkDataContext()

{

Database.SetInitializer(null);

}

public EntityFrameworkDataContext()

: base(“Name=EntityFrameworkDataContext”)

{

}

protected override void OnModelCreating(DbModelBuilder modelBuilder)

{

modelBuilder.Configurations.Add(new tb_5m_Base());

}

public DbSet TB_5m_Base{ get; set; }

}

public class BLLDataQuery

{

///

/// 开始日期 /// 结果日期

/// 站点ID :1,2,3

/// 监测项 :EC,PC,MC ///

public static List GetMinuteData( DateTime startTime, DateTime endTime,string stationids, string pcodus)

{

List list = new List();

string[] strArray = stationids.Split(new char[] { ‘,’ });

int year = startTime.Year;

int num = endTime.Year;

string str = string.Empty;

string commandText = string.Empty;

pcodus=pcodus;

while (year <= num) //年份跨年也没问题

{

foreach (string strstationid in strArray) //站点

{

tbname= string.Format(“tb_5m_{0}_{1}_Src”, year, strstationid );

commandText = string.Format(“Select * from {0} where TIME between ‘{1}’ and ‘{2}’ and pcodes in ({3}) “, new object[] { tbname, startTime, endTime, pcodus});

try

{

using (EntityFrameworkDataContext _dbcontext = EntityFrameworkDataContext.CreateDbContext)

{

list.AddRange(_dbcontext.Database.SqlQuery(sql,new paramentList[0]).ToList());

}

}

catch (Exception exception)

{

}

}

year++;

}

return list;

}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。