当前位置: 首页 > 科技观察

如何为应用程序选择合适的数据库

时间:2023-03-16 01:10:08 科技观察

从事新项目总是非常令人兴奋-我们可以自由地设计和构建我们想要的任何东西。但是,如果这个计划做得不好,将来会给我们带来很多痛苦。选择您的应用程序数据库是您必须做出的重要决定之一,在这篇文章中,我打算向您介绍各种数据库选项——并列出一些优缺点,以帮助您做出更明智的数据库决策.内存数据库Redis我们的数据库的结构就像一个JSON对象——每个键都是唯一的,每个键都指向某个值。它将数据保存在内存中,速度非常快,但有容量限制,因此无法存储大量数据。而且由于不涉及磁盘,所以一切都很快。不需要查询或连接,因此无需担心太多数据建模。由于没有架构,开发人员始终可以根据需要灵活地更改数据。什么时候使用这个技术这个技术主要是作为一种缓存机制,用于在某些时候非常频繁地获取和观察部分数据所以键值技术被广泛用于其他数据库作为缓存机制宽列数据库Cassandra这个就像键值,但在类固醇上。修改此值以存储一组列而不是简单数据。通过引入列,您现在可以对相关数据进行分组,但仍然没有标准架构。因此,每个键可以指向不同的分组数据。由于没有模式,它可以处理非结构化数据,并附加了一种称为CQL的查询语言,它类似于SQL,但功能较弱。有源源不断的数据流,例如来自物联网设备、股票市场、金融交易或Netflix观看历史的数据。何时使用此技术经常写入很少更新或读取这仍然不是通用的。所以它可以用来存储我们所有不同应用程序的历史数据。文档数据库这是我们使用的最流行的数据库技巧之一。这显然由文档组成,每个文档都是一组键值对。它们是非结构化的,不需要模式。文档被分组到集合中,这些集合可以构造成逻辑层次结构。这种逻辑集合允许您以更合乎逻辑的方式对相关数据进行分组,这看起来类似于关系数据库。由于我们的数据库无法运行连接查询,我们如何一次获取所有相关数据?我们一起储存!我们鼓励数据库的非规范化,数据重复/不一致是一种权衡,我们已经为此做好了准备。读取确实很快,但是在保证数据一致性的同时写入和更新数据可能会有些困难。文档数据库非常适合通用应用程序,也可能适用于大多数应用程序、游戏和物联网。如果您真的不确定您的数据库模式,文档数据库是最好的开始方式。流行的文档型数据库当您拥有大量数据时,文档型数据库是不够的,这些数据可能彼此直接或间接相关。对于这些情况,您将不得不运行多个复杂查询,然后在前端应用程序中组合所有接收到的数据,或者您可以使用关系数据库,其中这些复杂查询由数据库管理。关系数据库我们都听说过这些数据库,最流行的是MySQL、Postgres和SQLServer。它们将继续存在,并且仍然是许多应用程序的热门选择。我们使用结构化查询语言(SQL)。“关系”的含义想象一个汽车工厂,那里有制造汽车零件的不同枢纽。假设门是在一个地方制造的,而车轮、车身和装饰件都是在不同的地方制造的。>想象中的汽车工厂蓝图每个制造的零件都有一个分配给它的唯一ID。因此,一旦必须组装汽车,您就可以从所有这些不同的位置拉出所有零件并组装汽车。对于这样的工厂设置,我们为这样的工厂创建蓝图,这使得制造汽车的整个过程非常高效和优化。在数据库中使用时,该蓝图称为模式。因此,我们需要规划数据库的架构,以确保我们的数据库非常高效地满足应用程序的数据需求。不利的一面是,随着时间的推移改变汽车工厂的布局以适应不断变化的需求会花费汽车公司大量的时间和金钱,这与大规模应用程序必须这样做的情况类似。当您的要求很明确时,请始终使用关系数据库。另外,一旦你建立了一个有能力每月生产30辆汽车的工厂,你就不能轻易地扩大你的工厂到每月生产90辆汽车。同样,我们的关系数据库可能会更努力地工作,但CockroachDB和PostgreSQL除外,它们的设计是成比例的。从好的方面来说,SQL数据库是ACID兼容的,这意味着即使读写操作在操作之间可能会失败,我们的数据有效性和完整性也不会受到损害——这使得它非常适合银行/金融相关数据,一旦模式在地方,请放心,存储的数据在验证后将始终存储在一组固定的结构中,您将在模式中定义最适合您的内容?如果你的需求很明确,并且你确定你不需要做任何大的改变,那就去做吧如果你对你的需求不太确定并且处于实验阶段,那么最好使用NoSQL数据库但是如果我们不需要创建模式并且可以将关系直接存储为数据怎么办?图数据库这里我们的数据存储在节点中,关系定义为边。很漂亮!让我们看看如何。如果你必须在一个SQL数据库中找出所有学习计算机科学的学生,你需要一个查找/中间表,为所有学习计算机科学的学生单独存储所有学生的记录。在图表中,这会更简单、更清晰,因为我们不必单独存储数据的关系部分,这是这种新样式所固有的。>关系在图表中更容易记录和维护通过这种直接显示两个节点之间关系的新方法,我们复杂的连接查询变得更加简单,与SQL相比大大提高了数据库的性能。因此,当您依赖大量连接操作时使用此类数据库,并且由于依赖性性能会降低。搜索数据库如果您正在构建像Google这样的应用程序,在小字符串查询搜索中您必须快速返回所有匹配的记录-您所说的是全文搜索引擎。这些数据库基于1999年启动的ApacheLucene项目。Algolia和Meil??isearch是全文搜索引擎。它们看起来类似于文档类型数据库。我们有一个索引并向其中添加数据对象。搜索数据库引擎将分析文档中的所有文本并创建称为倒排索引的东西。当你查询某些东西时,数据库只是去检查倒排索引,这使得整个过程看起来很快,即使对于大型数据库也是如此。我保存了最令人兴奋的一个。多模型数据库有多种选择,但最受欢迎的选择似乎是Fauna。作为应用程序开发,我们通常只关心JSON,我们可以在应用程序的前端使用它。使用Fauna,我们不必担心数据建模、模式、缩放、复制或规范化,只需获取我们的JSON数据即可。我们定义了如何使用GraphQL访问我们的数据。让我们以Instagram等应用程序为例。我们将使用JSON为用户、帖子和查询定义我们的规则。我们刚刚上传了我们的GraphQL模式-它会自动创建一个集合来存储数据和索引来查询数据。在幕后,它是如何根据您提供的GraphQL模式利用不同的范例,如关系、图形和文档。我们只需像在文档数据库中一样添加数据,就不会遇到数据建模的限制。最好的部分-它兼容酸,速度非常快。您无需担心基础设施。只需定义您需要数据的方式,云将为您处理剩下的事情。缺点显然,定价是一个缺点。伟大的事情不是免费的,但它们确实为想要学习的开发人员以及小型初创公司提供了慷慨的计划/开源选项。以下是Fauna列出的一些重要功能:我们还没有完成!关于不同的数据库,有很多东西需要学习,但我希望这是对我们开发人员可以在我们的应用程序中使用的各种选项的一个很好的介绍。