关于MongoDB schema-free vs MySQL DDL

文档数据库(Document-orient Database)支持Schema-Free,他的一行记录格式为:{"name": "外观设计", "value": "直板"}},实际上是使用KEY/VALUE存储的mongo采用的是BSON二进制编码,因此空间上来说应该会比JSON省一些的,解析的时候按照JSON解析。每一个Document都包含了元数据信息,每个文档之间不强迫要求使用相同的格式,同时呢他们也支持各种索引,在方便程度是完胜比MySQL。关于Mysql 表设计和Mongodb scheme free 设计的对比,可以参考下:http://blog.nosqlfan.com/html/2985.html然而由于元数据的大量冗余,空间上的浪费很严重。

对于MySQL这种典型的关系型数据库,DDL对io的冲击是不容忽视的,这往往是由数据存储格式造成的。

Innodb 存储引擎是已经针对二级索引的修改作出了努力,即在ddl 过程中可以不拷贝数据,但是这个期间还是会锁住表的。对于ONLINE schema  change  OSC的使用,这个倒是挺方便。

一般的做法是现在备库上做DDL操作,然后在主从切换,等全部操作完成后在恢复原样。

在于关系型存储引擎将元数据和数据分开存储,对元数据的某些修改需要修改所有的数据。避免这个问题的一种做法是把元数据和数据放在一起,也就是NoSQL领域流行的Schema-free。

本栏目更多精彩内容:http://www.bianceng.cn/database/MySQL/

时间: 2024-11-10 07:49:34

关于MongoDB schema-free vs MySQL DDL的相关文章

MongoDB Schema Design

http://www.blogjava.net/czihong/archive/2012/02/18/370250.html, Schema Design for MongoDB http://docs.mongodb.org/manual/core/data-modeling/, Data Modeling Considerations for MongoDB Applications   http://www.slideshare.net/kbanker/mongodb-schema-des

datax转换mongodb的数据到mysql遇到一个问题

问题描述 datax转换mongodb的数据到mysql遇到一个问题 公司新项目需要从旧的mongodb库了把数据导入到新的mysql库.在用淘宝的datax工具导入数据的时候遇到以下的问题 mongodb的是数据很多都是一个document里不是所有字段都的值都有. 例如:user = [{"name":"张三","id":"0000001″}, {"age":12,"id":"000

网易这样用sys schema优雅提升MySQL易用性

本文详细地介绍了MySQL 5.7新引入的sys schema.首先,本文概要地介绍了sys schema的作用和定位:其次,分别介绍了sys schema中的视图.函数和存储过程:接下来,通过两个例子来演示sys schema的用法,便于大家理解sys schema带来的实实在在的好处:最后讨论了sys schema还可以增加的内容.   1sys schema的介绍   sys schema是MySQL 5.7.7中引入的一个系统库,包含了一系列视图.函数和存储过程, 该项目专注于MySQL

MySQL · 捉虫动态 · MySQL DDL BUG

背景 MySQL保存了两份元数据,一份在server层,保存在FRM文件中,另外一份在引擎层,比如InnoDB的数据字典中,这样也就造成了DDL语句经常导致元数据不一致的情况,下面介绍两个近期出现的因为DDL产生的bug. rename 外键引用的column BUG复现过程 CREATE TABLE t1 (a INT NOT NULL, b INT NOT NULL, INDEX idx(a)) ENGINE=InnoDB; CREATE TABLE t2 (a INT KEY, b INT

munin 监控 mongodb/redis/php-fpm/nginx/mysql

munin 监控 mongodb 1,下载munin的mongodb插件 https://github.com/erh/mongo-munin 2,安装munin mongodb的依赖     # yum install pymongo  这个插件是python写的,如果不装的话,会报以下错误: # munin-run mongo_mem Traceback (most recent call last): File "/etc/munin/plugins/mongo_mem", li

MongoDB、CouchDB、MySQL之间的差异

MongoDB是一个可扩展.高性能.开源的NoSQL数据库,是用C++语言编写的. MongoDB的特点 面向文档 文档(对象)将很好地映射到编程语言数据类型 嵌入式文件和阵列减少需要联接 动态键入(无模式)易于架构演变 没有联接高性能和无易于扩展的多文档交易 高性能 没有连接和嵌入使读取和写入速度快 包括从嵌入的文档和数组的键的索引的索引 可选流写入 (没有确认) 索引包括从嵌入的文档和数组的键的索引 可选的流写入(未确认) 高可用性 自动主故障转移的复制服务器 易于扩展 自动分片(跨服务器数

MySQL和MongoDB设计实例对比

MySQL是关系型数据库中的明星,MongoDB是文档型数据库中的翘楚.下面通过一个设计实例对比一下二者:假设我们正在维护一个手机产品库,里面除了包含手机的名称,品牌等基本信息,还包含了待机时间,外观设计等参数信息,应该如何存取数据呢? 如果使用MySQL的话,应该如何存取数据呢? 如果使用MySQL话,手机的基本信息单独是一个表,另外由于不同手机的参数信息差异很大,所以还需要一个参数表来单独保存. CREATE TABLE IF NOT EXISTS `mobiles` (     `id` 

RDS MySql支持online ddl

在日常和客户沟通的过程中发现,他们在做mysql ddl变更的时候由于MySql本身的缺陷不支持online ddl,导致他们的业务不得不hang住一会儿,表越大,时间影响越长,所以期待有更好的解决方法:有些用户也想了一些方法,比如通过主备切换的方法,先在备库进行ddl,然后在通过主备切换到原主库进行ddl,但由于RDS对外提供给用户的是一个dns加port,所以后端的主备对用户是透明的,此方法行不通.其实在开源社区中已经有比较成熟的方法,那就是percona的pt-online-schema-

在Oracle专家眼中,MySQL sys Schema是怎样一种存在?

作者介绍 杨建荣,DBAplus社群联合发起人.现就职于搜狐畅游,Oracle ACE-A.YEP成员,超7年数据库开发和运维经验,擅长电信数据业务.数据库迁移和性能调优.持Oracle 10G OCP,OCM,MySQL OCP认证,<Oracle DBA工作笔记>作者.   sys Schema的初衷   MySQL的数据字典经历了几个阶段的演进,MySQL4.1 提供了information_schema 数据字典,一些基础元数据可以通过SQL来查询得到. MySQL5.5 提供了per