互联网如何海量存储数据目前存储海量数据的技术主要包括NoSQL、分布式文件系统、和传统关系型数据库,使得关系型数据库中可以适用于一切要求一致性比较高的系统中,所以必须用一种新的数据结构存储来替代关系型数据库,如果使用传统关系型数据库来存储用户的关注关系,4.2版本为基础的对象关系型数据库管理系统二、从关系型到非关系型在基于web的结构中,一、关系型数据库1.概念关系型数据库是指采用了关系模型来组织数据的数据库,MongoDB是一种支持高性能数据存储的开源文档型数据库,不过都不支持SQL语言查询数据。
互联网如何海量存储数据
目前存储海量数据的技术主要包括NoSQL、分布式文件系统、和传统关系型数据库。随着互联网行业不断的发展,产生的数据量越来越多,并且这些数据的特点是半结构化和非结构化,数据很可能是不精确的,易变的。这样传统关系型数据库就无法发挥它的优势。因此,目前互联网行业偏向于使用NoSQL和分布式文件系统来存储海量数据。
下面介绍下常用的NoSQL和分布式文件系统。
NoSQL
互联网行业常用的NoSQL有:HBase、MongoDB、Couchbase、LevelDB。
HBase是Apache Hadoop的子项目,理论依据为Google论文 Bigtable: A Distributed Storage System for Structured Data开发的。HBase适合存储半结构化或非结构化的数据。HBase的数据模型是稀疏的、分布式的、持久稳固的多维map。HBase也有行和列的概念,这是与RDBMS相同的地方,但却又不同。HBase底层采用HDFS作为文件系统,具有高可靠性、高性能。-存储数据
MongoDB是一种支持高性能数据存储的开源文档型数据库。支持嵌入式数据模型以减少对数据库系统的I/O、利用索引实现快速查询,并且嵌入式文档和集合也支持索引,它复制能力被称作复制集(replica set),提供了自动的故障迁移和数据冗余。MongoDB的分片策略将数据分布在服务器集群上。-couchdb
Couchbase这种NoSQL有三个重要的组件:Couchbase服务器、Couchbase Gateway、Couchbase Lite。Couchbase服务器,支持横向扩展,面向文档的数据库,支持键值操作,类似于SQL查询和内置的全文搜索;Couchbase Gateway提供了用于RESTful和流式访问数据的应用层API。Couchbase Lite是一款面向移动设备和“边缘”系统的嵌入式数据库。Couchbase支持千万级海量数据存储-存储数据
分布式文件系统
如果针对单个大文件,譬如超过100MB的文件,使用NoSQL存储就不适当了。使用分布式文件系统的优势在于,分布式文件系统隔离底层数据存储和分布的细节,展示给用户的是一个统一的逻辑视图。常用的分布式文件系统有Google File System、HDFS、MooseFS、Ceph、GlusterFS、Lustre等。-couchdb
物联网时代的数据库如何选型
物联网时代,大量的数据从不同的设备传感器产生,单机数据库系统肯定无法存储这么大量的数据,在选择数据库方面,肯定要选择具有分布式能力存储的数据库。
在物联网时代,数据之间还有一个非常重要的特性,那就是数据之间的关联性。不同的数据从相互连接的互联网设备传感器中产生,由于不同的传感器相互连接,协同工作和采集数据,如何将大量具有相互关联的数据保存在数据库,这里我推荐使用图数据库来进行存储。-存储数据
图数据库相对于其他数据库来说,最大的优势就是查询数据之间的关联性会更加快速,消耗的时间会更短。打个比方,在社交网络中,我们想要查询在用户A的粉丝中,粉丝关注了B的用户。如果使用传统关系型数据库来存储用户的关注关系,在上面的数据统计中,要使用两层Join才能算出结果,而关系型数据库Join操作会很慢。使用图型数据库存储数据的话,图中的点为用户,边为用户的关注关系,在查询A的粉丝,同时粉丝也关注B的用户,只需要遍历两层关注关系就能很快查询到结果。-couchdb
图数据库也属于NoSql数据库的一种,常用的图形数据库有,JanusGraph、Neo4j、Cayley、dgraph。不同的图数据库,底层实现也不尽相同。
JanusGraph是一种分布式图数据库,由Java语言开发,可以使用Hadoop生态存储系统作为数据源,构建出数据大图。是TiTan图数据库的开源版本,支持事务的ACID。
Neo4j是一种单机的图数据库,其优势就是能够快速安装并且使用,便于新同学上手。你的数据量一般不大的话,我推荐使用Neo4j,直接使用Neo4j相关的API就可以将数据模型图构建而出,然后使用 Neo4j Cypher查询语言,就可以分析数据,Cypher是一种类SQL的语言。-存储数据
Cayley和Dgraph都是使用Go语言实现的图数据库,Go语言的最大特性就是其编译速度和开发便捷性,Cayley和Dgraph都支持分布式存储,不过都不支持SQL语言查询数据,Dgraph不支持事务,而Cayley支持事务,不过在开源社区,Dgraph比Cayley更加活跃,这里优先建议使用Dgraph作为物联网的存储数据库。-couchdb
总体来说,在物联网时代,一定要学会使用图数据库,在分析大量数据之间的关联性时,图数据库就能够派上用场,图数据库最大的优势就是分析不同数据之间的关联性。
我是Lake,专注大数据技术、互联网科技见解、程序员个人经验分享,如果我的问答对你有帮助的话,希望你能够点赞转发或者关注我,就是我持续分享在大数据方面的知识,非常感谢。数据库有哪些
数据库有哪些?
要了解数据库之前,先要了解下关系型数据库和非关系型数据库。
一、关系型数据库
1.概念
关系型数据库是指采用了关系模型来组织数据的数据库。简单来说,关系模式就是二维表格模型。
主要代表:SQL Server, Oracle ,Mysql, PostgreSQL。
2.优点
(1).容易理解,二维表的结构非常贴近现实世界,二维表格,容易理解。
(2)使用方便,通用的sql语句使得操作关系型数据库非常方便。
(3)易于维护,数据库的ACID属性,大大降低了数据冗余和数据不一致的概率。
3.瓶颈
(1 )海量数据的读写效率。
对于网站的并发量高,往往达到每秒上万次的请求,对于传统关系型数据库来说,硬盘I/o是一个很大的挑战。
(2) 高扩展性和可用性。
4.特点
SQL Server
是一个关系数据库管理系统。它最初是由Microsoft、Sybase 和Ashton-Tate三家公司共同开发的,于1988 年推出了第一个OS/2版本。在Windows NT 推出后,Microsoft与Sybase 在SQL Server 的开发上就分道扬镳了,Microsoft 将SQL Server移植到Windows NT系统上,专注于开发推广SQL Server 的Windows NT 版本。Sybase 则较专注于SQL Server在UNⅨ操作系统上的应用。-存储数据
Mysql
MySQL 是最流行的关系型数据库管理系统,在 WEB 应用方面 MySQL 是最好的 RDBMS(Relational Database Management System:关系数据库管理系统)应用软件之一。-couchdb
PostgreSQL
是一种特性非常齐全的自由软件的对象-关系型数据库管理系统(ORDBMS),是以加州大学计算机系开发的POSTGRES,4.2版本为基础的对象关系型数据库管理系统
二、从关系型到非关系型
在基于web的结构中,数据库是最难以横向拓展的,当一个应用系统的用户量和访问量与日俱增的时候,数据库没有办法像web Server那样简单的通过添加更多的硬件和服务节点来拓展性能和负载能力。
关系型数据库的最大优点就是事务的一致性,这个特性,使得关系型数据库中可以适用于一切要求一致性比较高的系统中。比如:银行系统。
但是在网页应用中,对这种一致性的要求不是那么的严格,允许有一定的时间间隔,所以关系型数据库这个特点不是那么的重要了。相反,关系型数据库为了维护一致性所付出的巨大代价就是读写性能比较差。而像微博、facebook这类应用,对于并发读写能力要求极高,关系型数据库已经无法应付。所以必须用一种新的数据结构存储来替代关系型数据库。所以非关系型数据库应用而生。-存储数据
三、非关系型
1.概念
NoSQL非关系型数据库,主要指那些非关系型的、分布式的,且一般不保证ACID的数据存储。
主要代表:MongoDB,Redis、CouchDB。
2.应用场景
(1)面向高性能并发读写的key-value数据库
主要特点是具有极高的并发读写性能,例如Redis、Tokyo Cabint等。
(2)面向海量数据访问的面向文档数据库
特点是,可以在海量的数据库快速的查询数据。例如MongoDB以及CouchDB.
(3)面向可拓展的分布式数据库
解决的主要问题是传统数据库的扩展性上的缺陷。
3.缺点
但是由于Nosql约束少,所以也不能够像sql那样提供where字段属性的查询。因此适合存储较为简单的数据。有一些不能够持久化数据,所以需要和关系型数据库结合。
4.特点
MongoDB
是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。它支持的数据结构非常松散,是类似json的bson格式,因此可以存储比较复杂的数据类型。Mongo最大的特点是它支持的查询语言非常强大,其语法有点类似于面向对象的查询语言,几乎可以实现类似关系数据库单表查询的绝大部分功能,而且还支持对数据建立索引-couchdb
redis
是一个key-value存储系统。和Memcached类似,它支持存储的value类型相对更多,包括string(字符串)、list(链表)、set(集合)、zset(sorted set --有序集合)和hash(哈希类型)。这些数据类型都支持push/pop、add/remove及取交集并集和差集及更丰富的操作,而且这些操作都是原子性的。在此基础上,redis支持各种不同方式的排序。与memcached一样,为了保证效率,数据都是缓存在内存中。区别的是redis会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件,并且在此基础上实现了master-slave(主从)同步。-存储数据
CouchDB
是用Erlang开发的面向文档的数据库系统,2010年7月14日发布了1.0版本。CouchDB不是一个传统的关系数据库,而是面向文档的数据库,其数据存储方式有点类似lucene的index文件格式,CouchDB最大的意义在于它是一个面向web应用的新一代存储系统,事实上,CouchDB的口号就是:下一代的Web应用存储系统。-couchdb
四、数据库分类
1、国内数据库
达梦DM、金仓 Kingbase、南大通用Gbase、神通OSCAR、优炫UXDB、翰高 Highgo DB、成都虚谷 XUGU、柏睿数据 RapidsDB、广州巨杉 SequoiaDB、易鲸捷 EsgynDB、鼎天盛华 UPDB、北京恒辉 HHDB、湖南上容 SRDB、许继集团SG-RDB、博阳数据 BeyonDB、北京国信贝斯 iBASE、北京翰云 Hyperic、华易 Huayisoft DB、华鼎 HUABASE、万里开源 GreatDB、福建星瑞格 SinoDB、华胜信泰 ToprowDB、上海热璞 Hot DB、星环科技 KunDB、天曦科技 TXDB、北京新数 ShinDB、东方国信 XCloud DB、海量数据 AtlasDB-存储数据
2、国外数据库
Oracle、Microsoft SQL Server、SAP HANA、IBM DB2、Teradata
3、云数据库
腾讯 TDSQL、腾讯 Tbase、腾讯 PhxSQL、腾讯 TXSQL、腾讯 CynosDB、华为 HWSQL GaussDB200、百度 TDB、京东云DRDS、金山 KTS、蚂蚁金服 Oceanbase、阿里 PolarDB、浪潮 K-DB、中兴GoldenDB、新华三 H3C DataEngine、东软 OpenBASE、亚信 AntDB、小米 Pegasus、青云 RadonDB-couchdb
4、开源数据库
MySQL、Greenplum、TiDB
5、其它数据库:
华东师范大学 Cedar、偶数科技 Oushu Database、浙江智臾 DolphinDB、智达方通 Intcube OLAP、上海赜睿 MegaWise、云山云海 haisql