相比甲骨文中国在中国市场的裁员风波,同为数据库服务的MongoDB显得更为乐观。“MongoDB是中国开发者最喜欢用的一个数据库。”MongoDB全球渠道及亚太区销售高级副总裁Alan Chhabra带着一点自信和骄傲在媒体面前宣称。
中国企业的数字化转型正进入关键期,在打造开放、高效、灵活、共享的云计算基础设施的同时,数据库的更新换代也被提上了日程。
日前,非结构化数据库平台提供商MongoDB在上海举办用户大会,MongoDB全球渠道及亚太区销售高级副总裁Alan Chhabra接受了亿欧企业服务频道的采访, 并针对去年修改开源协议,在SSPL的不同许可机制下授权服务器软件的争议以及其他疑问作出回应。
数据库的本质是解决数据的存储和管理问题。 Alan Chhabra表示,对企业发展具有战略意义的数据库正在催生巨大的市场。
在这些潜力颇大的数据库中,市场上目前存在着的是关系型的传统数据库和以Mongo DB为代表的非关联式新型数据库。传统数据库比较典型的是甲骨文旗下的Oracle数据库、IBM推出的大数据平台Hadoop和Stream Computing、微软的SQL Server、SAP以及EMC Greenplum。 他们的主要差别在于数据库的结构化和非结构化。
结构化的数据是指可以使用关系型数据库表示和存储,表现为二维形式的数据,存储和排列很有规律,这对查询和修改等 *** 作很有帮助,但扩展性和灵活性欠佳。 非结构化数据库就是各种文档、、视频/音频等没有固定结构的数据,一般直接整体进行存储为二进制的数据格式。 目前涵盖分布式数据库、图数据库、流数据库、时空数据库和众包数据库等多个领域。
MongoDB是文档型的非结构化新型数据库,Alan Chhabra表示, 与传统数据库相比,更能满足用户数据存储量大、计算灵活的需求。“在某些客户某些案例上,我们已经取代了传统数据库,比如甲骨文。”
当前, 软件对于商业模式的改变、开发人员地位的提高,以及企业向云端迁移的趋势 都让数据服务公司的发展得到了助力。但从毕马威会计事务所对首席信息官的调查结果来看, 88%的首席信息官认为他们未能从数字化战略中充分获益;82%的首席信息官认为其所在机构在利用技术推动业务发展方面并非“卓有成效”。 也就是说, 大多数公司的数字化战略是以失败告终的。
在此背景下,更加灵活、性能更加强大的新型数据库在一些领域获得了试验田丰收,并且可以看到,随着客户数据需求的繁杂程度的日益增加,传统数据库也在自我革新,以迎头赶上数据浪潮的大变革。
MongoDB成立于2007年,2017年在纳斯达克上市。最初,MongoDB是一项面向技术爱好者的技术,如今已成为一项企业级的业务关键技术。通过不断开发数据库即服务(Database-as-a-Service)产品,积极拥抱云计算,MongoDB在过去十年里,为开发人员提供了处理数据的方法。正因如此,它也成了企业数字化转型战略的一个关键部分。
MongoDB提供的产品主要包括MongoDB云服务MongoDB Atlas、MongoDB Mobile、MongoDB企业版和MongoDB Stitch等十余个相关产品。Alan Chhabra表示,产品包括了 开源版、付费版和云版。
2018 年 10 月,MongoDB宣布其开源许可证将从GNU AGPLv3切换到SSPL,新许可证将适用于新版本的MongoDB Community Server以及打过补丁的旧版本,这一举动引发了行业热议。基于GNU AGPLv3协议,企业可以将MongoDB作为公共服务但这需要企业开源自己的软件或是获得MongoDB的商业授权,事实却是MongoDB发现许多企业正在违反协议“疯狂试探”甚至已经违反协议。 SSPL( Server Side Public License)顾名思义,要求使用者必须得到服务器端公共许可证,这一协议会进一步约束商业公司使用MongoDB服务。
Alan Chhabra向亿欧解释, SSPL 针对的是提供MongoDB托管服务的云服务厂商。 也就是说,如果不是云服务厂商,没有公然售卖MongoDB产品,而只是作为应用后台数据库来使用的话,那么无论你是电商、物联网、金融、社交、 游戏 、移动应用等等,一概都不会有任何影响。 “MongoDB的宗旨还是为了始终支持并保护创新开放。”
但此开源协议的修改明显带来了市场用户的“掉粉”,比如Linux 社区的接连“弃用”,以及AWS 、IBM、微软推出了兼容MongoDB的相关产品来服务用户。
数据库开源的商业变现与创新形成的矛盾,目前似乎还尚未找到解决方案。
Alan Chhabra在大会上也透露了MongoDB的未来计划, 即将基于智能运营数据平台和下一代基础架构、文化、方法论和安全,推动原有系统的现代化、数据即服务、云数据策略、业务敏捷性,进而帮助客户实现以数据驱动的数字化转型。
针对MongoDB在中国的发展情况, Alan Chhabra表示,公司将以创新立足,持续引领数据库技术发展潮流,与合作伙伴携手助力中国企业的数字化转型。
MongoDB北亚区副总裁苏玉龙认为:“中国是数据大国,而数据就是未来的石油。如何利用好数据,让数据石油助力中国企业腾飞是MongoDB希望在中国达成的事情。随着中国企业数字化转型逐渐走向深入,MongoDB数据库的价值得到不断释放。”
本文作者龚晨霞,微信Gcx847076575,欢迎关注企业服务和产业互联网的朋友加微信交流。
Model是django项目的基础,如果一开始没有好好设计好,那么在接下来的开发过程中就会遇到的问题然而,大多数的开发人员都容易在缺少思考的情况下随意的增加或修改model这样做的后果就是,在接下来的开发过程中,我们不得不做出努力来修正这些错误因此,在修改model时,一定尽可能的经过充分的考虑再行动!以下列出的是我们经常用到的一些工具和技巧:South,用于数据迁移,我们会在每个django项目中都用到但到django17时,将会有djangodbmigrations代替django-model-utils,用于处理常见的模式,例如TimeStampedModeldjango-extensions,主要用到shell_plus命令,该命令会在shell中自动载入所有的app的model1基本原则第一,将model分布于不同的app中如果你的django项目中,有一个app拥有超过20个model,那么,你就应当考虑分拆该app了我们推荐每个app拥有不超过5个model第二,尽量使用ORM我们需要的大多数数据库索引都能通过Object-Relational-Model实现,且ORM带给我们许多快捷方式,例如生成SQL语句,读取/更新数据库时的安全验证因此,如果能使用简单的ORM语句完成的,应当尽量使用ORM只有当纯SQL语句极大地简化了ORM语句时,才使用纯SQL语句并且,在写纯SQL语句是,应当优先考虑使用raw(),再是extra()第三,必要时添加index添加db_index=True到model中非常简单,但难的是理解何时应该添加在建立model时,我们事先不会添加index,只有当以下情况时,才会考虑添加index:在所有的数据库查询中使用率在10%-25%时或当有真实的数据,或能正确估计出使用index后的效果确实满意时第四,注意model的继承model的继承在django中需要十分小心,django提供了三种继承方式,1abstractbaseclass继承(不要和Pyhton标准库的abc模块搞混),2多表(multi-table)继承,3proxymodel继承下表罗列了这三种继承的优劣:model继承类型优势劣势不使用继承,即每个相同的field会重复出现在不同的model中容易明白model和数据表的关系如果有大量相同的field,会较难维护abstractbaseclass继承,即只有继承自该类的model才会有数据表,其自身没有对应的数据表不用在每个model重复编写相同的field也没有多表继承带来的过多消耗无法单独使用其共同的abstractbaseclass多表(multi-table)继承每个model都有数据表,因此可以既使用母表,又使用子表也能通过parentchild从母表访问子表增加了消耗,因为每次查询子表,都会自动查询其母表强烈建议不使用这一方法!proxymodel继承,即只有原始model才会有相应的数据表在不建立新数据表的情况下,使我们拥有不同行为的model无法修改model的fielddjango的创造者和其他许多开发人员都认为,多表继承的方法不是一个良好的方法因此我们强烈建议大家不要使用该方法下面列举了一些常见的如何选择model继承的情形:如果只有少数model拥有重复的field时,大可不必使用model继承,只需要在每个model中添加这些相同的field即可如果有足够的model拥有重复的field时,大多是情况下,可以使用abstractbaseclass继承,将相同的field提取到abstractbaseclass中Proxymodel继承很少被用到,和其他两种继承也有着许多不一样之处请不要使用多表(multi-table)继承,因为它既消耗资源又复杂,如果可以,尽量使用OneToOneFields和ForeignKeys代替django项目中,创建时间和修改时间这两个field是最用到的,下面给出一个abstractbaseclass继承的例子:#modelspyfromdjangodbimportmodelsclassTimeStampedModel(modelsModel):"""abstractbaseclass,提供创建时间和修改时间两个通用的field"""created=modelsDateTimeField(auto_now_add=True)modified=modelsDateTimeField(auto_now=True)classMeta:abstract=True注意以上代码的最后两行,正式这两行将这一model变味了abstractbaseclass,下面以TimeStampedModel为abstractbaseclass建立model:fromdjangodbimportmodelsclassArticle(TimeStampedModel):title=modelsCharField(max_length=200)以上两个class,在执行syncdb时,只会建立一个数据表,这也正是我们希望得到的第五,使用south进行数据迁移,可以参见以前的文章:如何在Django中使用django-south,实现数据迁移(datamigrations)2DjangoModel的设计如何设计出好的djangomodel可能是最难也是最复杂的一个话题了,在此,我们看看一些基本的技巧吧:a规范化我们首先建议了解数据库规范化(databasenormalization)如果你还不清楚这是什么,那么,我们强烈建议你先阅读一下相关的书籍,或搜索"关系型数据库设计"或"数据库规范化"在创建djangomodel之前,应当首先保证设计的数据库是规范化的bcache正确的使用cache能帮助我们提高数据库的性能详细的信息,我们会在今后的文章中作进一步介绍c何时使用null和blank当定义modelfield时,我们可以设置null=True和blank=True(默认都是False),知道何时设置null和blank对于开发人员也是十分重要的,在下面的表格中,我们一一列举了如何使用这两个选项:Field类型设置null=True设置blank=TrueCharField,TextField,SlugField,EmailField,CommaSeparatedIntegerField等不要设置django规定储存空字符串来代表空值,当从数据库中读取NULL或空值时都为空字符串可以设置设置后允许接受widget中为空值(即不填写),储存到数据库时空值变为空字符串FileField,ImageField不要设置django实际储存的是路径的字符串,因此同上可以设置同上BooleanField不要设置因为有NullBooleanField代替不要设置IntegerField,FloatField,DecimalField等可以设置如果你希望在数据库中能储存NULL可以设置设置后允许接受widget中为空值(即不填写),设置为True时必须同时设置null=TrueDateTimeField,DateField,TimeField等可以设置如果你希望在数据库中能储存NULL可以设置设置后允许接受widget中为空值(即不填写),设置为True时必须同时设置null=TrueForeignKey,ManyToManyField,OneToOneField可以设置如果你希望在数据库中能储存NULL可以设置设置后允许接受widget中为空值(即不填写)GenericIPAddressField可以设置如果你希望在数据库中能储存NULL可以设置设置后允许接受widget中为空值(即不填写)IPAddressField不推荐设置用GenericIPAddressField代替不推荐设置用GenericIPAddressField代替d什么时候使用BinaryField在django16中,新增了BinaryField,用于储存二进制数据(binarydata或bytes)对于BinaryField,我们无法使用ORM的filters,excludes或其他SQL *** 作但在少数情况下,我们会用到BinaryField,例如MessagePack格式的内容,传感器接受的原始数据和压缩数据等但需要注意的是,BinaryData一般都十分庞大,因此可能会拖慢数据库的速度如果发生这一现象,我们可以将binarydata储存在文件中,然后使用FileField储存该文件的路径信息还有,不要从BinaryField中直接读取文件并呈献给用户因为,1从数据库读写总是比从文件系统读写慢;2数据库备份会变得十分庞大,花费的时间;3获得文件的过程,增加了从django到数据库的这一环节3不要替换默认的ModelManager从ORM获取model,实际上是通过django中的Modelmanager完成的,django为每一个model提供了默认的modelmanager,我们不建议将其替换掉,因为:当使用model继承时,model会继承abstractbaseclassmodel的modelmanager,而不会继承非abstractbaseclass的managermodel的第一个modelmanager通常作为默认的manager,当被替换时,可能会发生不可预测的问题4数据库事务(Transaction)在django16中,ORM默认会autocommit每一个数据库查询,也就是说,每次使用mcreate()或mupdate()时,在数据库中马上就会做出相应的修改这样做的好处就是简化了初学者对ORM的理解但坏处就是,当一个view中包含两个数据库修改,可能一个成功,但另一个失败,这就可能导致数据库不完整,给我们带来很大的危险解决这一问题的方法就是使用数据库transaction,即将一系列数据库 *** 作包含在一个transaction中,当其中有一个失败时,其他 *** 作也会自动回退Django16为我们带来了一套崭新的既简单又强大的transaction机制,使我们方便的使用数据库transactiona将整个>
下面是2005年北大计算机硕士学位研究生专业目录,你可以参考一下:
一、计算机系统结构
(081201)
招收人数:48
报考方向:
01指令级并行处理与线程级并行处理
02系统芯片设计方法学
03微处理器设计技术
04软硬件协同设计
05网络信息体系结构
06网络计算与服务
07计算机网络与分布式系统
08分布式海量信息存储
09计算机网络新技术
报考方向为01~04的考生,
考试科目为计算机软件基础、计算机硬件基础任选一门;
复试笔试科目包括数字逻辑、微机原理、汇编语言程序设计;
复试参考书目:《微型计算机基本原理与应用》,王克义等,北京大学出版社,1997年。
报考方向为05~09的考生,考试科目限计算机软件基础;
复试笔试科目为计算机网络,复试参考书目为:《计算机网络》
AST(译版、影印版),
Andrew
S
Tanunbaum,熊桂喜译,清华出版社,1998年。
二、计算机软件与理论
(081202)
招收人数:75
报考方向:
01软件工业化生产技术与系统
02软件复用与软件构件技术
03 *** 作系统
04嵌入式软件
05面向对象方法与技术
06软件项目管理
07计算机语言与编译系统
08网络与信息安全
09Web信息共享与集成技术
10并行计算与网格构件技术
11知识工程
12商务智能
13面向移动设备的空间信息技术
14Web环境中的信息提取
15人工智能
16生物特征识别
17模式识别
18图形图像与多媒体
19人机交互与虚拟现实
20典型应用领域的数据库与信息系统
21Web环境下的数据库与信息集成
22数据库,数据仓库,数据挖掘
23自然语言处理
24机器翻译的理论与技术
25信息提取
26算法分析与计算复杂性
27并行计算与Petri网
28程序的形式语义与正确性验证
复试阶段笔试科目:
报考01~07方向:软件工程;
报考08方向、23~25方向:计算机网络;
报考09~17方向、20~22方向:数据库;
报考18~19方向:计算机图形学;
报考26~28方向:数理逻辑与组合数学。
其参考书目为:
《计算机网络》
AST(译版、影印版),
Andrew
S
Tanunbaum,熊桂喜译,清华出版社,1998年;
《软件工程》第二版,王立福、麻志毅、张世琨,北京大学出版社,2002年;
《数据库系统概念》(第1至9章,第15章,第18章),Abraham
Silberschatz等著,杨冬青、唐世渭等译,机械工业出版社,2003年。
三、计算机应用技术
(081203)
招收人数:41
报考方向:
01文字与图形信息处理
02知识工程与智能教育
03电子出版新技术
04网络与数据库技术的应用
05内容管理与知识管理
06彩色图像处理
07信息安全保障技术
08嵌入式Linux技术
09网络攻防技术
10数字版权保护技术
11电子政务技术
12数字视频信息处理与多媒体技术
13数据仓库与数据挖掘
14多媒体与智能信息检索
15人工智能与机器学习
16时空数据库与时空信息分析技术
17数字图书馆与数字博物馆
18数据库与知识库
19智能商务与Web智能
20信息系统智能化
21数据网格与知识网格
22智能数据分析
复试阶段笔试科目:
报考方向01~03的考生:软件工程;
报考方向04、13~22的考生:数据库;
报考方向05~12的考生:计算机网络。
其参考书目为:
《计算机网络》
AST(译版、影印版),
Adrew
S
Tanunbaum,熊桂喜译,清华出版社,1998年;
《软件工程》第二版,王立福、麻志毅、张世琨,北京大学出版社,2002年;
《数据库系统概念》(第1至9章,第15章,第18章),Abraham
Silberschatz等著,杨冬青、唐世渭等译,机械工业出版社,2003年。
以上就是关于MongoDB挑战传统数据库:非结构化数据库的迭新不容小觑全部的内容,包括:MongoDB挑战传统数据库:非结构化数据库的迭新不容小觑、MVC 模型里如何设置默认值,比如 CreateDate设置成 获取当前时间,迁移到数据库里就是Getdate()、请问北大计算机考研初试和复试分别要考哪些课程与书籍等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)