mysql ndb是什么_MySQL NDB Cluster介绍

最近翻译了好几篇关于NDB的文章,相信有很多人会有疑问,NDB Cluster究竟是个什么东西?它是一款新产品吗?它和InnoDB Cluster有什么不同?它是MySQL吗?它怎么使用?在这篇文章里,我将为大家介绍一下MySQL NDB Cluster是什么?它的架构和特征,以及它的适用场景。

MySQL NDB Cluster并不是一款新产品,它的最新版本8.0最近刚刚发布。追溯历史你会发现它最初的开发是由爱立信完成的,是的你没有看错,就是那个电信行业的爱立信,当初的名字叫做“Ericsson Network Database”。看到这里你大概会猜到这是一款什么样的产品了。它最初的目标对象是用来管理电信行业的数据,通过id进行关联的简单数据。最初的NDB是使用C++ API来访问数据的,MySQL将其收购以后,将其与SQL进行整合,现在的NDB既可以使用SQL,也可以C++ API 以及Java、memcached、Node.js等各种API进行访问。

MySQL NDB Cluster与MySQL Server(人们普遍认知的MySQL)是完全不同的产品,它使用非共享架构,通过多台服务器构建成集群,实现多点读写的关系型数据库。它具有在线维护功能,并且排除单一故障,具有非常高的可用性。此外,它的主要数据保存在内存中,可以高速处理大量的事务,是面向实时性应用程序的一款数据库产品。

MySQL NDB Cluster架构

MySQL NDB Cluster由三种节点构成,SQL节点、数据节点及管理节点。

4458e57d55a60e827265a3c52bf25d32.png

上图是由4个数据节点、2个SQL节点及2个管理节点组成的NDB集群

数据节点ndbmtd:负责管理数据、索引,控制事务处理。

SQL节点mysqld:应用程序和数据节点的SQL接口,用户认证,赋予权限等。

管理节点ndb_mgmd:启动停止集群、配置集群、备份,仲裁等。

数据节点:NDB Cluster的核心功能,用于保存数据、索引,控制事务。插入的数据按照主键的哈希值分散到不同的节点组里面保存(每个节点组保存部分数据),另外每个节点组内,数据会复制到不同的数据节点上以实现冗余。上图中节点组1保存了数据分片1和2两部分数据,节点组2里面保存了数据分片3和4两部分数据,每个节点组里面由2个数据节点构成,即使是每个节点组里面有一个节点发生故障,集群也能够持续运行。

SQL节点:相当于增加了NDB存储引擎的MySQL服务器,数据节点作为NDB存储引擎使用,如果使用其它的MySQL存储引擎,例如InnoDB,MyISAM等,数据将会保存在SQL节点上。应用程序通过SQL节点访问数据节点,使用方法与通常的MySQL一样,SQL节点会自动找到正确的数据节点将数据找回。

管理节点:管理节点用于配置集群和各个节点,各个节点需要连接管理节点,取得配置信息后加入集群。此外管理节点还充当仲裁者角色,以防止发生网络分区后出现脑裂现象。

NDB Cluster特征

高扩展性:NDB Cluster 可以在内部自动进行数据分片,随着数据节点的增加,可以做到非常高的读写扩展。

高可用性:最新版本高达99.9999%的高可用性,每年停机运维时间不超过1分钟。因为采用了非共享的架构,不会出现单一故障,发生故障时的故障转移时间非常短,并且各种维护工作可以在线进行,因此极大地提高系统可用性。

实时性:数据大部分情况下保存在内存中,可以快速执行事务,满足实时性高要求的应用需求。

异地容灾:可以利用NDB Cluster的复制功能,对NDB Cluster进行异地容灾,与MySQL的复制功能不同,NDB Cluster可以进行双向复制,并且能够对数据冲突进行校验。

SQL+NoSQL:数据节点上保存的数据除了可以通过SQL节点访问,还可以通过NoSQL访问。对比其它的KV型数据库,NDB Cluster具有如下优点:

支持ACID的完整事务。

数据具有持久性和冗余性。

自动故障转移。

在线备份。

低成本:由于NDB Cluster不使用共享存储,一般的服务器即可运行,因此可以为用户节省大量的硬件成本。

