C# 数据操作系列 - 0. 序言
0. 前言
在上一个系列中,我们初步浏览了一下C#的基础知识。这句话的意思就是C#基础知识系列完结了,撒花。当然,并不是因为C#已经讲完了。正是因为我们轻轻地叩开了那扇门,才能看到门后面那瑰丽的世界。那么,门后面有什么?就让我在后续的篇幅里,带着大家一起浏览吧。
0.1 C# 能做什么
之前在开发工具篇大概为大家介绍了.net 分的方向,.net framework,.net core,mono,UWP 这四个。严格讲这不是技术区分的方向,而是基于SDK的区分。
说起能完成的功能,接下来给大家看一个图:
这是微软官网对.net能做的事情一个整体的描述。当然,其中某些方向暂时只能在Visual Studio上开发,所以需要Windows系统。当然了,并不是一直都只能在Windows下开发。微软正在一步一步的迁移到.net core或者说是.net standard(标准)上。
说到这里,重新介绍一下.net standard和.net framework以及.net core的区别吧。
.net standard也叫 dotnet 标准,是一套正式的.net API规范,进一步提高.net生态的一致性。而.net core正是在.net standard体系下的一个产物。
所以我们大概总结一下C#能做什么吧:
- 网站
- 桌面应用
- 游戏
- 微服务应用
- 手机APP
- 人工智能
- 物联网
嗯,基本是涵盖了互联网绝大多数的项目类别,所以C#的前景还是可以的。
0.2 什么是数据库
数据库的英文名字是Database,是指按照数据结构来组织、管理数据的仓库。而我们常说的数据库还有另外一种意思,指数据库管理系统,也就是 Database Management System,用来高效地管理、获取数据。
所以,我们平时在使用数据库的时候,会同时搭配数据库管理系统进行。当然,对于一个开发而言,并不需要精通数据库管理系统,这部分的工作属于DBA(Database Administrator,数据库管理员)的。
1. 常用数据库
很多时候说到数据库的时候,其实一般指的都是关系型数据库。近年来,因为高并发和大数据时代的到来,关系型数据库无法很好地满足需求,于是大牛们研究出了非关系型数据库。
1.1 关系型数据库
关系型数据库(Relational Database),是指使用关系模型来组织数据的数据库,最大的特征就是以行的形式表示实体,以列的形式表示实体的字段,一张表为一组实体,多张表联合起来就组成了一个数据库。
这里简单介绍一下 关系型数据库的几大巨头:
1. Microsoft SQL Server:
微软开发的数据库,早期版本只支持Windows环境,而且安装简单,性能和维护相对不错,然后被中小企业所接受并使用。在前几年,微软为Linux开发了对应的版本,甚至增强了企业级性能。在SQL Server2019之前的版本,SQL Server对应的管理程序 SQL Server Management Studio 是与数据库安装镜像一起的,可以在安装数据库的时候直接安装。在2019,则取消了SQL Server Management Studio 与安装包的挂钩,用户就可以自行安装SQL Server Management Studio程序。
这是微软给出的宣传亮点。
MS SQL Server是收费的,而且正版的费用不是很便宜,但对于普通开发而言,有科学方式(微软一概在这方面特别大方)来免费试用旗舰版。
当然了,MS SQL Server还有两个不收费的版本,不过功能不如旗舰版的全:
所以对于一个独立项目或者中小型企业而言不失为一个好的选择。
2. Oracle数据库
最出名的企业级数据库,与MS SQL Server不同的是,Oracle从出生就备受企业级应用的青睐。其独到的特性支持和数据库DBMS,以及它强大的性能,都是决定性的亮点。
但Oracle数据库也是一个对开发者不太友好的数据库。因为如果开发者如果需要安装的话,需要在Oracle官网有一个账号。然后下载两个安装包,总计4G左右。安装过程十分复杂,稍有不慎就需要卸载已安装完成的配件接着重新安装。
嗯,最重要的一点是,企业使用收费。
点击下载后,如果没登陆的话,会跳转到这个页面
3.MySQL
说到数据库,根本没法绕过MySQL。MySQL之前是一个开源的数据库,所有人都可以正常使用,不需要像Oracle一样 注册账号。MySQL提供了一个收费版和一个社区版(免费版)。可以说是一个十分适合初学者的数据库,甚至因为其开源的特性,使得众多厂商都可以根据自己的业务逻辑从新发布一个MySQL的版本。
这是它版本的部分区别:
MySQL后来被Oracle公司收购了,维护和更新就变得有点迷。因为Oracle的名声不太好,再加上Oracle对MySQL并不上心,就有大神依赖于MySQL的源码重新搞了MariaDB。
4.MariaDB
MariaDB是MySQL的一个复刻版。出于对Oracle一概名声的信任,当时MySQL原始开发组的一批小伙伴觉得搞一个基于GNU GPL下的开源项目来。
MariaDB的API和命令与MySQL完全一致,但是MariaDB更换了数据引擎。
1.2 非关系型数据库
NOSQL(Not only sql)是对不同于传统关系型数据库的统称。这是近几年兴起的概念,里面有很多后起之秀。
当代典型的关系数据库在一些数据敏感的应用中表现了糟糕的性能,例如为巨量文档创建索引、高流量网站的网页服务,以及发送流式媒体[5]。关系型数据库的典型实现主要被调整用于执行规模小而读写频繁,或者大批量读而极少写访问的事务。
NOSQL的结构通常提供弱一致性的保证,如最终一致性,或交易仅限于单个的数据项。不过,有些系统,提供完整的ACID保证在某些情况下,增加了补充中间件层(例如:CloudTPS)[6]。有两个成熟的系统有提供快照隔离的列存储:像是Google基于过滤器系统的BigTable[7],和滑铁卢大学开发的HBase[8]。这些系统,自主开发,使用类似的概念来实现多行(multi-row)分布式ACID交易的快照隔离(snapshot isolation)保证为基础列存储,无需额外的数据管理开销,中间件系统部署或维护,减少了中间件层。
少数NOSQL系统部署了分布式结构,通常使用分布式散列表(DHT)将数据以冗余方式保存在多台服务器上。依此,扩充系统时候添加服务器更容易,并且扩大了对服务器失效的承受能程度。
以上内容来源于维基百科。
关于非关系型数据库后续也会进行介绍,现在就浅藏辄止吧。
2. 总结
本篇是《C# 数据访问系列》的开篇,在这里简单介绍了一下数据库有哪些和一些简单的区分。这个系列主要讲C# 通过ADO.NET 、EF、Nhibernate等ORM(对象关系映射)框架访问和操作数据。
下一篇将简单介绍一下SQL以及常用SQL的写法。
更多内容烦请关注我的博客《高先生小屋》
C# 数据操作系列 - 0. 序言的更多相关文章
- C# 数据操作系列 - 6 EF Core 配置映射关系
0. 前言 在<C# 数据操作系列 - 5. EF Core 入门>篇中,我们简单的通过两个类演示了一下EF增删改查等功能.细心的小伙伴可能看了生成的DDL SQL 语句,在里面发现了些端 ...
- C# 数据操作系列 - 8. EF Core的增删改查
0.前言 到目前为止,我们看了一下如何声明EF Core的初步使用,也整体的看了下EF Core的映射关系配置以及导航属性的配置. 这一篇,我带大家分享一下,我在工作中需要的EF Core的用法. 1 ...
- C# 数据操作系列 - 12 NHibernate的增删改查
0. 前言 上一篇<C# 数据操作系列 - 11 NHibernate 配置和结构介绍> 介绍了Nhibernate里的配置内容.这一篇将带领大家了解一下如何使用NHIbernate.之前 ...
- C# 数据操作系列 - 15 SqlSugar 增删改查详解
0. 前言 继上一篇,以及上上篇,我们对SqlSugar有了一个大概的认识,但是这并不完美,因为那些都是理论知识,无法描述我们工程开发中实际情况.而这一篇,将带领小伙伴们一起试着写一个能在工程中使用的 ...
- C# 数据操作系列 - 16 SqlSugar 完结篇
0. 前言 前一篇我们详细的介绍了SqlSugar的增删改查,那些已经满足我们在日常工程开发中的使用了.但是还有一点点在开发中并不常用,但是却非常有用的方法.接下来让我们一起来看看还有哪些有意思的内容 ...
- C# 数据操作系列 - 19 FreeSql 入坑介绍
0. 前言 前几天FreeSql的作者向我推荐了FreeSql框架,想让我帮忙写个文章介绍一下.嗯,想不到我也能带个货了.哈哈,开个玩笑-看了下觉得设计的挺有意思的,所以就谢了这篇文章. 简单介绍一下 ...
- C# 数据操作系列 - 1. SQL基础操作
0.前言 前篇介绍了一些数据库的基本概念和以及一些常见的数据库,让我们对数据库有了一个初步的认识.这一篇我们将继续为C#数据操作的基础填上一个空白-SQL语句. SQL(Structured Quer ...
- C# 数据操作系列 - 9. EF Core 完结篇
0.前言 <EF Core>实际上已经可以告一段落了,但是感觉还有一点点意犹未尽.所以决定分享一下,个人在实际开发中使用EF Core的一些经验和使用的扩展包. 1. EF Core的异步 ...
- C# 数据操作系列 - 2. ADO.NET操作
0.前言 在上一篇中初略的介绍了一下SQL的基本写法,这一篇开始我们正式步入C#操作数据库的范围.通过这一系列的内容,我想大家能对于数据库交互有了一定的认识和基础.闲话不多说,先给大家介绍一个C#操作 ...
随机推荐
- VulnHub靶场学习_HA: Avengers Arsenal
HA: Avengers Arsenal Vulnhub靶场 下载地址:https://www.vulnhub.com/entry/ha-avengers-arsenal,369/ 背景: 复仇者联盟 ...
- [算法]Miller-Robbin素数判定
目录 一.实现原理 二.应用 判断一个正整数是否为素数 三.小结 一.实现原理 我们以前都是怎么判断素数的呢: 试除法: 若一个正整数N为合数,则存在一个能整除N的数k,其中\(2\leqslant ...
- XFS文件系统的备份与恢复
永久修改主机名:hostnamectl set-hostname oldboy临时修改主机名:hostname xfsdump备份xfsdump -f 备份的文件位置 要备份的分区或者磁盘 免交互备份 ...
- 【论文研读】强化学习入门之DQN
最近在学习斯坦福2017年秋季学期的<强化学习>课程,感兴趣的同学可以follow一下,Sergey大神的,有英文字幕,语速有点快,适合有一些基础的入门生. 今天主要总结上午看的有关DQN ...
- JMeter分布式压测-常见问题之(Server failed to start: java.rmi.server.ExportException: Listen failed on port: 0; nested exception )
问题描述: 在Linux环境启动jmeter-server时抛出了如下异常: 问题描述: 1.可能监听的端口被占用,修改端口号2.Server相关的rmi配置需要调整 解决方案: 在目录/apache ...
- spring boot 项目 mvn clean install 报 "Unable to find main class" 的解决方法
按照步骤来总会解决的 检查pom.xml中是否加入了spring boot maven插件 <build> <plugins> <plugin> <group ...
- 数据结构(C语言版)---二叉树
1.二叉树:任意一个结点的子结点个数最多两个,且子结点的位置不可更改,二叉树的子树有左右之分. 1)分类:(1)一般二叉树(2)满二叉树:在不增加树的层数的前提下,无法再多添加一个结点的二叉树就是满二 ...
- 推荐web前端框架bootstrap
bootstrap是基于Jquery而开发的一个前端框架. 全中文的学习网站:http://www.runoob.com/bootstrap/bootstrap-tutorial.html 实际上就是 ...
- Kylin on Parquet 介绍和快速上手
Apache Kylin on Apache HBase 方案经过长时间的发展已经比较成熟,但是存在着一定的局限性.Kylin 查询节点当前主要的计算是在单机节点完成的,存在单点问题.而且由于 HBa ...
- Python Flask构建微信小程序订餐系统 学习 资源
一.Flask MVC框架结构 1.1实际项目结构 1.2application.py 项目配置文件Flask之flask-script模块使用 static.py 文件(部署到生成环境不需 ...