分库分表、读写分离——用Sql和ORM(EF)来实现
分库:将海量数据分成多个库保存,比如:2017年的订单库——Order2017,2018年的订单库——Order2018。。。
分表:水平分表(Order拆成Order1.....12)、垂直分表(Order,OrderDetail)
用Sql和ORM(EF)来实现


using EFAdvancedUsage.Models;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web; namespace EFAdvancedUsage.Service
{
public class OrderService
{
/// <summary>
/// 获取订单详情
/// </summary>
/// <param name="orderSerialId">格式如:2018100300001,前8位是订单时间,后5位是当天订单id(最大99999,即一天最多可产生10W-1条订单)</param>
/// <returns></returns>
public OrderContract GetOrderInfoBySerialId(string orderSerialId)
{
if (!VerifyOrderSerialIdFormat(orderSerialId)) return new OrderContract(); string orderCreatedMonth = orderSerialId.Substring(,); //01~12
using (var context = new EFAdvancedUsageContext())
{
/*①最好不用*,而是指明全部列;
*②按业务需求列返回OrderBussinessContract对象;
*③可对KeyId、OrderSerialId、CustomerId-Name-Mobile等常用条件查询增加索引
*/
string sql = "SELECT TOP(1) * FROM Order" + orderCreatedMonth + " Where OrderSerialId=" + orderSerialId;
return context.Database.SqlQuery<OrderContract>(sql)
.FirstOrDefault();
}
} private bool VerifyOrderSerialIdFormat(string orderSerialId)
{
//用正则或其他方式验证格式
throw new NotImplementedException();
} private string GenerateOrderSerial()
{
throw new NotImplementedException();
}
}
}
核心代码同上
读写分离,暂时未整理好、下次再写。
分库分表、读写分离——用Sql和ORM(EF)来实现的更多相关文章
- 分库分表(7)--- SpringBoot+ShardingSphere实现分库分表 + 读写分离
		
分库分表(7)--- ShardingSphere实现分库分表+读写分离 有关分库分表前面写了六篇博客: 1.分库分表(1) --- 理论 2.分库分表(2) --- ShardingSphere(理 ...
 - DB层面上的设计 分库分表 读写分离 集群化 负载均衡
		
第1章 引言 随着互联网应用的广泛普及,海量数据的存储和访问成为了系统设计的瓶颈问题.对于一个大型的 互联网应用,每天几十亿的PV无疑对数据库造成了相当高的负载.对于系统的稳定性和扩展性造成了极大的 ...
 - MySQL+MyCat分库分表 读写分离配置
		
一. MySQL+MyCat分库分表 1 MyCat简介 java编写的数据库中间件 Mycat运行环境需要JDK. Mycat是中间件.运行在代码应用和MySQL数据库之间的应用. 前身 : cor ...
 - ShardingJdbc-分表;分库;分库分表;读写分离;一主多从+分表;一主多从+分库分表;公共表;数据脱敏;分布式事务
		
目录 创建项目 分表 导包 表结构 Yml 分库 Yml Java 分库分表 数据库 Yml 读写分离 数据库 Yml 其他 只请求主库 读写分离判断逻辑代码 一主多从+分表 Yml 一主多从+分库分 ...
 - Windows环境下使用Mycat模拟分库分表-读写分离案例
		
一.基本环境 W7 64位.Mycat1.6.MySQL8.0 二.Mycat核心配置文件配置 解压Mycat1.6,并对server.xml.schema.xml.rule.xml三个核心配置文件做 ...
 - 分库分表(6)--- SpringBoot+ShardingSphere实现分表+ 读写分离
		
分库分表(6)--- ShardingSphere实现分表+ 读写分离 有关分库分表前面写了五篇博客: 1.分库分表(1) --- 理论 2.分库分表(2) --- ShardingSphere(理论 ...
 - go分库分表 主从分离例子
		
网上有很多介绍分库分表的文章,方法很多: 分区表切分 垂直切分 水平切分 区间切分 取模切分 这里不细说 分库分表简单,但后期会带来一系列的难题: 事务 Join 分页 数据库: master和sla ...
 - Mycat 读写分离+分库分表
		
上次进过GTID复制的学习记录,已经搭建好了主从复制的服务器,现在利用现有的主从复制环境,加上正在研究的Mycat,实现了主流分布式数据库的测试 Mycat就不用多介绍了,可以实现很多分布式数据库的功 ...
 - 读写分离&分库分表学习笔记
		
读写分离 何为读写分离? 见名思意,根据读写分离的名字,我们就可以知道:读写分离主要是为了将对数据库的读写操作分散到不同的数据库节点上. 这样的话,就能够小幅提升写性能,大幅提升读性能. 我简单画了一 ...
 
随机推荐
- Saltstack之Scheduler
			
一.引言: 在日常的运维工作中经常会遇到需要定时定点启动任务,首先会考虑到crontab,但是通过crontab的话需要每台机器下进行设置,这样统一管理的话比较复杂:通过查百度和google发现sal ...
 - 小型互联网公司的IT系统建设思路
			
最近一些想创业的一帮兄弟来问我,准备借助互联网的翅膀,做某某事情,并想尽快的做出一个系统平台. 我给的思路,分6个步骤: 需求-> 灵感设计 ->实现 ->迭代改进 ->成 ...
 - 【Java】设计模型-五种单例模型
			
一. 什么是单例模式 只需要某个类同时保留一个对象,不希望有更多对象,此时,我们则应考虑单例模式的设计. 单例模式的主要作用是保证在Java程序中,某个类只有一个实例存在. 单例模式有很多好处,它能够 ...
 - HashMap中capacity、loadFactor、threshold、size等概念的解释<转>
			
最近在看HashMap的源码,有很多概念都很模糊,今天写了一个测试例子,加深对这几个概念的理解,并演示了扩容及树化的过程(见下篇博文:). 注:本文基于JDK 1.8 HashMap的结构 约定 约 ...
 - Spring-Cloud-Gateway 从升级到放弃
			
1 为什么要升级为spring-cloud-gateway? Spring Cloud Gateway features: Built on Spring Framework 5, Project R ...
 - SAP Tax Service可以取代TAXBRA / RVABRA吗?(翻译) 跨国贸易云税务解决方案
			
这篇文章的内容基于Fausto Motter 的一篇文章,他在SAP社区用葡萄牙语写了一篇文章,讨论如何用云解决方案取代巴西税收计算.我翻译了他的部分文章,添加并修改了一些内容,目标是帮助全球的SA ...
 - 为什么要用kafka、rabbit等消息队列
			
1.解耦: 允许你独立的扩展或修改两边的处理过程,只要确保它们遵守同样的接口约束. 2.冗余: 消息队列把数据进行持久化直到它们已经被完全处理,通过这一方式规避了数据丢失风险.许多消息队列所采用的&q ...
 - 必问的Java集合框架面试题
			
Arraylist 与 LinkedList 异同 是否保证线程安全: ArrayList 和 LinkedList 都是不同步的,也就是不保证线程安全: 底层数据结构: Arraylist 底层使用 ...
 - OpenGL——OpenCV与SOIL读取图片进行纹理贴图
			
使用OpenCV读取图片代码如下 img = imread(m_fileName); if (img.empty()) { fprintf(stderr, "Can not load ima ...
 - Spark RDD的默认分区数:(spark 2.1.0)
			
本文基于Spark 2.1.0版本 新手首先要明白几个配置: spark.default.parallelism:(默认的并发数) 如果配置文件spark-default.conf中没有显示的配置,则 ...