记录一下单条和批量写入到MongoDB和PostgreSQL方法

最近一段时间做数据迁移从MongoDB里面迁移到Pg里面,之前的一个方案是实现双写操作,在灰度阶段和一些特定场景下面的需要双写,避免数据的遗漏。记录一下的主要是因为记录一下在对于nosql的mongo的情况下,很多时候需要对类型进行强制的转换。不然会造成字段类型不一致,后面查询的时候,漏数据的情况。 <?php class HistoryBuilder extends HistoryBuilder { ....
  •   
  • 317
  • mysql
  • 0
  • dodobook
  • 2018/09/14
mongodb_pg_compare

关于最近使用的MongoDB和PostgreSQL的一些比较和看法

先从个人角度来吐槽一下吧。因为这两个数据库我都不是深度用户,且学艺不精,也只能看一下表面现象了,发表一下自己的拙见了。 1.公司项目的不断壮大,技术总监决定阶段性的把一些MongoDB里面的数据迁移到Pg里面。 (Leader的眼光是不会错的,至少是很深刻的结合了现有的业务场景) 2.在做数据迁移的时候,发现MongoDB里面没结构的坏处太多了,每一个字段都要各种校验 is....
  •   
  • 508
  • mysql
  • 0
  • dodobook
  • 2018/09/14

PostgreSQL学习手册之–数据库维护

PostgreSQL学习手册之--数据库维护 一、恢复磁盘空间: 在PostgreSQL中,使用delete和update语句删除或更新的数据行并没有被实际删除,而只是在旧版本数据行的物理地址上将该行的状态置为已删除或已过期。因此当数据表中的数据变化极为频繁时,那么在一段时间之后该表所占用的空间将会变得很大,然而数据量却可能变化不大。要解决该问题,需要定期对数据变化频繁的数据表执....
  •   
  • 268
  • mysql
  • 0
  • dodobook
  • 2018/08/07

PostgreSQL学习手册之–数据库管理

PostgreSQL学习手册之--数据库管理 一、概述: 数据库可以被看成是SQL对象(数据库对象)的命名集合, 通常而言,每个数据库对象(表、函数等)只属于一个数据库。 不过对于部分系统表而言,如pg_database,是属于整个集群的。 更准确地说,数据库是模式的集合,而模式包含表、函数等SQL对象。 因此完整的对象层次应该是这样的:服务器、数据库、模式、表或其他类型的对....
  •   
  • 277
  • mysql
  • 0
  • dodobook
  • 2018/08/07

PostgreSQL学习手册之–角色和权限

PostgreSQL是通过角色来管理数据库访问权限的,我们可以将一个角色看成是一个数据库用户,或者一组数据库用户。角色可以拥有数据库对象,如表、索引,也可以把这些对象上的权限赋予其它角色,以控制哪些用户对哪些对象拥有哪些权限。 一、数据库角色: 1. 创建角色: CREATE ROLE role_name; 2. 删除角色: DROP ROLE role_name; 3. 查询角色: 检查系统表pg_ro....
  •   
  • 281
  • mysql
  • 0
  • dodobook
  • 2018/08/07

PostgreSQL学习手册之–服务器配置

PostgreSQL学习手册之--服务器配置 一、服务器进程的启动和关闭: 下面是pg_ctl命令的使用方法和常用选项,需要指出的是, 该命令是postgres命令的封装体,因此在使用上比直接使用postgres更加方便。 pg_ctl init[db] [-D DATADIR] [-s] [-o "OPTIONS"] pg_ctl start [-w] [-t SECS] [-D DATADIR] [-s] [-l FILENAME] [-o "OPTIONS"] pg_c....
  •   
  • 259
  • mysql
  • 0
  • dodobook
  • 2018/08/07

PostgreSQL学习手册之–性能提升技巧

PostgreSQL学习手册之--性能提升技巧 一、使用EXPLAIN: PostgreSQL为每个查询都生成一个查询规划,因为选择正确的查询路径对性能的影响是极为关键的。 PostgreSQL本身已经包含了一个规划器用于寻找最优规划,我们可以通过使用EXPLAIN命令来查看规划器为每个查询生成的查询规划。 PostgreSQL中生成的查询规划是由1到n个规划节点构成的规划树,其中最底层的节点为表....
  •   
  • 269
  • mysql
  • 0
  • dodobook
  • 2018/08/07

PostgreSQL学习手册之–事物隔离

PostgreSQL学习手册之--事物隔离 在SQL的标准中事物隔离级别分为以下四种: 1. 读未提交(Read uncommitted) 2. 读已提交(Read committed) 3. 可重复读(Repeatable read) 4. 可串行化(Serializable) 然而PostgreSQL在9.1之前的版本中只是实现了其中两种,即读已提交和可串行化, 如果在实际应用中选择了另外两种,那么PostgreSQL将会自动向更严格的隔离级别调整。 在....
  •   
  • 206
  • mysql
  • 0
  • dodobook
  • 2018/08/07

PostgreSQL学习手册之–索引Index

PostgreSQL学习手册之--索引Index 一、索引的类型: PostgreSQL提供了多种索引类型:B-Tree、Hash、GiST和GIN, 由于它们使用了不同的算法,因此每种索引类型都有其适合的查询类型, 缺省时,CREATE INDEX命令将创建B-Tree索引。 1. B-Tree: CREATE TABLE test1 ( id integer, content varchar ); CREATE INDEX test1_id_index ON test1 (id); B-Tree索....
  •   
  • 279
  • mysql
  • 0
  • dodobook
  • 2018/08/07

PostgreSQL学习手册之–表的继承和分区

PostgreSQL学习手册之--表的继承和分区 一、表的继承: 这个概念对于很多已经熟悉其他数据库编程的开发人员而言会多少有些陌生, 然而它的实现方式和设计原理却是简单易懂,现在就让我们从一个简单的例子开始吧。 1. 第一个继承表: CREATE TABLE cities ( --父表 name text, population float, altitude int ); CREATE TABLE capitals ( --子....
  •   
  • 240
  • mysql
  • 0
  • dodobook
  • 2018/08/07

PostgreSQL学习手册之–模式Schema

PostgreSQL学习手册之--模式Schema 一个数据库包含一个或多个命名的模式,模式又包含表。 模式还包含其它命名的对象,包括数据类型、函数,以及操作符。 同一个对象名可以在不同的模式里使用而不会导致冲突; 比如,schema1和myschema都可以包含叫做mytable的表。 和数据库不同,模式不是严格分离的:一个用户可以访问他所连接的数据库中的任意模式中的对象,只要他有权限....
  •   
  • 175
  • mysql
  • 0
  • dodobook
  • 2018/08/07

PostgreSQL学习手册之–数据表

PostgreSQL学习手册之--数据表 一、表的定义: 对于任何一种关系型数据库而言,表都是数据存储的最核心、最基础的对象单元。 现在就让我们从这里起步吧。 1. 创建表: CREATE TABLE products ( product_no integer, name text, price numeric ); 2. 删除表: DROP TABLE products; 3. 创建带有缺省值的表: CREATE TABLE products ( product_no in....
  •   
  • 140
  • mysql
  • 0
  • dodobook
  • 2018/08/07

PostgreSQL学习之—函数和操作符#三#

PostgreSQL学习之---函数和操作符 九、序列操作函数: 序列对象(也叫序列生成器)都是用CREATE SEQUENCE创建的特殊的单行表。 一个序列对象通常用于为行或者表生成唯一的标识符。 下面序列函数,为我们从序列对象中获取最新的序列值提供了简单和并发读取安全的方法。 函数 返回类型 描述 nextval(regclass) bigint 递增序列对象到它的下一个数值并且返回该值。这个....
  •   
  • 129
  • mysql
  • 0
  • dodobook
  • 2018/08/07

PostgreSQL学习之—函数和操作符#二#

PostgreSQL学习之---函数和操作符 六、模式匹配: PostgreSQL中提供了三种实现模式匹配的方法: SQL LIKE操作符,更近一些的SIMILAR TO操作符,和POSIX-风格正则表达式。 1. LIKE: string LIKE pattern [ ESCAPE escape-character ] string NOT LIKE pattern [ ESCAPE escape-character ] 每个pattern定义一个字串的集合。如果该string包含在pattern代表的字串集....
  •   
  • 194
  • mysql
  • 0
  • dodobook
  • 2018/08/07

PostgreSQL学习之—函数和操作符#一#

PostgreSQL学习之---函数和操作符 一、逻辑操作符: 常用的逻辑操作符有:AND、OR和NOT。其语义与其它编程语言中的逻辑操作符完全相同。 二、比较操作符: 下面是PostgreSQL中提供的比较操作符列表: 操作符 描述 < 小于 > 大于 <= 小于或等于 >= 大于或等于 = 等于 != 不等于 比较操作符可以用于所有可以比较的数据类型。所有比较操作符都是双....
  •   
  • 154
  • mysql
  • 0
  • dodobook
  • 2018/08/07

PostgreSQL学习之–常用数据类型

PostgreSQL学习之--常用数据类型 一、数值类型: 下面是PostgreSQL所支持的数值类型的列表和简单说明: 名字 存储空间 描述 范围 smallint 2 字节 小范围整数 -32768 到 +32767 integer 4 字节 常用的整数 -2147483648 到 +2147483647 bigint 8 字节 大范围的整数 -9223372036854775808 到 9223372036854775807 decimal 变长 用户声明精度,精确 无限制 numeric 变....
  •   
  • 119
  • mysql
  • 0
  • dodobook
  • 2018/08/07

MySQL5.7以上版本支持JSON查询示例

最近在用到MySQL5.7版本的json的查询,感觉到MySQL越来越强大了。 使用到的场景是查询错误日志。我们会把错误日志的cookie数组信息组装成json_encode的形式存储成一个字段,存储到mysql中。 直接看示例代码吧: #查看MySQL的版本信息 SELECT VERSION(); #查询where字段--注意(虽然clientId为整形,但是json里面请用字符串包装起来) SELECT * FROM tbl_error_log....
  •   
  • 239
  • mysql
  • 0
  • dodobook
  • 2018/08/06

MySQL日志文件之查询日志和慢查询日志详解

今早被一个开发妹纸鄙视了,说我们之前的项目里面很多查询直接裸奔(没用到索引或没建索引).其实被人质疑也是一件很正常的事情,人非圣贤孰能无过,但是我们是搬砖工,为了大厦的健康,必须要事无巨细,审查到底。 虽然有些自负,但是先承认着错误,毕竟是自己的孩子,自己亲手建造的工程。接下来开始在测试环境对MySQL的所有语句进行一次大排查(虽然看上去有点治标不治本....
  •   
  • 260
  • mysql
  • 0
  • dodobook
  • 2018/07/16

MySQL之——CentOS下my.cnf 配置 日志类型及文件配置详解

mysql有以下几种日志: 错误日志: log-err 查询日志: log 慢查询日志: log-slow-queries 更新日志: log-update 二进制日志: log-bin # 以下选项会被MySQL客户端应用读取。 # 注意只有MySQL附带的客户端应用程序保证可以读取这段内容。 # 如果你想你自己的MySQL应用程序获取这些值。 # 需要在MySQL客户端库初始化的时候指定这些选项。 # [client] #....
  •   
  • 227
  • mysql
  • 0
  • dodobook
  • 2018/07/13

MySQL数据库mysqldiff实现两个数据库差异对比

在团队项目的开发之中。常常会存在多个环境或者版本并行开发。例如本地的test环境,演示环境的dev环境,已经正式环境。代码的管理可以使用git、svn 或者发布系统walle等。 但是MySQL的管理就有些难以应付,对于大多数的规范化的团队,对数据库的每一次表结构的操作都需要记录。这样升级程序的时候直接执行变更的SQL语句即可。但是有时候也会出现记录不完整或者遗漏等造成本....
  •   
  • 2485
  • mysql
  • 0
  • dodobook
  • 2017/08/30