适用场景和案例

通过上面的介绍,您大致对NDB Cluster有了一些了解。基于它最初的基因,NDB Cluster广泛应用于电信行业,例如阿尔卡特朗讯,诺基亚,NEC等有大量的使用案例。在线游戏行业通过NDB进行会话管理,例如:Big Fish Games、Blizzard Entertainment、Zynga。此外,由于NDB具有非常高的可用性,美军航母的战机管控系统,PayPal的反欺诈系统均采用了NDB。NDB广泛适用于关键任务型系统。更多案例可以访问:https://www.mysql.com/why-mysql/case-studies/#en-5-28

以上是关于NDB的一个非常简明的介绍,今后计划写一下更详尽的内容。

感谢您关注MySQL!

欢迎关注公众号“MySQL解决方案工程师”

5e432b81d49ca6f0be95d2cb0e3d6888.png

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/572534.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

jQuery遍历,数组,集合

使用了jquery有段时间了&#xff0c;整理下jquery中的遍历问题。 1.jquery 遍历对象 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">< HTML> <HEAD> <TITLE> New Document </TITLE> <script language"…

orm和mysql_orm与mysql

一. orm执行原生sql语句在模型查询API不够用的情况下&#xff0c;我们还可以使用原始的SQL语句进行查询。Django 提供两种方法使用原始SQL进行查询&#xff1a;一种是使用raw()方法&#xff0c;进行原始SQL查询并返回模型实例&#xff1b;另一种是完全避开模型层&#xff0c;直…

课程作业2

作业二 题目 编写一个程序&#xff0c;要求根据给定的圆的半径求圆的面积&#xff0c;并将求得的结果打印出来。 要求&#xff1a; 输入输出采用cin和cout。 建立一个工程&#xff0c;将程序写成两个.cpp和一个.h的形式。 要求程序必须要对变量的定义和各个函数模块进行注释。 …

webform中提交按钮同时执行更新和插入操作_软件测试中的功能测试点(三)

26.输入法半角全角检查再输入信息中&#xff0c;输入一个或连串空格&#xff0c;查看系统如何处理&#xff0c;如对于要求输入符点型数据的项中&#xff0c;输入全角的小数点&#xff08;“。”或“.”&#xff0c;如4.5&#xff09;&#xff1b;输入全角的空格等。 27.密码检查…

PAT甲题题解-1091. Acute Stroke (30)-BFS

题意&#xff1a;给定三维数组&#xff0c;0表示正常&#xff0c;1表示有肿瘤块&#xff0c;肿瘤块的区域>t才算是肿瘤&#xff0c;求所有肿瘤块的体积和 这道题一开始就想到了dfs或者bfs&#xff0c;但当时看数据量挺大的&#xff0c;以为会导致栈溢出&#xff0c;所以并没…

python如何获取请求的url_听说你在学习:如何通过代码请求URL地址

最近比较忙碌&#xff0c;都没有时间更新公众号文章&#xff0c;表示比较惭愧。最近翻看了一下自己的博客&#xff0c;发现这篇文章的内容还是挺实用&#xff0c;所以&#xff0c;想分享给大家&#xff0c;欢迎阅读。在后续&#xff0c;我会从一个范围的角度进行编写一系列文章…

在sql中将表建在别的构件中用什么语句_SQL实战

学习主题&#xff1a;SQL学习目标&#xff1a;1 掌握子查询1. 什么是子查询(1) 什么是子查询&#xff1f;答&#xff1a;当一个查询是另一个查询的条件时&#xff0c;称之为子查询。简而言之&#xff1a;嵌套查询(2) 子查询执行的顺序是什么&#xff1f;答&#xff1a;先进行内…

数据结构入门之链表(C语言实现)

这篇文章主要是根据《数据结构与算法分析--C语言描述》一书的链表章节内容所写&#xff0c;该书作者给出了链表ADT的一些方法&#xff0c;但是并没有给出所有方法的实现。在学习的过程中将练习的代码记录在文章中&#xff0c;并添加了一些在测试中需要的函数&#xff0c;因此可…

centos radius mysql_centos6.5下安装freeradius2.2.9+mysql

