哈罗,艾瑞巴蒂~巨杉答疑栏目今日上线啦!

巨杉数据库作为商业化开源软件,已经拥有大量社区用户。开源至今,大到分布式数据库原理、架构问题,小到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(默认)的块大小分布式存储在整个数据库集群中,数据的冗余依赖数据分区组的方式进行。

【巨杉解决方案】ECM企业内容管理

9.SDB目前有官方docker镜像吗?

目前没有官方docker。

主要原因是我们目前从性能角度考虑,docker对于内存管理和i/o的使用上有很多技巧,但是从小项目,易用性角度来说,我们会考虑推出docker。

我们近期在青云会提供镜像版本的APP,对于其他云,我们也考虑使用docker部署。

10.如果我是一个视频文件,性能会有什么变化?

如果用户持续对SDB写入一些大的非结构化文件,性能的变化主要取决于你的服务器I/O。

对于SDB、分布式数据库你有什么疑问吗?添加“杉杉”为微信好友来聊聊吧~

【巨杉答疑】巨杉数据库和mongodb有什么关系吗?的更多相关文章

  1. Scrapy Item用法示例(保存item到MySQL数据库,MongoDB数据库,使用官方组件下载图片)

    需要学习的地方: 保存item到MySQL数据库,MongoDB数据库,下载图片 1.爬虫文件images.py # -*- coding: utf-8 -*- from scrapy import ...

  2. node.js操作数据库之MongoDB+mongoose篇

    前言 node.js的出现,使得用前端语法(javascript)开发后台服务成为可能,越来越多的前端因此因此接触后端,甚至转向全栈发展.后端开发少不了数据库的操作.MongoDB是一个基于分布式文件 ...

  3. NoSql非关系型数据库之MongoDB应用(二):安装MongoDB可视化工具

    业精于勤,荒于嬉:行成于思,毁于随. 我们上次说到NoSql非关系型数据库之MongoDB应用(一):安装MongoDB服务 这次我们介绍安装  NoSQL Manager for MongoDB 可 ...

  4. NoSql非关系型数据库之MongoDB应用(三):MongoDB在项目中的初步应用

    业精于勤,荒于嬉:行成于思,毁于随. 我们可以结合相关的IDE做一个简单的增删改查了,实现MongoDB在项目中的初步应用. 前提是安装了MongoDB服务和MongoDB可视化工具,没有安装的可以点 ...

  5. NOSQL数据库之MongoDB

    一.NoSQL概述 如今,大多数的计算机系统(包括服务器.PC.移动设备等)都会产生庞大的数据量.其实,早在2012年的时候,全世界每天产生的数据量就达到了2.5EB(艾字节,​).这些数据有很大一部 ...

  6. 使用Tapdata一步搞定关系型数据库到MongoDB的战略迁移

      摘要:数据库作为最关键的基础设施,随着互联网时代的信息高速增长,关系型数据库因其高门槛.高成本以及扩展性差等原因导致的局限性逐渐浮出水面,如今更是面临诸多问题和挑战,Tapdata 专注新一代实时 ...

  7. SharePoint 2010/2013/2016内容数据库与网站集的关系

    总得来说,内容数据库和网站集的关系是: 一个内容数据库里可以有多个网站集,但是一个网站集只能存在于一个内容数据库. 那么问题来了 问题1:我能否在创建网站集时指定内容数据库呢?或者说我能在指定的内容数 ...

  8. Hibernate基于注解方式配置来实现实体和数据库之间存在某种映射关系

    实体和数据库之间存在某种映射关系,hibernate根据这种映射关系完成数据的存取.在程序中这种映射关系由映射文件(*.hbm.xml)或者java注解(@)定义. 本文以java注解的形式总结映射关 ...

  9. 数据库表设计时一对一关系存在的必要性 数据库一对一、一对多、多对多设计 面试逻辑题3.31 sql server 查询某个表被哪些存储过程调用 DataTable根据字段去重 .Net Core Cors中间件解析 分析MySQL中哪些情况下数据库索引会失效

    数据库表设计时一对一关系存在的必要性 2017年07月24日 10:01:07 阅读数:694 在表设计过程中,我无意中觉得一对一关系觉得好没道理,直接放到一张表中不就可以了吗?真是说,网上信息什么都 ...

随机推荐

  1. iOS最新企业证书的生成

     PS:不知道什么原因  图片显示不出来 请看我简书里面的文章 http://www.jianshu.com/p/baab03ac43e9 1.生成CSR文件 SpotLight搜索>钥匙串访问 ...

  2. C# 字典 Dictionary

    原文地址http://www.cnblogs.com/txw1958/archive/2012/11/07/csharp-dictionary.html  侵删

  3. JDFS:一款分布式文件管理实用程序第二篇(更新升级、解决一些bug)

    一 前言 本文是<JDFS:一款分布式文件管理实用程序>系列博客的第二篇,在上一篇博客中,笔者向读者展示了JDFS的核心功能部分,包括:服务端与客户端部分的上传.下载功能的实现,epoll ...

  4. Spring Boot的properties配置文件读取

    我在自己写点东西玩的时候需要读配置文件,又不想引包,于是打算扣点Spring Boot读取配置文件的代码出来,当然只是读配置文件没必要这么麻烦,不过反正闲着也是闲着,扣着玩了.具体启动过程以前的博客写 ...

  5. Python教程(2.4)——字符串

    2.2节讲过,Python中有字符串类型.在Python中,字符串用'或"括起,例如'abc'."qwerty"等都是字符串.注意'和"并不是字符串的内容. A ...

  6. spring异常处理器

    一.本篇文章旨在讨论异常处理器: 1.因为异常处理器在实战中通常用来处理开发人员自定义的运行时异常,所以如果要了解如何自定义运行时异常,请自行搜索相关资料. 2.本文的demo用IndexOutOfB ...

  7. python List和String 转换注意

    不能用str(list),t=['\x87\xe9\xa5\xb0\xef\xbc']In [28]: str(t)Out[28]: "['\\x87\\xe9\\xa5\\xb0\\xef ...

  8. nodeJS实现简单网页爬虫功能

    前面的话 本文将使用nodeJS实现一个简单的网页爬虫功能 网页源码 使用http.get()方法获取网页源码,以hao123网站的头条页面为例 http://tuijian.hao123.com/h ...

  9. Akka(7): FSM:通过状态变化来转换运算行为

    在上篇讨论里我们提到了become/unbecome.由于它们本质上是堆栈操作,所以只能在较少的状态切换下才能保证堆栈操作的协调及维持程序的清晰逻辑.对于比较复杂的程序流程,Akka提供了FSM:一种 ...

  10. Python学习:基本概念

    Python学习:基本概念 一,python的特点: 1,python应用场景多;爬虫,网站,数据挖掘,可视化演示. 2,python运行速度慢,但如果CPU够强,这差距并不明显. 3,严格的缩进式编 ...