哈罗,艾瑞巴蒂~巨杉答疑栏目今日上线啦!
巨杉数据库作为商业化开源软件,已经拥有大量社区用户。开源至今,大到分布式数据库原理、架构问题,小到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、分布式数据库你有什么疑问吗?添加“杉杉”为微信好友来聊聊吧~
杉杉微信号:sequoiadb111