• home > DB > mysql >

    ePAM Azure environment学习笔记:存储与SQL Server

    Author:zhoulujun Date:

    第一次接触ePAM Azure environment,和目前国内一般IT环境差异蛮大,特别是SQL层面的,MySQL与SQL Server差异蛮大。

    现在负责的项目全套采用Azure,除了之前白嫖微软云服务外,这还是第一次接触微软的全套服务

    EPAM

    我们先来看一篇文章:

    EPAM Expands Partnership with Microsoft – Becomes Globally Managed Enterprise Systems Integrator

    Expanded partnership and EPAM’s advanced cloud-native, AI and data expertise will enable the Company to help its clients modernize, transform and simplify complex enterprise platforms, applications and processes to accelerate business growth.

    The elevated status positions EPAM as a proven service provider for enterprise customers undertaking complex digital transformation, modernization and cloud migrations and enables the Company to build cloud-native intelligent applications powered by Azure OpenAI Service.

    About EPAM Systems

    Since 1993, EPAM Systems, Inc. (NYSE: EPAM) has leveraged its advanced software engineering heritage to become the foremost global digital transformation services provider – leading the industry in digital and physical product development and digital platform engineering services. 

    epam公司的创始人之一也是现任CEO阿尔卡季·多普金1960年出生在白俄罗斯首都明斯克,1990年移民美国。1993年和另一位创始人列昂尼德·罗兹涅尔创立epam,这个名称是Effective Programming for America的缩写。

    明斯克的时候,很多地方都有epam的logo。对于白鹅来说,是一份非常不错的工作!

    这家公司在白俄罗斯会有这么多员工,除了公司自身的白俄罗斯渊源之外,还有就是白俄罗斯程序员相对于欧美国家还是要便宜很多,简直是白菜价——量多质优!根据白俄罗斯税务部门统计,2019年前三季度,白俄罗斯高新技术产业园的企业(主要是IT企业)为白俄罗斯政府贡献了超过1亿美元的税收收入。

    这家公司在中国也有分支机构,在深圳、苏州等城市设有办公室。还有一个中文名字叫亿磐。2014年收购了中国深圳卓银软件。2016年收购了另一家中国公司Dextrys。

    公司的主营业务有it咨询、软件开发、软件集成和测试以及数字战略制定等

    从MySQL 转战SQL Server

    Oracle的MySQL是开源的RDBMS,可以免费下载和使用。或许这才是其大行其道的原因吧,特别是在国内!

    微软的SQL Server,由于是商业软件,需要购买许可证,成本相对较高。

    SQL Server提供了高级的可伸缩性和容错性。最重要的是,其安全功能,包括身份验证、访问控制和数据加密等,如透明数据加密(TDE)和数据遮蔽(Data Masking),以保护数据库中的数据。  

    当然,在人工费用低廉的China,这都不是事儿!什么?有这样那样的问题,直接交这批码农免费加把解决,不行滚蛋,市面上人才大把!

    SQL Server与MySQL的差异

    差异还挺多,底层引擎层面就不提了,主要提语法层面

    大小写敏感性

    MySQL和SQL Server一样,对大小写不敏感。但不同的是,在MySQL中对部分对象的引用是大小写敏感的,如数据库名、表名,但对字段、索引、函数、存储过程等的引用不敏感。

    增删改查SQL差异

     修改表名

    -- SQL Server使用存储过程sp_rename
    EXEC sp_rename emp,emp2 [object]
    -- mysql使用alter语句中的rename功能
    alter table emp rename [to] emp3;

    在删除表方面,MySQL比SQL Server要方便很多,判断起来也方便很多。

    -- SQL Server删除表,每次只能删除一张表
    if object_id('table_name') is not null drop table table_name;
    if exists(select object_id('table_name')) drop table table_name;
    
    -- MySQL可以直接判断,且一次可以删除多表
    drop table if exists table_name1,table_name2...

    修改字段属性

    -- SQL Server只能修改字段属性(数据类型、空性),不能修改约束类属性,
    -- 约束类属性需要使用"alter table … add constraint"
    alter table emp2 alter column id int not null;
    alter table emp2 add gender char(2);
    alter table emp2 add CONSTRAINT def_key DEFAULT('男') FOR gender;
    alter table emp2 add constraint pk_key primary key clustered(id);
    
    -- mysql修改字段属性有几种方法
    alter table table_name 
    | ALTER [COLUMN] col_name {SET DEFAULT string | DROP DEFAULT}
    | CHANGE [COLUMN] old_col_name new_col_name column_definition
          [FIRST|AFTER col_name]
    | MODIFY [COLUMN] col_name column_definition
          [FIRST | AFTER col_name]

    也就是说,change和modify都可以修改列的定义,包括约束类的属性、字段的位置,且change比modify更多一个重命名列的功能。而alter column则只能设置默认值和删除默认值。注意,重命名和修改字段时,需要重新定义字段属性。



    自增列

    MySQL中设置列自增列(auto_increment)的列必须是有索引的,且创建表时要显式指定的种子值需要在建表语句之后。另外MySQL一张表只能有一个自增列。且MySQL中向自增列插入数据时必须使用null来表示插入的是自增列,除非显式指定插入列表中不包含自增列,

    而列,除SQL Server向自增列插入数据时可以且必须无视该非设置显示插入模式

    -- SQL Server直接使用identity,但必须有非自增列之外的列才能插入,除非显式开启手动插入自增列
    create table emp1(id int not null identity(1,2),name CHAR(20));
    insert into emp1 VALUES('malongshuai');
    insert into emp1 values('gaoxiaofang');
    select * from emp1; 
    
    -- MySQL中自增列必须为索引列,并且只能设置种子值而不能直接设置步长
    create table emp1(id int not null primary key AUTO_INCREMENT);
    create table emp2(id int not null primary key AUTO_INCREMENT) auto_increment=100;
    insert into emp1 values(null);
    insert into emp2 values(null);

    设置自增列的步长,分为全局级别和会话级别。但它们都是临时生效的,重启实例后效果就消失,要永久生效可以将其写入配置文件中。如果是会话级别,那么当用户新建一个会话的时候,那么步长又回到了全局级别。

    mysql不能设置为表级别的步长!!

    设置和查看全局和会话级别的变量时,分别使用如下语句:

    set [session] auto_increment_increment=100;  -- 会话级的步长设置
    set global auto_increment_offset=12;         -- 全局级的种子值
    show [session] variables like 'auto_inc%';
    show global variables like 'auto_inc%';


    数据类型

    数据类型的范围是根据bit位的数量值来计算的。4字节的int占用32bit,所以可以表示的范围为0-2^32。




    平时差不多记这些就够了,更多的请查看

    https://www.cnblogs.com/f-ck-need-u/p/7592501.html

    https://cloud.tencent.com/developer/article/2159612

    Azure 存储简介

    微软的云存储与平时熟悉的腾讯云与阿里云,还是与蛮大的区别的。

    Azure 存储平台包括以下数据服务:

    • Azure Blob:适用于文本和二进制数据的可大规模缩放的对象存储。 还包括通过 Data Lake Storage Gen2 支持大数据分析。

    • Azure 文件:适用于云或本地部署的托管文件共享。

    • Azure 弹性 SAN:一种完全集成的解决方案,可简化在 Azure 中部署、缩放、管理和配置 SAN 的操作。

    • Azure 队列:用于在应用程序组件之间进行可靠的消息传送的消息存储。

    • Azure 表:一种 NoSQL 存储,适合用作结构化数据的无架构存储。

    • Azure 托管磁盘:Azure VM 的块级存储卷。

    • Azure 容器存储:专为容器原生构建的卷管理、部署和业务流程服务。

    • Azure NetApp 文件 - NetApp 提供支持的企业文件存储:企业业务线 (LOB) 和存储专业人员可以轻松地迁移和运行基于文件的复杂应用程序,而无需更改代码。 Azure NetApp 文件通过 NetApp 帐户进行管理,可通过 NFS、SMB 和双重协议卷进行访问。 

    具体参看 https://learn.microsoft.com/zh-cn/azure/storage/common/storage-introduction







    转载本站文章《ePAM Azure environment学习笔记:存储与SQL Server》,
    请注明出处:https://www.zhoulujun.cn/html/DB/mysql/2024_1012_9274.html