⑴ 如何评价SequoiaDB巨杉数据库
equoiaDB巨杉数据库 是国内领先的新一代分布式数据库厂商。
主要产品SequoiaDB是国内唯一一款企业级的新一代分布式、标准化Newsql数据库。作为商业化的数据库产品,现已开源。同时也提供了包括企业数据融合和再加工、非结构化数据管理平台、大数据管理平台在内的多个企业级大数据解决方案。
SequoiaDB巨杉数据库也于近期发布了SequoiaDB 2.0企业版,新版本加入了SQL2003支持、双引擎核心存储、双活机制等,在企业级功能上超越硅谷同类产品。作为Spark全球的发行商之一,巨杉在2.0时代将提供高并发实时计算、高吞吐量批处理分析、以及在线流处理计算等一系列企业级解决方案,SequoiaDB巨杉数据库平台可以帮助企业快速地进行跨系统的数据融和、提炼和再加工。
近期,在当前的资本寒冬之下,巨杉于近期获得了DCM领投的近亿元B轮融资。这体现了投资界对于这家务实的大数据基础软件公司发展的一致看好,而此次融资也成为国内新一代分布式数据库领域最大的一笔投融资。
⑵ 如何实现一个NEWSQL数据库
我想统计数据库中今天,发帖最多的人。
select * from user order by s_count desc
user是你的用户表,s_count是用户表中的发贴数量字段
然后直接取出记录的第一条就是法帖最多的
发帖最多的前10个人,并从多到少,进行排序
select top 10 from user order by s_count desc,id asc
id是你的用户表主键id.
⑶ newsql和nosql的区别
你说的很乱,oracle是关系型数据库,mysql也是,两者并存甚至oracle要强势些。至于非关系型数据库,oracle也是有优势的,尤其在于数据量小的时候,特别明显。另外,oracle近几年也退出了很多框架来利用分布式存储来实现大数据,其本身也在不断推陈出新,取代是不太可能的
⑷ 数据库为什么要分库分表
1 基本思想之什么是分库分表?
从字面上简单理解,就是把原本存储于一个库的数据分块存储到多个库上,把原本存储于一个表的数据分块存储到多个表上。
2 基本思想之为什么要分库分表?
数
据库中的数据量不一定是可控的,在未进行分库分表的情况下,随着时间和业务的发展,库中的表会越来越多,表中的数据量也会越来越大,相应地,数据操作,增
删改查的开销也会越来越大;另外,由于无法进行分布式式部署,而一台服务器的资源(CPU、磁盘、内存、IO等)是有限的,最终数据库所能承载的数据量、
数据处理能力都将遭遇瓶颈。
3 分库分表的实施策略。
分库分表有垂直切分和水平切分两种。
3.1
何谓垂直切分,即将表按照功能模块、关系密切程度划分出来,部署到不同的库上。例如,我们会建立定义数据库workDB、商品数据库payDB、用户数据
库userDB、日志数据库logDB等,分别用于存储项目数据定义表、商品定义表、用户数据表、日志数据表等。
3.2
何谓水平切分,当一个表中的数据量过大时,我们可以把该表的数据按照某种规则,例如userID散列,进行划分,然后存储到多个结构相同的表,和不同的库
上。例如,我们的userDB中的用户数据表中,每一个表的数据量都很大,就可以把userDB切分为结构相同的多个userDB:part0DB、
part1DB等,再将userDB上的用户数据表userTable,切分为很多userTable:userTable0、userTable1等,
然后将这些表按照一定的规则存储到多个userDB上。
3.3 应该使用哪一种方式来实施数据库分库分表,这要看数据库中数据量的瓶颈所在,并综合项目的业务类型进行考虑。
如果数据库是因为表太多而造成海量数据,并且项目的各项业务逻辑划分清晰、低耦合,那么规则简单明了、容易实施的垂直切分必是首选。
而
如果数据库中的表并不多,但单表的数据量很大、或数据热度很高,这种情况之下就应该选择水平切分,水平切分比垂直切分要复杂一些,它将原本逻辑上属于一体
的数据进行了物理分割,除了在分割时要对分割的粒度做好评估,考虑数据平均和负载平均,后期也将对项目人员及应用程序产生额外的数据管理负担。
在现实项目中,往往是这两种情况兼而有之,这就需要做出权衡,甚至既需要垂直切分,又需要水平切分。我们的游戏项目便综合使用了垂直与水平切分,我们首先对数据库进行垂直切分,然后,再针对一部分表,通常是用户数据表,进行水平切分。
4 分库分表存在的问题。
4.1 事务问题。
在执行分库分表之后,由于数据存储到了不同的库上,数据库事务管理出现了困难。如果依赖数据库本身的分布式事务管理功能去执行事务,将付出高昂的性能代价;如果由应用程序去协助控制,形成程序逻辑上的事务,又会造成编程方面的负担。
4.2 跨库跨表的join问题。
在执行了分库分表之后,难以避免会将原本逻辑关联性很强的数据划分到不同的表、不同的库上,这时,表的关联操作将受到限制,我们无法join位于不同分库的表,也无法join分表粒度不同的表,结果原本一次查询能够完成的业务,可能需要多次查询才能完成。
4.3 额外的数据管理负担和数据运算压力。
额
外的数据管理负担,最显而易见的就是数据的定位问题和数据的增删改查的重复执行问题,这些都可以通过应用程序解决,但必然引起额外的逻辑运算,例如,对于
一个记录用户成绩的用户数据表userTable,业务要求查出成绩最好的100位,在进行分表之前,只需一个order
by语句就可以搞定,但是在进行分表之后,将需要n个order
by语句,分别查出每一个分表的前100名用户数据,然后再对这些数据进行合并计算,才能得出结果。
⑸ 现在国产数据库有哪些品牌
据我网上找的资料,目前国产数据库主要有3个1、南京大学通用newsql数据库——gbase2、达梦新1代云数据库——dm73、人大金仓分析型数据库kingbasees但个人观点,在国外多个知名商业化数据库oracle,sqlserver,db2等和开源的数据库如mysql,postgresql等眼前,这些基本没有甚么市场
⑹ NewSQL为何使传统关系数据库黯然失色
传统数据库仍旧会有一席之地,至于NewSQL的优势又是什么,简单和大家说说:
首先关于“中间件+关系数据库分库分表”算不算NewSQL分布式数据库问题,国外有篇论文pavlo-newsql-sigmodrec,如果根据该文中的分类,Spanner、TiDB、OB算是第一种新架构型,Sharding-Sphere、Mycat、DRDS等中间件方案算是第二种(文中还有第三种云数据库,本文暂不详细介绍)。
基于中间件(包括SDK和Proxy两种形式)+传统关系数据库(分库分表)模式是不是分布式架构?我觉得是的,因为存储确实也分布式了,也能实现横向扩展。但是不是“伪”分布式数据库?从架构先进性来看,这么说也有一定道理。
“伪”主要体现在中间件层与底层DB重复的SQL解析与执行计划生成、存储引擎基于B+Tree等,这在分布式数据库架构中实际上冗余低效的。为了避免引起真伪分布式数据库的口水战,本文中NewSQL数据库特指这种新架构NewSQL数据库。
NewSQL数据库相比中间件+分库分表的先进在哪儿?画一个简单的架构对比图:
- 传统数据库面向磁盘设计,基于内存的存储管理及并发控制,不如NewSQL数据库那般高效利用;
- 中间件模式SQL解析、执行计划优化等在中间件与数据库中重复工作,效率相比较低;
- NewSQL数据库的分布式事务相比于XA进行了优化,性能更高;
- 新架构NewSQL数据库存储设计即为基于paxos(或Raft)协议的多副本,相比于传统数据库主从模式(半同步转异步后也存在丢数问题),在实现了真正的高可用、高可靠(RTO<30s,RPO=0);
- NewSQL数据库天生支持数据分片,数据的迁移、扩容都是自动化的,大大减轻了DBA的工作,同时对应用透明,无需在SQL指定分库分表键。
⑺ Oracle是否有被HADLOOP,NOSQL,NEWSQL,MYSQL,OCEANBASE取代的可能
hadoop:Hadoop是一个由Apache基金会所开发的分布式系统基础架构。多用了存在数量巨大的小文件、视频等;
NOSQL:泛指非关系型的数据库。
NewSQL 是对各种新的可扩展/高性能数据库的简称,这类数据库不仅具有NoSQL对海量数据的存储管理能力,还保持了传统数据库支持ACID和SQL等特性。
MYSQL:被Oracle收购
OCEANBASE:OceanBase是一个支持海量数据的高性能分布式数据库系统,实现了数千亿条记录、数百TB数据上的跨行跨表事务,由淘宝核心系统研发部、运维、DBA、广告、应用研发等部门共同完成。
总之,各有不同特点。
⑻ C#创建新的SQL数据库
1、建立连接
System.Data.SqlClient.SqlConnection oConn=new System.Data.SqlClient.SqlConnection("data source="+this.DbServer.Text+";initial catalog=master;user id="+this.UserId.Text+";password="+this.Password.Text);
2、//建立数据库
System.Data.SqlClient.SqlCommand oComm=oConn.CreateCommand();
oComm.CommandText="CREATE DATABASE "+this.DBName.Text ;
try
{
oComm.ExecuteNonQuery();
}
catch
{
System.Windows.Forms.MessageBox.Show(this,"建立数据库出错,请手工建立指定的数据库","信息提示",System.Windows.Forms.MessageBoxButtons.OK);
oComm.Dispose();
3、转换到新建的数据库
oConn.ChangeDatabase(this.DBName.Text);
4、建立其他对象
oCommand.CommandText="if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[AddAnalyzeRecord]') and OBJECTPROPERTY(id, N'IsProcere') = 1)\n";
oCommand.CommandText+="drop procere [dbo].[AddAnalyzeRecord]\n";
oCommand.ExecuteNonQuery();
oCommand.CommandText="\n";
oCommand.CommandText+="if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[AddVisitErrorLog]') and OBJECTPROPERTY(id, N'IsProcere') = 1)\n";
oCommand.CommandText+="drop procere [dbo].[AddVisitErrorLog]\n";
oCommand.ExecuteNonQuery();
oCommand.CommandText="\n";
oCommand.CommandText+="if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[AddVisitLog]') and OBJECTPROPERTY(id, N'IsProcere') = 1)\n";
oCommand.CommandText+="drop procere [dbo].[AddVisitLog]\n";
oCommand.ExecuteNonQuery();
oCommand.CommandText="\n";
oCommand.CommandText+="if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[AnalyzeRecord]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)\n";
oCommand.CommandText+="drop table [dbo].[AnalyzeRecord]\n";
oCommand.ExecuteNonQuery();
oConn.Close();
oConn.Dispose();
}
⑼ 如何使用HBase构建NewSQL
目前主流的数据库或者NoSQL要么在CAP里面选择AP,比较典型的例子是Cassandra,要么选择CP比如HBase,这两个是目前用得非
常多的NoSQL的实现。我们的价值观一定认为未来是分布式的,一定是尽量倾向于全部都拥有,大部分情况下取舍都是HA,主流的比较顶级的数据库都会选择
C,分布式系统一定逃不过P,所以A就只能选择HA。现在主要领域是数据库的开发,完全分布式,主要方向和谷歌的F1方向非常类似。
目前看NewSQL代表未来(Google Spanner、F1、FoundationDB),HBase在国内有六个Committer,在目
前主流的开源数据库里面几乎是最强的阵容。大家选型的时候会有一个犹豫,到底应该选择HBase还是选Cassandra。根据应用场景,如果需要一致
性,HBase一定是你最好的选择,我推荐HBase。它始终保持强一致,我们非常喜欢一致性,丧失一致性的时候有些错误会特别诡异,很难查。对于
Push-down特性的设计其实比较好,全局上是一个巨大的分布式数据库,但是逻辑上是分成了一个个Region,Region在哪台机器上是明确的。
比如要统计记录的条数,假设数据分布在整个系统里面,对数十亿记录做一个求和操作,就是说不同的机器上都要做一个sum,把条件告诉他要完成哪些任务,他给你任务你再汇总,这是典型的分布式的 MPP,做加速的时候是非常有效的。
2015年HBaseConf 上面有一句总结: “Nothing is hotter than SQL-on-
Hadoop, and now SQL-
on- HBase is fast approaching equal hotness status”, 实际上SQL-on-HBase 也是非
常火。因为 Schema Less 没有约束其实是很吓人的一件事情,当然没有约束也比较爽,就是后期维护十分痛苦,规模进一步扩大了之后又需要迁移
到 SQL。
现在无论从品质还是速度上要求已经越来越高,拥有SQL的同时还希望有ACID的东西(OLAP一般不追求一致性)。所以TiDB在设计时就强调这
样的特点:始终保持分布式事务的支持,兼容MySQL协议。无数公司在SQL遇到Scale问题的时候很痛苦地做出了选择,比如迁移到
HBase,Cassandra
MongoDB已经看过太多的公司做这种无比痛苦的事情,现在不用痛苦了,直接迁过来,直接把数据导进来就OK了。TiDB最重要的是关注OLTP,对于
互联网业务来说通常是在毫秒级内就需要返回一个结果。
我们到目前为止开发了六个月,开源了两个月。昨天晚上TiDB达到了第一个Alpha的阶段,现在可以拥有一个强大的数据库:支持分布式事务,始终
保持同步的复制,强大的按需Scale能力,无阻塞的Schema变更。发布第一个Alpha版本的时候以前的质疑都会淡定下来,因为你可以阅读每一行代
码,体验每个功能。选择这个领域也是非常艰难的决定,实在太Hardcore了,当初Google Spanner也做了5年。不过我们是真爱,我们就是
技术狂,就是要解决问题,就是要挑大家最头痛的问题去解决。好在目前阿里的OceanBase给我们服了颗定心丸,大家也不会质疑分布式关系型数据库是否
可行。