热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

怎么为应用程序选择合适的数据库

这篇文章主要讲解了“怎么为应用程序选择合适的数据库”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来

这篇文章主要讲解了“怎么为应用程序选择合适的数据库”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“怎么为应用程序选择合适的数据库”吧!

内存数据库 Redis

我们的数据库的结构就像一个JSON对象-每个键都是唯一的,每个键都指向某个值。

怎么为应用程序选择合适的数据库

它保留了内存中的数据,这非常快,但具有容量限制,因此您无法存储大量数据。并且由于没有涉及的磁盘,一切都快速燃烧。

无需查询或联接,因此无需担心太多数据建模。由于没有架构,因此开发人员始终可以根据自己的需要灵活地更改数据。

怎么为应用程序选择合适的数据库

何时使用这种技术

  • 该技术主要用作缓存机制,用于某些时候非常频繁地获取和观察部分数据

  • 因此,关键值技术与其他数据库一起广泛使用作为缓存机制

宽列数据库 Cassandra

这就像钥匙值,但在类固醇上。修改该值以存储一组列,而不是简单数据。

怎么为应用程序选择合适的数据库

通过引入列,您现在可以对相关数据进行分组,但是仍然没有标准架构。因此,每个键都可以指向不同的分组数据。

由于没有模式,它可以处理非结构化数据,并附上一个名为CQL的查询语言,这类似于SQL,但方法不那么强大。

数据源源不断,例如来自IoT设备,股票市场,金融交易或Netflix的观看历史记录。

怎么为应用程序选择合适的数据库

何时使用此技术

  • 经常写

  • 少更新或读取

这仍然不是通用的。因此,它可以用于存储来自我们所有不同应用程序的历史数据。

文档数据库

这是我们使用的最受欢迎的数据库技巧之一。这显然由文档组成,每个文档都是一组键值对。它们是非结构化,不需要模式。

怎么为应用程序选择合适的数据库

文档将组合成集合,并且这些集合可以构造成逻辑层次结构。

这种逻辑集合允许您以更逻辑的方式对相关数据进行分组,这似乎类似于关系数据库。

怎么为应用程序选择合适的数据库

由于我们的数据库无法运行联接查询,我们该如何立即获取所有相关数据?

我们将它全部存储在一起!我们鼓励数据库的非规范化,数据复制/不一致是一种折衷,我们已准备好。

读取速度确实很快,但是在确保数据一致性的同时写入和更新数据可能会有些困难。

文档数据库非常适合通用应用程序,并且可能适合大多数应用程序,游戏和IoT。

如果您真的不确定数据库架构,那么文档数据库是最佳启动方式。

流行的文档类型数据库

怎么为应用程序选择合适的数据库

当您有大量数据时,文档风格的数据库就不够用了,它们可能直接或间接地相互关联。

对于这些情况,您将必须运行多个复杂查询,然后在前端应用程序中合并所有接收到的数据,或者可以使用关系数据库,其中这些复杂查询由数据库管理。

关系型数据库

我们都听说过这些数据库,最受欢迎的是MySQL,Postgres和SQL Server。他们在这里一直在这里,仍然是许多应用程序的热门选择。

我们使用结构化查询语言(SQL)。

“关系”的意义

想象一下一家汽车工厂,那里有制造汽车零件的不同轮毂。

假设门是在一个地方制造的,而轮子,车身和内饰都是在各自不同的位置制造的。

怎么为应用程序选择合适的数据库

> Imaginary car-factory blueprint

每个制造的零件都有一个唯一的ID分配给它。

因此,一旦必须组装汽车,您就可以从所有这些不同的位置提取所有零件并组装汽车。

怎么为应用程序选择合适的数据库

对于这样一个工厂建立建立,我们会为这样的工厂创建蓝图,这使得制造汽车的整体过程非常有效和最佳。当它在数据库中使用时,此蓝图称为模式。

因此,我们需要规划数据库的模式,以确保我们的数据库对应用程序的数据需求非常有效。

不足之处

  • 就像如何随着时间的推移,改变汽车工厂的布局与改变要求一致,将花费汽车公司一大堆时间和金钱,这是一个类似的情况,当大规模的应用程序必须这样做时。当您的要求清晰时,请务必使用关系数据库。

  • 此外,一旦您每月建造一个具有制造30辆汽车的工厂,您就无法轻易扩展您的工厂,每月制造90辆汽车。同样,我们的关系数据库可能更加努力,但蟑螂DB和PostgreSQL有一些例外,旨在以比例为准。

