5 范桂飓

尚未进行身份认证

我要认证

若抽象才是美之定义,追求明确性的我们是否象征着丑陋。

等级
TA的排名 349

PostgreSQL — Prepared Statement 预编译

目录文章目录目录PREPARE 指令EXECUTE 指令DEALLOCATE 指令EXPLAIN 指令ANALYZE 指令ERROR,0A000,"cached plan must not change result type"模拟异常解决方法参考文档PREPARE 指令PostgreSQL 的 PREPARE 指令用于创建一个预备(Prepare)语句,本质是一段待执行的、且进行了预编译的 SQL 语句,所以也称之为 “预编译语句”。在 RDBMS 中,预备语句常被用于优化性能。当我们需要在一个

2020-10-11 22:14:50

Go 语言编程 — gormigrate GORM 的数据库迁移助手

目录文章目录目录前言gormigrate核心结构体实现分析版本定义InitSchemaMigration版本记录(历史)版本升级和回退前言GORM v2gormigrate v2程序 Demo:https://github.com/JmilkFan/gormigrate-demogormigrateGORM 本身提供了 AutoMigrate 功能以及 Migrator 提供的 DDL 接口,但 GORM 更加专注于 ORM 层面,所以在 ORM Schema Version Contro

2020-10-11 07:56:22

关系型数据库的约束类型

目录文章目录目录前言约束非空约束唯一约束主键约束外键约束Check 约束默认约束索引约束参考文档前言我们不应该只把数据库系统看作是保存数据的黑盒子,而要将其看成验证和防止数据腐化的工具。约束非空约束如果业务规则要求该属性应该始终存在,那么要毫不犹豫地将其设置为 Not Null。适合设置为 Not Null 的字段有 Id、Name、AddedDate、IsActive、State、CategoryId(如果所有项都应该有一个类别)、ItemCount、Price 以及许多其他字段。通常,这些

2020-10-09 21:32:35

Go 语言编程 — gorm 数据库版本迁移

目录文章目录目录AutoMigrate示例Migrator 接口(DDL 操作方法)表操作列操作约束操作索引操作数据库版本控制参考文档AutoMigrateGORM 的 AutoMigrate() 方法用于自动迁移 ORM 的 Schemas。所谓 “迁移” 就是刷新数据库中的表格定义,使其保持最新(只增不减)。AutoMigrate 会创建(新的)表、缺少的外键、约束、列和索引,并且会更改现有列的类型(如果其大小、精度、是否为空可更改的话)。但不会删除未使用的列,以保护现存的数据。// 初始化一

2020-10-08 21:51:27

关系型数据的迁移与版本控制

目录文章目录目录什么是 DDL?为什么需要 DDL 版本控制?常见的 DDL 版本控制软件AlembicGORM什么是 DDL?DDL(数据定义语言):用来创建数据库中的各种对象,例如:表、视图、索引、同义词、聚簇等,对应的指令为:CREATE TABLE、VIEW、INDEX、SYN、CLUSTER 等。注意,DDL 操作是隐性提交的,不能 Rollback。为什么需要 DDL 版本控制?数据库应用软件的版本迭代过程中难免需要修改 ORM 的数据模型(Data Model)即 DLL,例如:添加

2020-10-08 20:02:18

Go 语言编程 — gorm 的数据完整性约束

目录文章目录目录实体完整性(主键约束)用户定义完整性(非空约束、唯一约束、检查约束和默认值)参照完整性(外键约束)关联关系一对一、一对多关联多对多关联实体完整性(主键约束)每个关系(表)至少存在一个主键(Primary Key),主键值必须唯一,且不允许为 NULL。type Product struct { gorm.Model Code string `gorm:"primary_key"` Price uint ...}grom.Model 是 GORM 内

2020-10-08 11:35:48

MySQL — 索引的慢查询优化与 B+ 树

目录文章目录目录索引目的索引原理B+ 树MySQL 中的 B+ 树B+ 树的查找过程B+ 树性质慢查询优化建索引的几大原则参考文章索引目的索引的目的在于提高查询效率。类比红宝字典,如果要查 mysql 这个单词,我们首先定位到 m 字母,然后往下找到 y 字母,再找到剩下的 sql 字母。如果没有索引,那么你可能需要把所有单词看一遍才能找到你想要的。除了词典,生活中随处可见索引的例子,如:火车站的车次表、图书的目录等。索引原理它们的原理都是一样的,通过不断的缩小想要获得数据的范围来筛选出最终想要

2020-10-08 10:12:14

PostgreSQL — 外键关联操作

