【巨杉答疑】巨杉数据库和mongodb有什么关系吗?

哈罗,艾瑞巴蒂~巨杉答疑栏目今日上线啦!
巨杉数据库作为商业化开源软件,已经拥有大量社区用户。开源至今,大到分布式数据库原理、架构问题,小到SDB巨杉数据库的安装使用问题,大家似乎都有很多问题想要和我们交流,所以我们邀请技术大咖和大家好好聊聊,有啥问题尽管放马过来!
昨天,我们就请到巨杉数据库的两位技术大咖在巨杉官方微信群针对分布式数据库的相关内容对于群友的提问进行解答。来淘点干货吧!
1.官方数据说巨杉很多性能超过mongoDB,前者是否可以替代后者,不能完全替代的话,在哪些性能方面巨杉能力不足于mongoDB,为什么,有设计方面的因素吗?mongodb和SDB有什么关系?
SDB完全可以替代mongodb,而且很多功能mongodb并不支持。例如事务、join查询等。
目前在性能上超越mongodb,而且在分布机制上也比mongodb完善。
要说弱点,主要在社区的推广和发展上,mongodb最早的出发点是从开发开始的。
e-r关系结构对于开发来说迭代太慢了,所以JSON文档型和对象一一对应,而且没有schema的限定,对于开发POC等迭代帮助太大了,很多互联网企业都是半天出个版本,这对开发要求很高。
Mongodb在易用性上做的很好,我们也在努力,希望大家支持!
Mongodb和SDB没有任何关系,大家的出发点非常不同。
2.数据库的开发本身技术要求都很高,需要论文原理来支撑,就像CAP理论中的AC的平衡,更希望能听到原理性的分析。
CAP主要是指Consistency(一致性); Availability(可用性);Partition tolerance(分区容错性);主要在分布式存储系统中提出的理论,P是分布式里必须的,当网络等因素发生故障的时候,A和C不能同时满足,因此提出了“三选二”的概念,及AP和CP的取舍选择。
三选二会误导很多新人,觉得不是CP就是AP,其实这个选择是极端情况的,并不是简单的非黑即白的选择。
首先,由于分区很少发生,那么在系统不存在分区的情况下没什么理由牺牲C或A。其次,C与A之间的取舍可以在同一系统内以非常细小的粒度反复发生,而每一次的决策可能因为具体的操作,乃至因为牵涉到特定的数据或用户而有所不同。所以是0-100%之间的变化。
这里举例来说,分布式一主两从,保障了AP,但网络同步的速度决定了CP的能力,所以这个同步能力就是根据网络环境从0-100%里变化的。
当条件好的时候,就基本都满足,当断网了,就要做取舍,但是当同步完成,从节点升级为主节点后,又恢复了。
当然如果要100%保证CP必须强一致,那么当一台机器宕机,强一致就做不到了,就满足不了CP了。
ACID是传统关系型数据库最为重要的特征,原子性、一致性、隔离性、持久性;强调的是一致性。属于CP。
BASE是基本可用(Basically Available)软状态(Soft State)最终一致性(Eventually Consistent)软状态就是中间状态,例如同步延时时的分布式从节点的副本状态。从BASE的角度,高可用是优先保障的。属于AP。
如何在这两种状态保持平衡,就需要从业务逻辑,用户需求,业务需求出发。
3.现在巨杉数据库分社区版和企业版,社区办是否有阉割,这两种分别适用哪些场景?
开源的社区版和企业版的数据库内核源码都是一致的,相较于企业版,社区版只是可视化上操作以及SparkSQL这部分有限制。
其他的就是专业的服务,企业版有一些我们专用的调试工具等,便于服务,但是对社区影响不大。
4. 巨杉数据库是怎么与Spark进行结合的?不用普通sql查询,那是利用什么方法查询?
Spark适合低并发,大数据量复杂查询。
巨杉数据库专门为spark开发了一套连接器,可以支持为spark 提供原数据。Spark SQL 的语法基本沿用了Hive SQL 的语法,大家基本可以通过查阅hive SQL 语法进行编写。
5.spark sql与普通sql区别在哪里?语法不一样还是语言不同?
Spark SQL是类似于标准SQL的语言,写得时候基本没有障碍,但是毕竟不是做OLTP(On-Line Transaction Processing联机事务处理过程)的,一些语法不支持,属于SQL子集。
6.巨杉数据库的瓶颈在哪里?
目前最大的瓶颈在隔离机制,巨杉SDB主要追求高可用、高性能的,就是ACID和BASE机制中,在BASE机制上巨杉SDB的优势更明显。
ACID和BASE分别推动了关系型数据库和NoSQL的发展,现在大家所主张的NewSQL就是在寻找更好的平衡点,在高可用的基础上,尽量支持ACID。
对于现在的业务来说,高可用的场景远大于OLTP场景。
7.nosql 和newsql 的区别?
这个要从nosql讲起,在互联网时代激发了大量用户,高可用变得非常重要,所以就退出了BASE机制
BASE是基本可用(Basically Available)软状态(Soft State)最终一致性(Eventually Consistent)软状态就是中间状态,例如同步延时时的分布式从节点的副本状态。从BASE的角度,高可用是优先保障的。属于CAP中的AP,主要目的就是为了保障业务迭代的便捷性和高可用。Newsql就是在BASE基础上,尽量满足ACID。
8.巨杉数据库支持分布式文件存储吗?
支持的,巨杉有SequoiaCM产品专门用于非结构化存储,分布方式相同,存储结构不同,是块存储。
目前SDB 是支持双存储的,一个是行存的BSON结构,另外一个块存储结构, SDB 对于块存储的功能称为 LOB(大对象),支持存储任意大小的非结构化文件。所以大家可以使用SDB 的LOB 功能来存储文件,并且该文件将会被切分成256KB(默认)的块大小分布式存储在整个数据库集群中,数据的冗余依赖数据分区组的方式进行。
9.SDB目前有官方docker镜像吗?
目前没有官方docker。
主要原因是我们目前从性能角度考虑,docker对于内存管理和i/o的使用上有很多技巧,但是从小项目,易用性角度来说,我们会考虑推出docker。
我们近期在青云会提供镜像版本的APP,对于其他云,我们也考虑使用docker部署。
10.如果我是一个视频文件,性能会有什么变化?
如果用户持续对SDB写入一些大的非结构化文件,性能的变化主要取决于你的服务器I/O。
对于SDB、分布式数据库你有什么疑问吗?添加“杉杉”为微信好友来聊聊吧~