平台centos6.5 x86_641&#xff0c;安装源并更新rpm -Uvh http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpmyum update -y2&#xff0c;安装相关库yum -y install wget expat-devel gcc make gmp-devel gmp pkgconfig perl libpcap gcc-c logrotate…

二手书城开发步骤

请点击进入 1、二手书城设计 2、搭建页面框架 3、构建bass服务及model 4、淘书页详细 5、购物车页详细 6、订单页详细 7、我的页详细 8、发布页详细转载于:https://www.cnblogs.com/xiaoxiaohabi/p/6789349.html

mongoose mysql_mongoose入门

mongoose入门MongoDB是一个开源的NoSQL数据库&#xff0c;相比MySQL那样的关系型数据库&#xff0c;它更显得轻巧、灵活&#xff0c;非常适合在数据规模很大、事务性不强的场合下使用。同时它也是一个对象数据库&#xff0c;没有表、行等概念&#xff0c;也没有固定的模式和结构…

php 验证码需开启gd2

转载于:https://www.cnblogs.com/zhangj391/p/6794555.html

pcm 降采样_Android_android downsample降低音频采样频率代码,使用Android AudioRecord 录制PCM文 - phpStudy...

android downsample降低音频采样频率代码使用Android AudioRecord 录制PCM文件&#xff0c;android SDK保证在所有设备上都支持的采样频率只有44100HZ&#xff0c;所以如果想得到其他采样频率的PCM数据&#xff0c;有几种方式&#xff1a;1.在设备上尝试可用的采样频率&#xf…

C++中没有定义类的引用。

在有时候由于类太大。须要在类在后面定义&#xff1b; 比如&#xff1a; class Y{void f(X); }; class X{ //一些成员数据和函数};//error由于c要求不论什么一个变量在引用之前必须声明。。在上述定义中我们能够调换两者的顺序来实现。 可是假设形成了循环&#xff1f; class X…

python中不能使用下标运算的有哪些_Python中最常见的10个问题(列表)

列表是Python中使用最多的一种数据结果&#xff0c;如何高效操作列表是提高代码运行效率的关键&#xff0c;这篇文章列出了10个常用的列表操作&#xff0c;希望对你有帮助。注意&#xff1a;很多人学Python过程中会遇到各种烦恼问题&#xff0c;没有人帮答疑。为此小编建了个Py…

Spring:与Redis的集成

一个月没写过博客了&#xff0c;一直想记录一下之前学习的Redis的有关知识&#xff0c;但是因为四月太过于慵懒和忙碌&#xff0c;所以一直没有什么机会&#xff0c;今天就来讲讲&#xff0c;如何使用Spring当中的Spring-data-redis去与Redis这个Nosql数据库集成吧。 首先先简单…

python中如何将字典直接变成二维数组_python基础知识(列表、字典、二维数组)...

记得改参数&#xff01;&#xff01;&#xff01;(1)简述列表(list)结构的特点。List(列表)List的元素以线性方式存储&#xff0c;可以存放重复对象&#xff0c;List主要有以下两个实现类&#xff1a;ArrayList : 长度可变的数组&#xff0c;可以对元素进行随机的访问&#xff…

内置对象和自定义对象的原型链

内置对象的原型链 新增属性 Object.prototype.mytest function() {alert("123");}var o new Object();o.mytest();重写属性 Object.prototype.toString function(){alert("破话之王");}o.toString();转载于:https://www.cnblogs.com/Abner5/p/6798630.h…

mysql将不同行数结果合并成多列_将多行合并到mysql中的一行和多列

我正在MYSQL工作,需要将用户数据提取到一个视图中.我将使用电子邮件客户端中的数据,因此我无法在应用程序层中执行此操作.问题是用户的每个数据字段都包含在单独的行中(这是Wordpress如何设置数据结构).例如,wp_usermeta为每个用户提供了多行数据,如下所示&#xff1a;user_id …

一些JavaScript基本函数

1.document.write(”");为 输出语句 2.JS中的注释为// 3.传统的HTML文档顺序是:document->html->(head,body) 4.一个浏览器窗口中的DOM顺序是:window->(navigator,screen,history,location,document) 5.得到表单中元素的名称和值:document.getElementById(”表单…