本文转载自公众号“读芯术”(ID:AI_Discovery)
从事新项目总是数据令人极度兴奋——可以自由地以自己喜欢的方式设计和构建项目。但如果规划得不合理,合理何就会给未来带来麻烦。规划需要作出的择正最关键的决定之一就是选择APP数据库,而此文的数据目的就是介绍数据库的选择方案——并列举其优势和弊端以帮你明智地选择数据库。
[[390048]]
数据库的合理何结构像JSON对象,每个键都是规划唯一的,每个键都指向某个值。择正
它把数据保存在内存中,运行速度快,合理何但有容量限制,规划所以难以存储大量数据。择正由于没用到硬盘,因而运行非常的快。因为不涉及查询或连接,因此不需要担心数据建模。由于没有模式,开发人员总是可以灵活地根据自己的喜好更改数据。
使用条件:
宽立柱像注射了类固醇的键值。值被修改为存储一组列,而不仅仅是普通数据。
引入一组列之后,现在可以给相关数据分组,但仍没有标准的模式。因此,每个键可以指向不同分组的数据。
由于没有模式,它可以处理非结构化数据,并附带一种名为CQL的查询语言,类似于SQL,但功能要弱得多。数据以连续的流形式出现,比如来自物联网设备、股票市场、金融交易或Netflix观看历史。
使用条件:
它仍然不是通用的。因此,它可以用于存储来自所有不同应用程序的历史数据。
它是我们使用的最流行的数据库技术之一。很明显,它包括文档,每个文档是一组键值对。它们是非结构化的、不需要模式。
文档被分组到集合中,这些集合可以被构造成逻辑层次结构。逻辑数据集合以更有逻辑性的方式分组相关数据,它似乎与关系数据库相似。
数据库不能运行join查询,怎么立刻获得所有相关的数据呢?把它们全部储存。鼓励非规范化数据库,已经做好会出现数据复制/不一致的准备。
读取数据非常快,但编写和更新数据的同时要保证一致性却是一项挑战。文档数据库非常适合通用应用程序,也可能非常适合大多数应用程序、游戏和物联网。
若对数据库模式不甚了解,则记录数据库是最佳启动方式。
数据量很多,而且数据之间有着直接或间接的关系时,文档型数据库无法容纳。在这种情况下,必须运行多个复杂的查询,然后在前端应用程序中合并所有接收到的数据,或者可以使用关系数据库,其中这些复杂的查询由数据库管理。
这类数据库中,著名的一些包括MySQL, Postgres, and SQL Server。他们出现很长时间了,对于很对应用程序来说都是不错的选择。
想象一个汽车工厂,它有不同的轮毂来生产汽车部件。假设门是在一个地方制造的,而轮子、车身和内部零件都是在各自不同的地方制造的。
假设的车厂蓝图
每个制造的部件都有一个唯一的ID。所以一旦汽车组装完毕,就可以从不同的地方取来所有的零件,然后组装汽车。
建造这样一个工厂需要制定蓝图,以确保整个生产过程非常高效和优化。这个蓝图在使用在数据库中时称为模式。因此,需要为数据库规划模式,以确保数据库也有效性高,能满足应用程序的数据需求。
缺点:
优点:
要是不需要建立模式,直接把关系存成数据,该用哪个呢?
数据存储在节点中,关系被定义为边。一起来看看怎么做。
要想在SQL数据库里查找所有学习计算机科学的学生,则需要一个查找/中间人表,该表单独存储所有学习计算机科学的学生的记录。
图表更加简单明了,因为不必分别存储数据中的关系部分,而自动带有新式数据。
关系更易于记录和保持在图表里
有了这个直接显示两个节点间的关系的新方式,复杂的联接查询变得更简单,与SQL相比,极大地提高了数据的性能。因此,因依赖大量联接操作而降低数据的性能时,可以使用这种数据库。
如果你正在构建一个像谷歌这样的应用程序,在小字符串查询搜索中,你必须快速返回所有匹配的记录,那么这就是一个全文搜索引擎。这些数据库基于始于1999年的Apache Lucene项目。
Algolia和MeiliSearch是全文搜索引擎。它们看起来类似于文档类型的数据库。有一个索引,并向它添加数据对象。搜索数据库引擎将分析文档中的所有文本,并创建称为倒排索引的东西。
当你查询某项内容时,数据库只会检查反向索引,这使得整个过程看起来异常迅速,即使对于大型数据库也是如此。
可供选择的数据库有很多,但最流行的似乎是Fauna。作为应用开发者,我们通常只关心JSON,我们可以在应用前端使用它。有了Fauna,不必担心数据建模、模式、缩放、复制或规范化过程,只需获取JSON数据即可。使用GraphQL定义访问数据的方式。
以一个类似instagram的应用程序的场景为例。将使用JSON为用户、发布和查询定义规则。
我们刚刚上传了GraphQL模式,它会自动创建一个集合来存储数据和查询数据的索引。在幕后,它将考虑如何利用基于您提供的GraphQL模式的不同范例,如关系、图表和文档。只是简单地以与在文档数据库中相同的方式添加数据,而且不会受到数据建模的限制。
优点:
缺点:
以下是Fauna列出的值得注意的重要特点:
这些并不是全部!要学习的不同的数据库还有很多,但我希望本文的介绍能帮你在设计应用程序时思路清晰有方向。
责任编辑:华轩 来源: 读芯术 数据库APP技术
(责任编辑:综合)
第11届独游大展《BitSummit》确定2023年7月14日京都举行
神火股份:3月23日融资净偿还37.10万元 当前融资余额为6.29亿元
TCL科技(000100.SZ)公布消息:近日增持中环股份股票共5855.2778万股