分库分表、读写分离——用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就不用多介绍了,可以实现很多分布式数据库的功 ...
- 读写分离&分库分表学习笔记
读写分离 何为读写分离? 见名思意,根据读写分离的名字,我们就可以知道:读写分离主要是为了将对数据库的读写操作分散到不同的数据库节点上. 这样的话,就能够小幅提升写性能,大幅提升读性能. 我简单画了一 ...
随机推荐
- iOS 可高度自定义的底部弹框
技术: iOS Objective-C 概述 一个可以让开发者通过编写 tableView 的内容随心所欲的定制自己想要的底部弹框 详细 代码下载:http://www.demodashi.com ...
- markdown列表中的缩进
使用markdown时,一向不敢使用多级列表,因为多级列表容易出错.而实际上,只需要缩进两个空格就可以实现嵌套了. * one 这个是one的内容 * two 这个是two的内容 * three * ...
- ubuntu sudoers配置错误
ubuntu16 sudoers配置错误,普通用户无法使用sudo了,且root帐户也没启动. 重启,按住esc,选择恢复模式,选择root模式 mount -o remount rw / 修改文件至 ...
- mysql出现unblock with 'mysqladmin flush-hosts'
朋友发来消息,说一个系统应用登录的时候提示连接超时,让帮忙处理一下.问他应用和数据库是否都正常,回复说数据库好像没有问题,但是应用日志报无法连接数据库. 数据库版本是:5.5.53 让他telnet数 ...
- Python3 字符串前面加u,r,b的含义
u/U:表示unicode字符串 不是仅仅是针对中文, 可以针对任何的字符串,代表是对字符串进行unicode编码. 一般英文字符在使用各种编码下, 基本都可以正常解析, 所以一般不带u:但是中文, ...
- CentOS 7下PXE+Kickstart无人值守安装操作系统
1.简介 1.1. 什么是PXE PXE(Pre-boot Execution Environment,预启动执行环境)是由Intel公司开发的最新技术,工作于Client/Server的网络模式,支 ...
- mysql的大量的sleep进程解决办法
mysql的大量的sleep进程解决办法 版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/liuyong0507/article/detai ...
- gitlab 建立本地仓库
1.首先在gitlib上进行注册 注册与登录 为了用户的隐私,我们的私人 GitLab 平台关闭了自主注册.申请 GitLab 账号请联系工作站管理员:liuhaoyang@pku.edu.cn 初次 ...
- awk使用总结
转载自董的博客 1. 什么是awk awk是Unix/Linux提供的样式扫描与处理工具,非常擅长处理结构化数据和生成表单.与sed 和grep 很相似,但功能却超过大于两者,由于awk具备各种脚本语 ...
- Android gradle 配置
gradle https://www.cnblogs.com/qianxudetianxia/p/4948499.html flavor https://blog.csdn.net/user11223 ...