NoSQL 数据库因其功能性、易于开发性和可扩展性而广受认可,它们越来越多地用于大数据和实时 Web 应用程序,在本文中,我们通过示例讨论 NoSQL、何时使用 NoSQL 与 SQL 及其用例。
我们提供的服务有:网站建设、成都网站建设、微信公众号开发、网站优化、网站认证、陈仓ssl等。为上1000+企事业单位解决了网站和推广的问题。提供周到的售前咨询和贴心的售后服务,是有科学管理、有技术的陈仓网站制作公司
NoSQL是一种下一代数据库管理系统 (DBMS)。NoSQL 数据库具有灵活的模式,可用于构建具有大量数据和高负载的现代应用程序。
“NoSQL”一词最初是由 Carlo Strozzi 在 1998 年创造的,尽管自 1960 年代后期以来就已经存在类似的数据库。然而,NoSQL 的发展始于 2009 年初,并且发展迅速。
在处理大量数据时,任何关系数据库管理系统 (RDBMS) 的响应时间都会变慢。为了解决这个问题,我们可以通过升级现有硬件来“扩大”信息系统,这非常昂贵。但是,NoSQL 可以更好地横向扩展并且更具成本效益。
NoSQL 对于非结构化或非常大的数据对象(例如聊天日志数据、视频或图像)非常有用,这就是为什么 NoSQL 在微软、谷歌、亚马逊、Meta (Facebook) 等互联网巨头中特别受欢迎的原因。
一些流行的 NoSQL 数据库包括:
随着企业更快地积累更大的数据集,结构化数据和关系模式并不总是适合。有必要使用非结构化数据和大型对象来更好地捕获这些信息。
传统的 RDBMS 使用 SQL(结构化查询语言)语法来存储和检索结构化数据,相反,NoSQL 数据库包含广泛的功能,可以存储和检索结构化、半结构化、非结构化和多态数据。
有时,NoSQL 也被称为“ 不仅仅是 SQL ”,强调它可能支持类似 SQL 的语言或与 SQL 数据库并列。SQL 和 NoSQL DBMS 之间的一个区别是 JOIN 功能。SQL 数据库使用 JOIN 子句来组合来自两个或多个表的行,因为 NoSQL 数据库本质上不是表格的,所以这个功能并不总是可行或相关的。
但是,一些 NoSQL DBMS 可以执行类似于 JOIN的操作——就像 MongoDB 一样。这并不意味着不再需要 SQL DBMS,相反,NoSQL 和 SQL 数据库倾向于以不同的方式解决类似的问题。
一般来说,在以下情况下,NoSQL 比 SQL 更可取:
许多行业都在采用 NoSQL,取代关系数据库,从而为某些业务应用程序提供更高的灵活性和可扩展性,下面给出了 NoSQL 数据库的一些企业用例。
内容管理是一组用于收集、管理、传递、检索和发布任何格式的信息的过程,包括文本、图像、音频和视频。NoSQL 数据库可以通过其灵活和开放的数据模型为存储多媒体内容提供更好的选择。
例如,福布斯在短短几个月内就构建了一个基于 MongoDB 的定制内容管理系统,以更低的成本为他们提供了更大的敏捷性。
大数据是指太大而无法通过传统处理系统处理的数据集,实时存储和检索大数据的系统在分析 历史 数据的同时使用流处理来摄取新数据,这是一系列非常适合 NoSQL 数据库的功能。
Zoom使用 DynamoDB(按需模式)使其数据能够在没有性能问题的情况下进行扩展,即使该服务在 COVID-19 大流行的早期使用量激增。
物联网设备具有连接到互联网或通信网络的嵌入式软件和传感器,能够在无需人工干预的情况下收集和共享数据。随着数十亿台设备生成数不清的数据,IoT NoSQL 数据库为 IoT 服务提供商提供了可扩展性和更灵活的架构。
Freshub就是这样的一项服务,它从 MySQL 切换到 MongoDB,以更好地处理其大型、动态、非统一的数据集。
拥有数十亿智能手机用户,可扩展性正成为在移动设备上提供服务的企业面临的最大挑战。具有更灵活数据模型的 NoSQL DBMS 通常是完美的解决方案。
例如,The Weather Channel使用 MongoDB 数据库每分钟处理数百万个请求,同时还处理用户数据并提供天气更新。
何玩转 NoSQL数据库作者:IT专家中国 Weather公司CIO Bryson Koehler整理MongoDBRiakCassandra等NoSQL数据库特性指其重要特性NoSQL限制住 Weather公司致力于气报告气预报业务其并缺乏数据缺乏数据管理工具需要三种同NoSQL数据库 近我向Weather 公司CIO Bryson Koehler提疑问除公司CIO,Bryson Koehler其业务单元孵化者,包括Weather ChannelWeatherFXWeather UndergroundIntellicast等Weather公司每获取处理着约二0万亿字节数据外提供前全球气状况并航空公司紧中国服务货运商公用事业保险及线气中国站气应用程序用户提供气预报服务每需求增加数十亿气数据请求并且预期响应间要一0毫秒左右 RiakWeather 公司台NoSQL数据库服务于公司事务性存储公用中国络(SUN)数据获取平台运行亚马逊中国络服务(AWS)用区域并每一5频率捕获超二0亿气象数据信息所Riak具明确处理规模该公司使用Cassandra及新近添加MongoDB数据库Weather中国 IOSAndroid移应用程序服务 Weather 公司使用同产品Koehler解释说同工具同优势 Cassandra服务于Weather 公司及全球消费者使用第三气应用API数据:我数据发平台每秒处理数十万事务我发现Cassandra用于全球发数据棒解决案并且[数据库]读取面体现高用性 本质全球各消费者所使用数据服务包括Weather 公司第三气应用程序 MongoDB提供Weather中国中国站移应用程序间层缓存功能:离我核API我没全部Weather中国内容所MongoDB容器发站Weather中国及AndroidiOS移应用程序服务Mongo处些处基于其内建JSON格式及灵性 Riak用于消费气象数据观测包括自世界各图片视频等:我喜Riak其优秀数据摄取能力且种全球布式式实现于全球布式平台获取数据入站式数据库真靠选择 我曾听说DatastaxBashoCouchbase高管贬低MongoDB扩展性MongoDB指向规模部署Facebook超二00万台移设备应用程序提供支持eHarmony公司MongDB每处理着数十亿潜比赛预约据Koehle所述MongoDBWeather中国Weather中国移应用程序处理着每十亿交易毫疑问通配置部署Mongo处理批量交易数据 尽管Koehler承认乐于看MongoDB继续使全球集群位置[功能]更加缝化且易于使用 些属于全球性布式集群复制负载平衡CassandraRiak众所周知功能 规模讨论角度看少公司达Weather公司经营规模易于发架构灵性JSON数据处理使MongoDB世界流行NoSQL数据库微软IBM都进行MongoDB模仿微软Azure DocumentDBIBM CloudantCassandraRiak Weather公司三NoSQL标准降低至两程巩固Koehler说公司没准备做 由于我构造由许同数据解决案组中国状结构我目前环境已于复杂说我希望给团队些自由空间让我解所选择利弊看些整合 候迁移件难事关于NoSQL数据库重要事情困其 Koehler说架构编码确数据库迁移另并难随着模式自由及数据转存技术发展论前者key-value存储或其形式转储数据都十容易 特定产品进程自定义编码复杂存储程已经复返Koehler说关于结构化编码确需要考虑?做避免特殊供应商提供工具功能能让身陷其举亚马逊中国络服务(AWS)消息服务例 必让服务云运行解释说部署自RabbitMQ环境陷于其所原先部署AWS 应用程序转部署谷歌计算云服务论数据平台存储环境或云计算环境都要别让自局限仅由供应商提供范围空间内 转
No SQL DB是一种和关系型数据库相对应的对象数据库。按照数据模型保存性质将当前NoSQL分为四种:
1.Key-value stores键值存储, 保存keys+BLOBs
2.Table-oriented 面向表, 主要有Google的BigTable和Cassandra.
3.Document-oriented面向文本, 文本是一种类似XML文档,MongoDB 和 CouchDB
4.Graph-oriented 面向图论. 如Neo4J.
关系型数据库的弊端:
关系型数据库的历史已经有30余年了,因此,在某些情况下,关系型数据库的弱点就会暴露出来:
1. “对象-关系 阻抗不匹配”。关系模型和面向对象模型在概念上存在天然的不匹配的地方,比如对象模型当中特有的“继承”,“组合”,“聚合”,“依赖”的概念在关系模型当中是不存在的。
2. “模式演进”。即随着时间的推移,需要对数据库模式进行调整以便适应新的需求,然而,对数据库模式的调整是的成本很高的动作,因此很多设计师在系统设计之初会设计一个兼容性很强的数据库模式,以应对将来可能出现的需求,然而在现在的web系统开发过程中,系统的变更更加频繁,几乎无法预先设计出一种“万能”的数据库模式以满足所有的需求,因此 模式演进的弊端就愈发凸显。
3. 关系型数据库处理 稀疏表时的性能非常差。
4. networkoriented data 很适合处理 人工智能、社交网络中的一些需求。
所以,各种各样的No SQL DB 出现了,这里只简单介绍下Neo4J 的基本知识。
Neo 数据模型
Neo4J 是一个基于图实现的No SQL DB, 其基本的数据类型有如下几种:
Node, Relationship, Property.
Node 对应于图中的 节点,Relationship 对应图中的边,Node 和 Relationship 都可以拥有Property,
Property 的数据结构为。
数据遍历
Neo 提供了Traverser对数据中的数据进行遍历。
什么是NoSQL数据库?从名称“非SQL”或“非关系型”衍生而来,这些数据库不使用类似SQL的查询语言,通常称为结构化存储。这些数据库自1960年就已经存在,但是直到现在一些大公司(例如Google和Facebook)开始使用它们时,这些数据库才流行起来。该数据库最明显的优势是摆脱了一组固定的列、连接和类似SQL的查询语言的限制。有时,NoSQL这个名称也可能表示“不仅仅SQL”,来确保它们可能支持SQL。 NoSQL数据库使用诸如键值、宽列、图形或文档之类的数据结构,并且可以如JSON之类的不同格式存储。
1. 使用python脚本可以轻松生成满足条件的数据,具体如下
#coding: utf-8import os, sys, time, datetimefrom itertools import izipN = 100000000def gen_meid(): returndef gen_seq(): returndef generate_message(meid,seq): ts = time.time(); time_st = datetime.datetime.fromtimestamp(ts).strftime('%Y-%m-%d %H:%M:%S') print '/t'.join(( meid, seq, '/N', '/N', '/N', '/N', '0', '0', '0', '0', time_st, '/N', '/N', '0', '/N', '/N', '/N', '/N', time_st ))def main(args): print '/t'.join(( 'deviceID', 'battery', ... , 'accumulatedTime', 'createDate' )) // for mongodb, mysql delete for meid,seq in izip(gen_meid(),gen_seq()): generate_message(meid,seq) pass return 0#==============================if __name__ == "__main__": import sys main(sys.argv) pass#==============================
$ python a.py device.tsv
2. 切分数据(可选)
tail -n +1 device.csv | head -n 5000000 part1.txt
tail -n +100001 device.csv | head -n 100000 part2.txt
tail -n +200001 device.csv | head -n 100000 part3.txt
tail -n +300001 device.csv | head -n 100000 part4.txt
3. 生成txt 文件
python a.py device.txt