好的方面

  • SQL数据库符合ACID标准,这意味着即使读写操作之间可能会失败,我们的数据有效性和完整性也不会受到损害-这使其非常适合与银行/金融相关的数据

  • 有一个模式到位后,可以放心,存储的数据将始终存储在一组验证之后的固定结构中,您将在架构中定义

最适合您的是什么?

  • 如果您的要求很明确,并且确定您不需要对要求进行任何大的更改,请继续执行此操作

  • 如果您不太确定需求并处于实验阶段,最好使用NoSQL数据库

但是,如果我们不需要创建架构并可以将关系直接存储为数据怎么办?

图数据库

这里我们的数据存储在节点中,并且关系定义为边。非常漂亮!让我们看看如何。

如果您必须在SQL数据库中找出所有学习计算机科学的学生,您需要一个查找/中间商表,该表将所有学生的记录分开地存储了学习计算机科学的所有学生。

怎么为应用程序选择合适的数据库

在图形中,这将更加简单明了,因为我们不必分别存储数据中的关系部分,而它本能地是这种新样式。

怎么为应用程序选择合适的数据库

> Relationships are easier to record and maintain in graphs

通过这种直接显示两个节点之间关系的新方法,我们复杂的联接查询变得更加简单,与SQL相比,极大地提高了数据库的性能。

因此,当您依赖于大量加入操作时使用此类数据库,并且由于该依赖于性能劣化。

搜索数据库

如果您要构建Google之类的应用程序,那么在小字符串查询搜索中,您必须快速返回所有匹配的记录-您所说的是全文搜索引擎。

这些数据库基于1999年开始的Apache Lucene项目。

Algolia和Meilisearch是全文搜索引擎。

它们看起来类似于文档类型的数据库。我们有一个索引,并向其中添加了数据对象。搜索数据库引擎将分析文档中的所有文本,并创建称为反向索引的内容。

当您查询某些内容时,数据库只会去检查反向索引,这使整个过程看起来很快,即使对于大型数据库也是如此。

我把最激动人心的一个保存下来。

多模型数据库

那里有多种选择,但最受欢迎的选择似乎是动物区系。

作为应用程序开发,我们通常只关心JSON,我们可以在我们的应用程序的前端中消耗。

通过Fauna,我们不必担心数据建模,架构,缩放,复制或归一化,并且只需获取我们的JSON数据。我们定义了如何使用GraphQL访问我们的数据。

让我们拍摄类似instagram的应用程序的示例。我们将使用JSON定义我们的规则,用于用户,帖子和查询。

怎么为应用程序选择合适的数据库

我们刚上传了我们的GraphQL架构 - 它会自动创建一个存储数据和索引来查询数据的集合。

在幕后,它是如何利用基于您提供的GraphQL模式的关系,图形和文档等不同的范例。

我们只是以与文档数据库中的相同方式添加我们的数据,并且我们并不遇到数据建模的局限性。

最好的部分 - 这是符合酸性的,非常快。

您无需担心基础架构。只需定义您如何需要数据,云将为您处理其余的工作。

缺点

显然,定价是不利的。伟大的事物不是免费的,但是对于想要学习的开发人员以及小型创业公司,它们确实提供了慷慨的计划/开源选项。

怎么为应用程序选择合适的数据库

以下是Fauna列出的一些重要功能:

怎么为应用程序选择合适的数据库

感谢各位的阅读,以上就是“怎么为应用程序选择合适的数据库”的内容了,经过本文的学习后,相信大家对怎么为应用程序选择合适的数据库这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是编程笔记,小编将为大家推送更多相关知识点的文章,欢迎关注!


