• MySQL已经流行了非常长时间,已经有一代数据库从业者最初就是从MySQL起接触数据库。再重新了解其他数据库的时候,虽然底层原理很多类似,但是上层实现、接口与使用上还是有非常大的不同。本文,就简单的介绍一下SQL Server中的Schema、dbo概念。

    参考阅读:

    Schema or dbo or Database?

    这是一个问题。也有很多人做了很多深入的讨论,关于这一点可以参考这篇文章,以及这篇文章后面的100个评论: Why Use Schemas?

    有几个观点吧:

    • 使用Schema的想法是”美好的”,但是实际的情况往往并不理想,甚至是还不如统一使用dbo。文章作者说,随着时间推移,他看到的实际情况是,使用了多个Schema之后,往往不同Schema中存储的内容并是逻辑上在一起的,而是由于各种历史原因,各个业务的数据表都会混杂在一起,这时候,由于修改应用的成本太高,大家也往往也不会去移动Schema下的表,去让他们在逻辑上更加合理。所以,基于此,作者并不赞同使用Schema,而是倾向于在需要的时候使用不同的Database去隔离逻辑上没什么关系的数据表。
    • 很多的第三方的应用,都是使用一个数据库、一个用户访问所有的数据表,因此Schema方式虽然很理想,但是现实世界并不常用。
    • 另一方观点是在于,在一个设计较好的数据库中,Schema可以很好的对不同的数据表进行分组,例如,用户相关的表,库存相关的表,店铺相关的表等。另外,在基于这样设计下,权限系统也会更加好管理。另外,否则可能会使用大量的前缀的方式(例如,user_开头代表用户,shop_开头代表店铺相关业务)来区分这些表,看起来并不整齐,整体的授权管理也会比较难一些。
    • 比较多人,认为虽然多Schema的设计,前期是比较理想的,但是随着业务和需求的变化,表的业务属性也会发生变化,按照多Schema设计来说,这时候是需要将表移动到合适的Schema下面,但是因为代码的SQL中都带有Schema,这就到这个”移动”的操作变得异常困难,所以也就会最终一定会破坏当初使用Schema的初衷。
    • 很多人认为,所有表放在dbo中,从业务角度来说,其实问题是最少的。
    • 有人提到,他这样使用schema,将所有的基础表都放在dbo中,但是某些特殊用户的表或者对象放在特定的schema中。例如,一些特定用途的视图、存储过程等。这样,更加便于权限管理。(个人注:这似乎是一种非常适合schema的场景)
    • (Mark Broadbent)提到,相比Oracle数据库的Schema,SQL Server权限系统设计更加面向的是Database,而不是Schema。用户通常都有多个Schema的访问权限。
    • Ben Thul提到,在大量存储过程的权限管理过程中,schema应该是非常有效的。这和前面的观点是有一定的相似的。Brent Ozar则认为,权限管理更多是通过用户角色组来管理,就可以了。Ben Thul也反驳到,当你已经有100个存储过程的时候,当写101个存储过程,如果没有schema,那么还是要单独管理这个存储过程的访问权限,这时候如果通过以schema为单位的权限管理,确实是高效的。
    • 有来曾经在MSFT PMs相关项目的员工(Clifford Dibble),回忆schema设计的初衷如下:
      • 在单个数据库中,提供一种命名空间隔离的方式
      • 在使用GRANT语句授权时,大大简化对一组对象进行授权管理
      • 微软公司内部”WinFS”团队需要该功能
      • 与ANSI/ISO SQL有更好的兼容性
      • SQL Server自己需要一个系统使用schema:sys
      • 让用户删除更加简单(有一些明确的客户需要)
      • 允许让角色组作为schema的owner
      • 允许多个用户都有某个特定的默认schema
    • vinod jain在2021年给出回答(是的,这个帖子是2010年发的,这个讨论延续了11年)有一定代表性,也是两种观点的一个中间形态:
      • 所有的核心表全部都放在dbo中
      • 其他的辅助功能表都独立放在不同的schema中,例如结构记录变更时用到的临时表和数据、导入导出时的中间表、用户日志表
  • 重要更新

    构建实时分析和搜索的数据库Rockset获得4400万美元融资,该产品致力于简化实时索引构建与使用:参考 参考

    最近,数据库学术会议VLDB在加拿大举行,阿里以及相关合作共有17篇论文入选。阿里云数据库负责人李飞飞受邀发表主旨演讲《Modernization of Databases in the Cloud Era: Building Databases that Run Like Legos》:参考

    阿里云PolarDB发布了1核1 GB入门规格,最低月价格约21元(计算11+存储10),如果只是需要一个测试MySQL的话,真的是没必要自己安装了,折腾一小时的成本也不止这个价格: 参考

    云数据库更新详情

    阿里云
    • PolarDB 推出1核1 GB入门规格,计算节点包月仅需11元/月: 参考
    • PolarDB 优化了冷数据归档到OSS的效率,修复了若干问题:参考
    • 托管MongoDB 新增存储类型ESSD AutoPL云盘:参考
    • 托管MongoDB 分片集群实例支持回收站功能:参考
    腾讯云
    • 云数据库支持 SQL Server 2022 Enterprise ,支持云盘版架构双节点、单节点:参考
    • 云数据库 SQL Server 云盘版架构单双节点支持修改系统字符集排序规则、支持修改系统时区:参考
    火山云
    • RDS SQL Server 支持将实例的私有网络 VPC 域名在公网环境下解析为私网 IP 地址:参考
    • RDS SQL Server 支持按时间点和备份集将数据恢复到已有实例:参考
    • RDS SQL Server 备份时间窗口的时间粒度由 6 小时改为 1 小时,方便您更加灵活地调整备份执行时间:参考
    AWS
    • RDS PostgreSQL 13/14版本支持了 PL/Rust: 参考
    • RDS MySQL/MariaDB写优化实例新增m6i/m6g实例支持: 参考
    • Aurora MySQL 支持使用Xtrabackup物理迁入数据:参考
    Azure
    • 托管 PostgreSQL支持了多个最新的小版本: 参考
    • 托管MySQL支持跨区域的恢复能力: 参考
    GCP
    • 发布 BigQuery Studio,向用户提供完整的数据分析体验: 参考
    • Cloud Spanner Studio 集成 Duet AI,帮助用户通过更高效使用Spanner:参考
  • 最近,Google Cloud SQL(Google云上的RDS)做了一次大的产品调整与发布:将原来的Cloud SQL分为了两个版本,分别为”Enterprise”和”Enterprise Plus”版本。本文概述了两个版本的异同,以帮助大家更好的了解Google Cloud SQL。

    关于”Enterprise”和”Enterprise Plus”版的Cloud SQL实例

    整体上:

    • Google Cloud SQL相当于AWS或阿里云平台的RDS,Cloud SQL for MySQL就相当于AWS RDS for MySQL
    • 这次调整之后,原来的Cloud SQL for MySQL/PostgreSQL全部变更为Enterprise版本,价格和产品本身没有什么改动,只是名称发生了变化
    • 新增的Enterprise Plus版本提供了更高的产品能力,例如通过硬件/软件优化提供的Data Cache能力,可以提升MySQL的读取和写入性能;Enterprise Plus还提供了更大的规格、更灵活的CPU/内存配比等能力
    • Enterprise Plus资源的价格比Enterprise版本贵约30%,Data Cache空间是额外计费的
    • 本质上,猜测,Enterprise Plus使用了更新更强的机型,具备非常强的本地存储能力(本地可能使用NVMe SSD或者其他存储设备),在数据库层则利用该能力使得用户获得更好的读与写的能力
    • 从产品发布节奏来看,今年GCP(Google云)增加了在Cloud SQL上的投入,这一点与阿里云现在应该是比较类似的。而在以前,在Google数据产品体系中,Spanner、AlloyDB或者BigTable才是投入最大的产品,而Cloud SQL似乎不受重视。现在大概发现,无论Spanner、AlloyDB架构多领先,最简单的Cloud SQL才一直都是更多用户的首选。
    • 这次更名调整,感觉是比较混乱的。对于Cloud SQL for MySQL来说,”Enterprise”和”Enterprise Plus”之间的区别还是比较明显,一个有Data Cache、另一个没有。但对于PostgreSQL来说,两者的区别更像是对资源多少的使用的一种简单限制(最大规格、cpu内存比、PITR的时间限制等)。另外,当前SQL Server又并不区分这两个类型。所以,整体给人感觉比较混乱。而像AWS Aurora新增一个I/O-Optimized选项的做法可能会更简单一点。GCP这种”化简为繁”做法,也许和业务的压力有一定的关系,更像是为了概念而做的产品决策,最终让用户对混乱的产品名称和定位买单,这种事情在大公司的企业级产品中,还是经常出现的。事情做不了什么突破,那么就在产品名称上做一些突破吧(这是一段不负责任的“臆断”,谨慎参考)。
    (more…)
  • 重要更新

    据悉,OceanBase可能会从蚂蚁集团剥离出来,同时厘清和海外投资者的关系,以更好支持国内的核心行业的核心系统:参考 参考

    中国数据库技术大会在北京举行,错过的朋友可以参考如下内容做个回顾:

    更新详情

    阿里云
    • PolarDB优化了”存储包”抵扣项,包含了包括备份、冷存储等项目的计费:参考
    • PolarDB 分布式版日志节点新增flush logs命令、优化了CDC多项功能、AUTO模式新增default_single选项
    腾讯云
    • 云数据库 MySQL 优化实例详情页面,支持查看实例健康状态、异常告警,增加实例在可用性、性能与安全方面的配置展示:参考
    • TDSQL-C Serverless 集群支持挂载只读实例,支持单独配置只读实例算力区间,支持只读实例自动启停,提升读取性能和并发度,减轻主实例的负载压力:参考
    火山云
    • 数据库工作台 DBW 慢日志分析功能支持查看云数据库 veDB MySQL 版实例的慢日志趋势、统计和明细。同时,可按需下载慢日志分析结果:参考
    AWS
    • RDS for MariaDB 现在支持 MariaDB 10.11,事务吞吐量提高了 40%: 参考
    • Amazon Aurora 全球数据库推出全局数据库故障转移(Failover): 参考
    GCP
    • Cloud Spanner 新增支持德国柏林 (europe-west10) 地区: 参考
    • Cloud SQL for PostgreSQL 新增支持德国柏林 (europe-west10) 地区
    • Cloud SQL for MySQL、PostgreSQL支持了Private Service Connect: 参考
    • Spanner Studio 增强了查询编辑器功能,完全支持 SQL、DML 和 DDL 操作
    • Cloud SQL for MySQL 现在支持版本 8.0.34
  • 重点更新

    腾讯云在DTCC大会宣布TDSQL-C推出全球首个可释放存储架构的Serverless服务:参考。TDSQL-C是腾讯云的云原生数据库,最初叫”CynosDB”,后统一更名为TDSQL-C,本次发布的能力,可在一定条件下将数据进行归档,进一步降低实例成本。更多DTCC主论坛信息可以参考:链接

    清华大学发布论文《LLM As DBA》,尝试使用大模型技术完成部分DBA工作中的挑战,包括数据库诊断、优化等工作:参考 参考

    MindsDB 获得Nvidia旗下基金NVenture 500万美元投资,自此该公司今年总计获得 4650 万美元融资:参考。该公司致力于通过AI技术简化数据库中的数据的价值发现。

    近期会议很多,除了当前正在如火如荼的DTCC之外,还有:

    • Doris Summit 2023 正式开启议题/伙伴征集,大会计划10 月 21 日于北京举办,感兴趣的可以联系报名参加:参考
    • ACDU 中国行-杭州站:数据库技术解密及应用实践 8月19日:参考
    • Oracle CloudWorld 将于9月18日于Las Vegas举行:参考

    更新详情

    阿里云
    • RDS SQL Server Web版推出独享入门规格,相较于常规独享规格,该规格性能略有所降低,但价格更加优惠:参考
    火山云
    • RDS MySQL开放更多 Open API接口:参考
    • RDS MySQL “高可用”实例类型更名为”双节点”类型,双节点类型为一主一备经典架构、可添加多个只读节点。参考
    • veDB MySQL 新增标签管理功能:参考
    • veDB MySQL 支持在顶部导航栏选择项目:参考
    AWS
    • RDS Custom for Oracle 现在支持 R5b 、 X2iedn、R6i、M6i 和 T3规格 实例: 参考
    • RDS Performance Insights 提供按需分析体验: 参考
    • RDS 支持 PostgreSQL 16 Beta 3版本: 参考
    Azure
    • Azure Active Directory 与 Azure Cosmos DB for PostgreSQL 集成: 参考
    • Azure Redis 提供 99% 延迟指标: 参考
    • 托管 PostgreSQL 支持存储自动扩展: 参考
    • Cosmos DB for PostgreSQL支持Terraform编排: 参考
    GCP
    • 托管MySQL、PostgreSQL (Enterprise Plus 版)现在支持 asia-northeast3(首尔)区域
  • 重要更新

    阿里云RDS发布”最”便宜MySQL实例(1c1g,基础版,20g存储),10元/月,算上20g存储,包年约183元。你还需要自己折腾自建MySQL吗?此类规格不适合生产环境,但是对于开发者个人使用还是非常方便的:参考

    火山云RDS MySQL发布多项企业级能力,包括高权限账号、SQL限流、类似创建、批量管理(包括重启、续费、参数修改、配置变更等),以更好的支持复杂环境下的云数据库使用体验。RDS PostgreSQL也新增多个功能插件,包括pg_vector、pg_roaringbitmap、pg_stat_kcache、pg_decoderbufs等:参考 参考

    本周由OSCHINA组织了一次直播探讨:《MySQL vs. PostgreSQL,谁是世界第一?》,错过的可以通过该链接观看回放(需要移动端打开):参考

    下周,DTCC 2023将在北京举行,应该是中国数据库最有影响力的行业会议了,感兴趣的可以去参加:参考

    更新详情

    阿里云
    • RDS MySQL基础版新增1核 1GB和1核 2GB经济版规格。以ESSD PL0云盘存储空间20GB为例,RDS实例包月价格分别仅18元和24元:参考
    • RDS 优化了参数诊断,提供静态参数诊断结果和7天内的参数修改历史:参考
    • RDS PostgreSQL优化了备份页面部分名称:参考
    腾讯云
    • TDSQL-C MySQL、云数据库 MySQL等优化数据库审计日志页面与功能:参考
    • 支持物理复制快速迁移至云数据库 PostgreSQL:参考
    • 云数据库 SQL Server 双节点云盘版新增多地域支持:东京(一区、二区)、曼谷(一区、二区)、雅加达(一区、二区)。
    • 云数据库 SQL Server 接入移动端(腾讯云助手),可提供实时监控、远程管理、重启、续费等功能:参考
    火山云
    • RDS MySQL 支持基于已有实例创建相同规格实例:参考
    • RDS MySQL 支持批量管理功能:重启、续费、修改参数、变更实例配置等:参考
    • RDS MySQL 支持创建名为 root/admin 的高权限账号,更符合操作习惯:参考
    • RDS MySQL 支持 SQL 限流功能,支持对数据库的请求访问量和 SQL 并发量进行控制。参考
    • RDS PostgreSQL 提供高效的位图存储和运算能力(参见pg_roaringbitmap)。参考
    • RDS PostgreSQL 提供对高维度向量进行高效的相似度搜索能力(插件pg_vector)。参考
    • RDS PostgreSQL 提供在运行过程中对文件系统读写信息进行统计的能力(插件pg_stat_kcache)。参考
    • RDS PostgreSQL 提供以 protocol buffer 格式进行逻辑解析的能力(插件pg_decoderbufs)。参考
    • RDS PostgreSQL 新增 2C16G、4C32G 和 8C64G 的产品规格。参考
    • RDS PostgreSQL 支持多可用区部署,提供跨可用区容灾能力。参考
    AWS
    • RDS MySQL 支持新的小版本 5.7.43 和 8.0.34: 参考
    • ElastiCache for Redis 增加了对在集群模式下运行的集群在线迁移的支持: 参考
    • Timestream 发布开源 ODBC 驱动程序: 参考
    • 简化了 RDS 或 Aurora 数据库与 AWS Lambda 之间的连接: 参考
    • Aurora 支持自动备份已删除的集群 参考
    Azure
    • 托管 MySQL 支持 IOPS的自动弹性扩展: 参考
    • 托管数据库支持了PostgreSQL 15: 参考
    GCP
    • Cloud Spanner 数据库删除保护GA:参考
    • 托管 MySQL支持多种类别的 API 速率配额:参考