あまみや ゆうこ » DATA-PLAT

EF Core 插件 —— ToSql

背景

在使用Entity Framework Core进行开发时,若不使用Logger很难查看到一个查询的SQL语句,同时也有些开发者因为不了解EF Core哪些Linq可以Translate成SQL,哪些不能而踩坑导致全表查询的,因此开发了Pomelo.EntityFrameworkCore.Extensions.ToSql。开发者们可以使用这个插件来做查询的单元测试,来检测生成SQL是否正确,或Assert Unevaluated是否为0,同样也可用作对EF Core进行查询语句的输出等。

该项目在GitHub中开源,也欢迎广大开发者加入QQ群522943763提出意见与建议。

使用

首先,在项目中引入Pomelo.EntityFrameworkCore.Extensions.ToSql 2.0.0-preview3-10000

file

在欲输出SQL语句的类中引用命名空间Microsoft.EntityFrameworkCore,并在欲输出SQL语句位置添加.ToSql()

var MySqlContext = new MySqlContext();

更多内容 »

Published on 8/1/2017 2:59:55 PM

全文索引/空间索引 - Pomelo.EFCore.MySql

背景

  • 全文索引(FULL TEXT):MySQL全文检索是利用查询关键字和查询列内容之间的相关度进行检索,可以利用全文索引来提高匹配的速度。
  • 空间索引(SPATIAL):空间索引是指依据空间对象的位置和形状或空间对象之间的某种空间关系按一定的顺序排列的一种数据结构,其中包含空间对象的概要信息。
  • Pomelo.EntityFrameworkCore.MySql:一款第三方MySQL的Entity Framework Core驱动,在GitHub中开源,性能、功能、下载量均超过Oracle官方提供的版本。QQ群522943763。

使用

全文索引在7月28日被支持,需要安装 Pomelo.EntityFrameworkCore.MySql 2.0.0-preview3-10053 或更高版本。

创建TestModel

class TestModel
{
        public Guid Id { get; set; }

更多内容 »

Published on 7/27/2017 4:03:10 PM

MySQL在EF Core下的Scaffolding操作

Pomelo于2016年11月22日发布的MySQL for ef core中,增加了DbContext Scaffolding的支持,这项功能是让开发者可以从现有的数据库中提取表、列、索引及外键成为模型。这也是当前唯一一个支持Scaffolding的MySQL for EF Core Provider。

下面将演示如何使用MySQL的DbContext Scaffolding:

① 创建一个项目,命名为ScaffoldingTest:

1.png

② 添加EF Core Tools以及Pomelo的引用:

2.png

③ 在这里,我们预先创建了一个带有两张表的数据库,名为eftests。

3.png

更多内容 »

Published on 11/22/2016 7:28:33 PM

.NET开发者如何使用MyCat?

背景

在开发中,我们设计的系统的效率在很大程度上会受到数据库引擎单表的性能制约,因此在数据量庞大、或记录过宽时,需要考虑分库分表从而减轻数据库压力,提升查询效率。此外配置读写分离,让主数据库处理事务性查询,而从数据库处理SELECT查询。数据库复制被用来把事务性查询导致的变更同步到集群中的从数据库。使用读写分离最大的作用无非是缓解服务器压力。

什么是MyCat?

file

从定义和分类来看,它是一个开源的分布式数据库系统,是一个实现了MySQL协议的服务器,前端用户可以把它看作是一个数据库代理,用MySQL客户端工具和命令行访问,而其后端可以用MySQL原生协议与多个MySQL服务器通信,也可以用JDBC协议与大多数主流数据库服务器通信,其核心功能是分表分库,即将一个大表水平分割为N个小表,存储在后端MySQL服务器里或者其他数据库里。

MyCat发展到目前的版本,已经不是一个单纯的MySQL代理了,它的后端可以支持MySQL、SQL Server、Oracle、DB2、PostgreSQL等主流数据库,也支持MongoDB这种新型NoSQL方式的存储,未来还会支持更多类型的存储。而在最终用户看来,无论是那种存储方式,在MyCat里,都是一个传统的数据库表,支持标准的SQL语句进行数据的操作,这样一来,对前端业务系统来说,可以大幅降低开发难度,提升开发速度。

此外,开发者可以根据不同的需求将表分配不同的数据节点,比如Table A存放在关系型数据库中(如MySQL),而Table B可能更适合NoSQL(如MongoDB),在MyCAT中开发者只需要简单配置,即可让MyCAT完成这一系列操作的路由。

MyCat的优势

更多内容 »

Published on 8/23/2016 11:27:27 PM

MyCat Getting Started

What is MyCat?

file

MyCAT is an Open-Source software, a large database cluster oriented to enterprises. MyCAT is an enforced database which is a replacement for MySQL and supports transaction and ACID. Regarded as MySQL cluster of enterprise database, MyCAT can take the place of expensive Oracle cluster. MyCAT is also a new type of database, which seems like a SQL Server integrated with the memory cache technology, NoSQL technology and HDFS big data. And as a new modern enterprise database product, MyCAT is combined with the traditional database and new distributed data warehouse. In a word, MyCAT is a fresh new middleware of database.

The target of MyCAT is to smoothly migrate the current stand-alone database and applications to cloud side with low cost and to solve the bottleneck problem caused by the rapid growth of data storage and business scale.

Why use MyCat?

  • Based on Alibaba open-source project Cobar, whose stability, reliability, excellent architecture and performance, as well as many mature use-cases make MyCAT have a good starting. Standing on the shoulders of giants, MyCAT feels confident enough to go farther.
  • Extensively drawing on the best open-source projects and innovative ideas, which are integrated into the Mycat’s gene, make MyCAT be ahead of the other current similar open-source projects, even beyond some commercial products.
  • MyCAT behind a strong technical team whose participants are experienced more than five years including some senior software engineer, architect, DBA, etc. Excellent technical team to ensure the product quality of Mycat.
  • MyCAT does not rely on any commercial company. It’s unlike some open-source projects whose important features is enclosed in its commercial products and making open-source projects like a decoration.
  • Supports individual databases like MySQL, SQL Server, Oracle, MongoDB, DB2...

更多内容 »

Published on 8/23/2016 5:42:16 PM