【巨杉答疑】巨杉数据库和mongodb有什么关系吗?的更多相关文章
- Scrapy Item用法示例(保存item到MySQL数据库,MongoDB数据库,使用官方组件下载图片)
需要学习的地方: 保存item到MySQL数据库,MongoDB数据库,下载图片 1.爬虫文件images.py # -*- coding: utf-8 -*- from scrapy import ...
- node.js操作数据库之MongoDB+mongoose篇
前言 node.js的出现,使得用前端语法(javascript)开发后台服务成为可能,越来越多的前端因此因此接触后端,甚至转向全栈发展.后端开发少不了数据库的操作.MongoDB是一个基于分布式文件 ...
- NoSql非关系型数据库之MongoDB应用(二):安装MongoDB可视化工具
业精于勤,荒于嬉:行成于思,毁于随. 我们上次说到NoSql非关系型数据库之MongoDB应用(一):安装MongoDB服务 这次我们介绍安装 NoSQL Manager for MongoDB 可 ...
- NoSql非关系型数据库之MongoDB应用(三):MongoDB在项目中的初步应用
业精于勤,荒于嬉:行成于思,毁于随. 我们可以结合相关的IDE做一个简单的增删改查了,实现MongoDB在项目中的初步应用. 前提是安装了MongoDB服务和MongoDB可视化工具,没有安装的可以点 ...
- NOSQL数据库之MongoDB
一.NoSQL概述 如今,大多数的计算机系统(包括服务器.PC.移动设备等)都会产生庞大的数据量.其实,早在2012年的时候,全世界每天产生的数据量就达到了2.5EB(艾字节,).这些数据有很大一部 ...
- 使用Tapdata一步搞定关系型数据库到MongoDB的战略迁移
摘要:数据库作为最关键的基础设施,随着互联网时代的信息高速增长,关系型数据库因其高门槛.高成本以及扩展性差等原因导致的局限性逐渐浮出水面,如今更是面临诸多问题和挑战,Tapdata 专注新一代实时 ...
- SharePoint 2010/2013/2016内容数据库与网站集的关系
总得来说,内容数据库和网站集的关系是: 一个内容数据库里可以有多个网站集,但是一个网站集只能存在于一个内容数据库. 那么问题来了 问题1:我能否在创建网站集时指定内容数据库呢?或者说我能在指定的内容数 ...
- Hibernate基于注解方式配置来实现实体和数据库之间存在某种映射关系
实体和数据库之间存在某种映射关系,hibernate根据这种映射关系完成数据的存取.在程序中这种映射关系由映射文件(*.hbm.xml)或者java注解(@)定义. 本文以java注解的形式总结映射关 ...
- 数据库表设计时一对一关系存在的必要性 数据库一对一、一对多、多对多设计 面试逻辑题3.31 sql server 查询某个表被哪些存储过程调用 DataTable根据字段去重 .Net Core Cors中间件解析 分析MySQL中哪些情况下数据库索引会失效
数据库表设计时一对一关系存在的必要性 2017年07月24日 10:01:07 阅读数:694 在表设计过程中,我无意中觉得一对一关系觉得好没道理,直接放到一张表中不就可以了吗?真是说,网上信息什么都 ...
随机推荐
- Visual Studio Code for mac
Visual Studio Code for mac 将下载文件解压拖到应用程序文件夹即可 下载地址:链接: https://pan.baidu.com/s/1geHL5f1 密码: 2fdw
- 第 13 章 可扩展性设计之 MySQL Replication
前言: MySQL Replication 是 MySQL 非常有特色的一个功能,他能够将一个 MySQL Server 的 Instance 中的数据完整的复制到另外一个 MySQL Server ...
- countDownLatch和cyclicBarrier
< Effecit In Java >说过,从java 1.5发现版本开始, 就不建议使用wait和notify,它们使用比较困难,可以使用更高级并发工具来替代. 图一所说的同步器是指那些 ...
- 使用CSS设置滚动条样式以及如何去掉滚动条的方法
<STYLE> BODY { SCROLLBAR-FACE-COLOR: #f892cc; SCROLLBAR-HIGHLIGHT-COLOR: #f256c6; SCROLLBAR-SH ...
- js的event事件
一 . 焦点:使浏览器能够区分区分用户输入的对象,当一个元素有焦点的时候,那么他就可以接收用户的输入. 我们可以通过一些方式给元素设置焦点 1.点击 2.tab 3.js 不是所有元素都能够接受 ...
- cpp命名空间
1.namespace:c++里面的所有标识符都被定义到名为std的namespace中,命名空间就是标识符的各种可见范围,控制其作用域. 2.std为c++标准命名空间,c++标准库里的标识符都定义 ...
- 用超链接传递数组或get方式
<?php /** * 超链接传递数组参数 */ if($_GET['names']){ $arr=explode('-',$_GET['names']);//将数组分割为字符串 print_r ...
- 【小练习04】HTML+CSS--医药健康小页面
要求实现如下效果图: 代码演示 <!DOCTYPE html> <html> <head> <meta charset="UTF-8"&g ...
- struts2 Unable to load configuration. - bean - jar:file:struts2-core-2.2.3.jar!/struts-default.xml:29:72
今天启动tomcat的时候发现如下错误记录一下! 从stackoverflow上找到 原因是加入了多个struts2包 删除相同的包即可!!
- cpp(第十三章)
1.动态(晚期)联编需要显示定义复制构造函数,赋值运算符,虚构函数. 2.纯虚类不能声明对象. 3.赋值运算符的特征标随类而异. 4.返回类型协变,重新定义继承的方法,应确保与原来的原型完全相同,但如 ...