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 的写法。
更多内容烦请关注我的博客《高先生小屋》