推荐阅读
  • 本文介绍了如何在Mac上使用Pillow库加载不同于默认字体和大小的字体,并提供了一个简单的示例代码。通过该示例,读者可以了解如何在Python中使用Pillow库来写入不同字体的文本。同时,本文也解决了在Mac上使用Pillow库加载字体时可能遇到的问题。读者可以根据本文提供的示例代码,轻松实现在Mac上使用Pillow库加载不同字体的功能。 ... [详细]
  • 本文介绍了在开发Android新闻App时,搭建本地服务器的步骤。通过使用XAMPP软件,可以一键式搭建起开发环境,包括Apache、MySQL、PHP、PERL。在本地服务器上新建数据库和表,并设置相应的属性。最后,给出了创建new表的SQL语句。这个教程适合初学者参考。 ... [详细]
  • 本文介绍了如何使用PHP向系统日历中添加事件的方法,通过使用PHP技术可以实现自动添加事件的功能,从而实现全局通知系统和迅速记录工具的自动化。同时还提到了系统exchange自带的日历具有同步感的特点,以及使用web技术实现自动添加事件的优势。 ... [详细]
  • 本文介绍了在rhel5.5操作系统下搭建网关+LAMP+postfix+dhcp的步骤和配置方法。通过配置dhcp自动分配ip、实现外网访问公司网站、内网收发邮件、内网上网以及SNAT转换等功能。详细介绍了安装dhcp和配置相关文件的步骤,并提供了相关的命令和配置示例。 ... [详细]
  • Linux重启网络命令实例及关机和重启示例教程
    本文介绍了Linux系统中重启网络命令的实例,以及使用不同方式关机和重启系统的示例教程。包括使用图形界面和控制台访问系统的方法,以及使用shutdown命令进行系统关机和重启的句法和用法。 ... [详细]
  • 开发笔记:加密&json&StringIO模块&BytesIO模块
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了加密&json&StringIO模块&BytesIO模块相关的知识,希望对你有一定的参考价值。一、加密加密 ... [详细]
  • 本文讨论了在Windows 8上安装gvim中插件时出现的错误加载问题。作者将EasyMotion插件放在了正确的位置,但加载时却出现了错误。作者提供了下载链接和之前放置插件的位置,并列出了出现的错误信息。 ... [详细]
  • CSS3选择器的使用方法详解,提高Web开发效率和精准度
    本文详细介绍了CSS3新增的选择器方法,包括属性选择器的使用。通过CSS3选择器,可以提高Web开发的效率和精准度,使得查找元素更加方便和快捷。同时,本文还对属性选择器的各种用法进行了详细解释,并给出了相应的代码示例。通过学习本文,读者可以更好地掌握CSS3选择器的使用方法,提升自己的Web开发能力。 ... [详细]
  • 如何使用Java获取服务器硬件信息和磁盘负载率
    本文介绍了使用Java编程语言获取服务器硬件信息和磁盘负载率的方法。首先在远程服务器上搭建一个支持服务端语言的HTTP服务,并获取服务器的磁盘信息,并将结果输出。然后在本地使用JS编写一个AJAX脚本,远程请求服务端的程序,得到结果并展示给用户。其中还介绍了如何提取硬盘序列号的方法。 ... [详细]
  • 如何在php中将mysql查询结果赋值给变量
    本文介绍了在php中将mysql查询结果赋值给变量的方法,包括从mysql表中查询count(学号)并赋值给一个变量,以及如何将sql中查询单条结果赋值给php页面的一个变量。同时还讨论了php调用mysql查询结果到变量的方法,并提供了示例代码。 ... [详细]
  • Python SQLAlchemy库的使用方法详解
    本文详细介绍了Python中使用SQLAlchemy库的方法。首先对SQLAlchemy进行了简介,包括其定义、适用的数据库类型等。然后讨论了SQLAlchemy提供的两种主要使用模式,即SQL表达式语言和ORM。针对不同的需求,给出了选择哪种模式的建议。最后,介绍了连接数据库的方法,包括创建SQLAlchemy引擎和执行SQL语句的接口。 ... [详细]
  • 31.项目部署
    目录1一些概念1.1项目部署1.2WSGI1.3uWSGI1.4Nginx2安装环境与迁移项目2.1项目内容2.2项目配置2.2.1DEBUG2.2.2STAT ... [详细]
  • 一句话解决高并发的核心原则
    本文介绍了解决高并发的核心原则,即将用户访问请求尽量往前推,避免访问CDN、静态服务器、动态服务器、数据库和存储,从而实现高性能、高并发、高可扩展的网站架构。同时提到了Google的成功案例,以及适用于千万级别PV站和亿级PV网站的架构层次。 ... [详细]
  • python3 nmap函数简介及使用方法
    本文介绍了python3 nmap函数的简介及使用方法,python-nmap是一个使用nmap进行端口扫描的python库,它可以生成nmap扫描报告,并帮助系统管理员进行自动化扫描任务和生成报告。同时,它也支持nmap脚本输出。文章详细介绍了python-nmap的几个py文件的功能和用途,包括__init__.py、nmap.py和test.py。__init__.py主要导入基本信息,nmap.py用于调用nmap的功能进行扫描,test.py用于测试是否可以利用nmap的扫描功能。 ... [详细]
  • 大数据Hadoop生态(20)MapReduce框架原理OutputFormat的开发笔记
    本文介绍了大数据Hadoop生态(20)MapReduce框架原理OutputFormat的开发笔记,包括outputFormat接口实现类、自定义outputFormat步骤和案例。案例中将包含nty的日志输出到nty.log文件,其他日志输出到other.log文件。同时提供了一些相关网址供参考。 ... [详细]
author-avatar
竹茹士弘宜来
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有