目录文章目录目录PostgreSQL 的外键关联创建表时定义外键(References,参照)修改原有表的外键约束删除外键约束参考文档PostgreSQL 的外键关联一个外键约束指定一列(或一组列)中的值必须匹配出现在另一个表中某些行的值。我们说这维持了两个关联表之间的引用完整性。注意,一个从表外键所引用的主表 Column 必须是一个主键或者是被唯一约束所限制的。这意味着主表被引用的列总是拥有一个索引(位于主键或唯一约束之下的索引),因此在其上进行的一个引用行是否匹配的检查将会很高效。创建表时定义

2020-10-07 23:49:31

MySQL — 外键关联操作

目录文章目录目录MySQL 的外键约束创建表时定义外键(References,参照)修改原有表的外键约束删除外键约束on delete/update 的联动操作类型CASCADE(级联)约束方式SET NULL(设空)约束方式以 NO ACTION(不采取行动)或 RESTRICT(禁止)方式参考文档MySQL 的外键约束注:MySQL 的 InnoDB 表引擎才支持外键关联,MyISAM 不支持。创建表时定义外键(References,参照)在 CREATE TABLE 语句中,通过 FOREI

2020-10-07 22:02:31

关系型数据库的外键约束与关联

目录文章目录目录外键的作用外键的性能问题是否使用外键?外键的作用外键用于支持关系型数据库的 “参照完整性”,外键具有保持数据完整性和一致性的机制,对业务处理有着很好的校验作用。举例说明:假设 Table user 的 Column user.id 为主键(Primary key),Table profile 的 Column profile.uid 为主键。以 user 为主表、profile 为关联表、profile.uid 为外键(Foreign key)并将 user.id 作为参考(R

2020-10-07 18:22:57

PostgreSQL — 基于 Recovery 流复制的数据备份

目录文章目录目录Recovery 流复制主库上操作备库上操作功能测试相关配置参数归档恢复恢复目标备份服务器PostgreSQL 12 的 Recoverypg_basebackup 命令差异Recovery 流复制早在 PostgreSQL 9.1 推出的 pg_basebackup 工具,用来搭建流复制的备库。主备环境:PG SQL 版本:9.3主库 IP: 192.168.1.36备库 IP: 192.168.1.35主库上操作创建复制用户。CREATE USER repus

2020-10-05 18:38:40

PostgreSQL — 数据库实例只读锁定

目录文章目录目录PostgreSQL 数据库实例只读锁定硬锁定硬解锁软锁定软解锁PostgreSQL 数据库实例只读锁定在一些场景中,可能要将数据库设置为只读模式。例如:需要对数据库进行迁移,准备割接时,首先要将主库切换到只读(锁定),确保绝对不会有新的事务写入,导致数据不一致的情况。PostgreSQL 提供了 2 种只读锁定的方法:硬锁定:直接将数据库切换到恢复模式(Recovery Mode),不允许写操作。软锁定:设置 system config default_transaction

2020-10-05 17:49:28

互联网协议 — gRPC 谷歌远程过程调用

目录文章目录目录gRPCgRPC vs. RESTgRPC 的使用场景gRPC 的核心概念服务定义gRPCA high-performance, open-source universal RPC framework.gRPC 是一个高性能、开源和通用的 RPC 框架,采用 C/S 架构,面向移动和 HTTP/2 设计。目前提供 C、Java 和 Go 语言版本,分别是:grpc、grpc-java 和 grpc-go。gRPC 基于 HTTP/2 协议设计,带来诸如双向流、流控、头部压缩、单

2020-10-04 21:55:43

etcd — 操作手册

目录文章目录目录与 etcd 交互API 交互获取 etcd Server 的版本信息Put and get keysWatch keysTransactionsAuthentication与 etcd 交互etcd v3 API 使用 gRPC 协议。etcd 项目包括了一个基于 gRPC 的 Golang Client SDK 和一个指令行工具 etcdctl,用于通过 gRPC 协议与 etcd Cluster 进行通信。对于不支持 gRPC 的编程语言,etcd 还提供了一个 JSON gRP

2020-10-04 19:26:14

etcd — 安装部署

目录文章目录目录服务进程单点部署集群部署服务进程etcd 目前默认使用 2379 端口提供 HTTP API 服务,2380 端口提供 Peer 通信(这两个端口已经被 IANA 官方预留给 etcd),在之前的版本中,可能会分别使用 4001 和 7001,在使用的过程中需要注意这个区别。虽然 etcd 也支持单点部署,但是在生产环境中推荐集群方式部署,一般 etcd 节点数会选择 3、5、7。etcd 会保证所有的节点都会保存数据,并保证数据的一致性和正确性。单点部署因为 etcd 是 Go

2020-10-04 07:47:59

etcd — 架构原理

目录文章目录目录etcd 的核心术语etcd 的软件架构etcd 实现原理如何保证数据一致性?客户端从集群中的哪个节点读写数据?如何选举 Leader 节点?如何判断写入是否成功?如何确定 etcd Cluster 的节点数?etcd 的核心术语Raft:etcd 所采用的保证分布式系统数据强一致性的算法。Node:一个 Raft 状态机实例。Member:一个 etcd 实例,它管理着一个 Node,并且可以为客户端请求提供服务。Cluster:由多个 Member 构成可以协同工作的 et

2020-10-03 20:53:03

etcd — Overview

目录文章目录目录etcdetcd vs ZooKeeperetcd 的应用场景服务发现(Service Discovery)微服务架构中的服务动态添加PaaS 平台中的实例故障重启透明化消息发布与订阅分布式系统的通知与协调分布式锁分布式队列集群监控多节点的 Leader 竞选负载均衡etcdetcd 是 CoreOS 团队于 2013 年 6 月发起的使用 Golang 开发的开源项目,基于 Raft 强一致性算法,它的目标是构建一个高可用,且数据强一致性的分布式键值(key/value)数据库,专注

2020-10-03 00:28:37

Docker 容器技术 — 容器存储

目录文章目录目录容器存储数据卷管理挂载时创建卷创建卷后挂载数据容器管理容器存储数据卷管理核心选项:-v 宿主机目录:指定挂载到容器内的目录。映射多个宿主机目录,只需要多写几个 -v 即可。挂载时创建卷挂载卷:docker run -d -p 80:80 -v /data:/usr/share/nginx/html nginx:latest设置共享卷,使用同一个卷启动一个新的容器:docker run -d -p 8080:80 -v /data:/usr/share/ng

2020-10-02 10:40:46

Docker 容器技术 — 容器网络

目录文章目录目录容器网络容器网络类型bridge 模式host 模式Container 模式none 模式容器端口映射容器跨主机通信容器网络容器网络类型Docker 提供几种类型的网络,它决定容器之间、容器与外界之前的通信方式。查看网络:$ docker network lsNETWORK ID NAME DRIVER SCOPE1cebe6628a06 bridge br

2020-10-02 10:39:47

Linux 操作系统原理 — Namespace 资源隔离

目录文章目录目录Linux NamespaceLinux Namespace 的类型Linux NamespaceLinux Namespace(命名空间)是一种操作系统层级的资源隔离技术,能够将 Linux 的全局资源,划分为 namespace 范围内的资源,而且不同 namespace 间的资源彼此透明,不同 namespace 里的进程无法感知到其它 namespace 里面的进程和资源。Linux namespace 实现了 6 项资源隔离,基本上涵盖了一个小型操作系统的运行要素,包括主机

2020-10-01 22:45:45

查看更多

CSDN身份
  • 博客专家
勋章 我的勋章
  • 领英
    领英
    绑定领英第三方账户获取
  • 技术圈认证(专家版)
    技术圈认证(专家版)
    博客专家完成年度认证,即可获得
  • 阅读者勋章Lv3
    阅读者勋章Lv3
    授予在CSDN APP累计阅读博文达到30天的你,是你的坚持与努力,使你超越了昨天的自己。
  • 专栏达人
    专栏达人
    授予成功创建个人博客专栏的用户。专栏中添加五篇以上博文即可点亮!撰写博客专栏浓缩技术精华,专栏达人就是你!
  • 持之以恒
    持之以恒
    授予每个自然月内发布4篇或4篇以上原创或翻译IT博文的用户。不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!
  • 博客之星
    博客之星
    授予通过"CSDN博客之星评选"中脱颖而出的十大博客之星称号的用户。
  • 勤写标兵Lv4
    勤写标兵Lv4
    授予每个自然周发布9篇以上(包括9篇)原创IT博文的用户。本勋章将于次周周三上午根据用户上周的博文发布情况由系统自动颁发。
  • 学习力
    学习力
    《原力计划【第二季】》第一期主题勋章 ,第一期活动已经结束啦,小伙伴们可以去参加第二期打卡挑战活动获取更多勋章哦。
  • 博客之星-入围
    博客之星-入围
    授予每年博客之星评选结果第21-200名的用户
  • 分享小兵
    分享小兵
    成功上传3个资源即可获取