我的编程空间,编程开发者的网络收藏夹
学习永远不晚

常见数据库介绍和使用场景

短信预约 信息系统项目管理师 报名、考试、查分时间动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

常见数据库介绍和使用场景

常见数据库介绍和使用场景

在构建系统时要进行设计考虑和权衡。

1.介绍

要选择正确的存储解决方案,需要以下考虑。

关键因素

  • 数据结构
  • 查询模式
  • 您需要处理的数量或规模

storage-768x1144.png

2.缓存解决方案

  • 如果您经常调用数据库或远程调用具有高延迟的独立服务,则可能需要[缓存](https://interviewdaemon.com/courses/design-concepts-a-to-z/lessons / caching /)您本地的一些数据。
  • 一些关键值缓存存储解决方案是Memcached,Hazelcast,Redis等
  • 大多数使用Redis,Memcache和Elasticache。

3.文件存储解决方案

  • 文件存储用作图像,视频等的数据存储。
  • 数据库旨在存储可以查询的信息,而您不需要查询的文件,只需按原样提供它们即可。这是当我们使用称为Blob存储的东西时。
  • Amazon S3主要用于Blob存储

4.CDN

  • 通常,blob存储与[内容交付网络](https://interviewdaemon.com/courses/design-concepts-a-to-z/lessons/content-distribution-network-cdn/)或[CDN](https://interviewdaemon.com/courses/design-concepts-a-to-z/lessons/content-distribution-network-cdn/)。
  • CDN是遍布全球的服务器网络,可在不同地理位置提供内容并减少延迟。
  • 如果您要从中获取内容的服务器离您的地理位置更近,则将以更快的方式将内容传递给您。

5.文本搜索功能

5.1.文本搜索

  • 假设您要构建搜索功能,用户可以在其中按电影,流派,演员,女演员,导演等进行搜索。
  • 在这里,您可以使用诸如Solr之类的搜索引擎
  • 它建立在Apache Lucene之上

5.2.模糊搜索

  • 如果您在搜索中搜索拼写错误/不正确的单词,并且搜索结果中包含正确的单词结果,则称为模糊搜索。
  • 搜索引擎存储临时数据或索引数据,并且不保证长期数据,因此搜索存储不用作主存储。
  • 例如,如果我们输入“ intraviw”,它将根据“面试”进行搜索
  • 我们可以从主数据库中将数据加载到它们,以减少搜索延迟并提供基于模糊和相关性的文本搜索。
  • 可以支持模糊搜索的Elasticsearch。
  • 它也是基于Apache Lucene构建的

6.时间系列数据库

  • 假设我们正在尝试建立度量跟踪系统,或者在任何基于时间的数据库中我们都需要一个时间序列数据库。
  • 与标准关系数据库不同,时间序列数据库永远不会被随机更新。
  • 大部分会依序追加。
  • 相对于随机读取,在特定时间范围内会有更多的批量读取。在过去1周,10天,1个月,1年等时间内,有多少人观看了编解码器视频。
  • 时间序列数据库的一些示例是OpenTSDB,InfluxDB等。
  • 我们还可以使用任何非关系时间序列数据库。

7.分析和数据仓库

  • 我们需要一个大型数据库来转储可供我们使用的所有数据,以执行分析。
  • 主要用于离线报告,而非事务性
  • 存储所有数据,以便他们可以执行分析。
  • HDFS通常用于存储海量数据
  • Hadoop和Spark是非常常用的数据仓库和处理。

8.SQL与NoSQL

8.1.SQL

  • 结构取决于我们用来确定将使用哪种类型的因素
  • 如果您需要[ACID](https://interviewdaemon.com/courses/design-concepts-a-to-z/lessons/acid-vs-base-property/)属性,则需要使用关系DBMS。
  • 一些示例是MySQL,Oracle,Postgres等
  • 付款系统主要需要交易和原子性。
  • [强一致性](https://interviewdaemon.com/courses/design-concepts-a-to-z/lessons/database-consistency/)主要可以通过SQL数据库来实现。

8.2.NoSQL

  • 假设您正在尝试为诸如Amazon之类的商品建立目录,您想在其中存储有关具有各种属性的不同产品的信息。
  • 例如,不同产品的这些属性通常不同。药品将有有效期,但冰箱将具有能量等级。
  • 在这种情况下,我们的数据不能表示为表格。这意味着我们需要使用NoSQL数据库。
  • 如果您需要[BASE](https://interviewdaemon.com/courses/design-concepts-a-to-z/lessons/acid-vs-base-property/)属性,则可以使用非关系数据库前进。
  • 对于[最终一致性](https://interviewdaemon.com/courses/design-concepts-a-to-z/lessons/database-consistency/),我们可以使用NoSQL数据库
  • 最常见的NoSQL DB是MongoDB,Cassandra,DynamoDB

8.2.1.基于文档(基于查询的数据)

  • 如果我们拥有大量数据-不仅是数量,而且还有各种各样的属性-并且我们需要运行各种各样的查询,则需要使用一种称为Document DB的东西。
  • 使用文档数据库,随机查询或其他查询最有效
  • Couchbase或MongoDB是一些常用的文档数据库

8.2.2.图形存储

  • 这些类型的数据库使数据可视化更加容易。
  • 它们非常善于在节点的帮助下存储不同数据点之间的关系。
  • 图形存储可能不是最可扩展的数据库。
  • 但是,它们在防止欺诈等使用案例方面效率很高。
  • 图形数据库的常见示例是Neo4j 和 JanusGraph。

8.2.3.Key-value 存储

  • 这些都是非常简单的数据库管理系统,存储关键值对。
  • 最终目标是快速获取基本数据。
  • 这些类型的数据库的常见用例是排行榜和购物车数据。
  • redis是流行的key value 存储。

8.2.4.柱状数据库(不断增加的数据)

  • 有限的查询种类,但是数据库的大小持续快速增加。例如订单,目录
  • 现在,Uber司机的数量将逐日增加,即每天收集的数据也会逐日增加。这成为越来越多的数据。
  • 在这种情况下,我们使用诸如Cassandra或HBase之类的列式数据库。

9.不同数据库的组合

示例:Amazon.com

  • 对于一个我们只有一件库存产品,但有多个用户试图购买它的产品,它应该只卖给一个用户,这意味着我们在这里需要ACID。因此,一个明显的选择应该是像MySQL这样的关系数据库。
  • 与亚马逊产品相关的数据将会不断增加,并且会有各种各样的属性。我们应该使用像Cassandra这样的Columnar NoSQL数据库。。
  • 我们可以在MySQL数据库中存储尚未交付的订单数据,一旦订单完成,我们可以将其移到Cassandra永久存储。。
  • 用于报告系统有多少人购买了一个特定的项目。因此,报告不能针对单个产品,而应该针对产品的子集,这些产品可以在Cassandra或MySQL中。这样的需求就是我们最好的选择是像Mongo DB这样的文档DB的一个例子。
  • 假设您想要查看上个月有多少人买了糖,您可以从Mongo DB获取订单id,并使用此订单id从Cassandra或MySQL获取其余数据。

资料来源:https://www.codekarle.com/system-design/Database-system-design.html https://towardsdatascience.com/choosing-the-right-database-in-a-system-design-interview-b8af9c6dc525

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

常见数据库介绍和使用场景

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

常见数据库介绍和使用场景

在构建系统时要进行设计考虑和权衡。1.介绍要选择正确的存储解决方案,需要以下考虑。关键因素数据结构查询模式您需要处理的数量或规模2.缓存解决方案如果您经常调用数据库或远程调用具有高延迟的独立服务,则可能需要[缓存](https://interviewdaemo
常见数据库介绍和使用场景
2018-03-25

Redis数据库的应用场景介绍

一、MySql+Memcached架构的问题 实际MySQL是适合进行海量数据存储的,通过Memcached将热点数据加载到cache,加速访问,很多公司都曾经使用过这样的架构,但随着业务数据量的不断增加,和访问量的持续增长,我们遇到了很多
2022-06-04

Redis数据库的使用场景介绍(避免误用Redis)

Redis 是目前 NoSQL 领域的当红炸子鸡,它象一把瑞士军刀,小巧、锋利、实用,特别适合解决一些使用传统关系数据库难以解决的问题。但是 Redis 不是银弹,有很多适合它解决的问题,但是也有很多并不适合它解决的问题。另外,Redis
2022-06-04

Redis常用数据结构介绍和业务应用场景分析

redis内置了很多常用数据结构,了解这些数据结构的功能和应用场景能够让我们在需求开发时灵活运用来解决实际问题。

Redis中5种数据结构的使用场景介绍

一、redis 数据结构使用场景 原来看过 redisbook 这本书,对 redis 的基本功能都已经熟悉了,从上周开始看 redis 的源码。目前目标是吃透 redis 的数据结构。我们都知道,在 redis 中一共有5种数据结构,那每
2022-06-04

Oracle数据库常用数据类型介绍

Oracle数据库是一种常用的关系型数据库管理系统,它支持多种数据类型以满足不同的需求。在使用Oracle数据库时,了解数据库的数据类型是非常重要的。本文将介绍Oracle数据库中常用的数据类型,并附带具体的代码示例。一、数值型数据类型
Oracle数据库常用数据类型介绍
2024-03-08

css 多种背景的使用场景和技巧、优点介绍

本篇内容主要讲解“css 多种背景的使用场景和技巧、优点介绍”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“css 多种背景的使用场景和技巧、优点介绍”吧!【 】CSS background是最常
2023-06-07

Python中使用len函数的用法和常见应用场景

Python中len函数的用法和应用场景在Python中,len函数是用于获取对象的长度或项数的内置函数。len函数主要用于字符串、列表、元组、字典和集合等数据类型,通过返回一个整数来表示对象的长度或者项数。在本文中,我们将详细介绍len
Python中使用len函数的用法和常见应用场景
2024-01-13

专业版数据库常用表介绍

专业版数据库常用表介绍ICTransactionType单据类型表,FTemplateID?是关联模板信息表的字段,FID?关联ICStockBill?中的?FTranType字段。ICTemplate单据模板信息主表ICTemplateEntry单据模板信息

	专业版数据库常用表介绍
2020-01-19

MySQL中的数据类型及其应用场景介绍

MySQL是一种常见的关系型数据库管理系统,广泛应用于各种系统和应用程序中。在MySQL中,数据以不同的数据类型存储在表中。本文将介绍MySQL中常见的数据类型及其应用场景,并附有代码示例。一、整数类型整数类型(INT):用于存储正负整数值
2023-10-22

几种常用关系型数据库介绍

今天我们就专门来聊一聊常见的关系型数据库管理系统都有哪些,各自有什么特点。

向量数据库简介和五个常用的开源项目介绍

在人工智能领域,有大量的数据需要有效的处理。随着我们对人工智能应用,如图像识别、语音搜索或推荐引擎的深入研究,数据的性质变得更加复杂。这就是向量数据库发挥作用的地方。

五种Redis常见数据类型的使用场景及注意事项

可维护性是我们在实际开发系统时,需要认真考虑的的一个重要方面。它决定了系统修改、修复和更新的难易程度。只有当所有组件都得到良好维护并且软件项目没有什么不同时,系统才会以最佳方式运行。

Oracle数据库中表锁定的常见场景及解决方案

Oracle数据库中表锁定的常见场景及解决方案在Oracle数据库中,表锁定是一个常见的数据库性能问题,当多个会话同时访问同一个表时,可能会导致表出现锁定,进而影响系统的性能和稳定。本文将会讨论一些常见的表锁定场景,并提供相应的解决方案和
Oracle数据库中表锁定的常见场景及解决方案
2024-03-03

Java 中 indexOf 函数的常见使用场景有哪些?(Java的indexof函数有哪些使用场景)

在Java编程中,indexOf函数是一个非常常用且实用的方法,它主要用于在字符串中查找指定字符或子字符串的索引位置。以下是indexOf函数的一些常见使用场景:一、查找单个字符的索引
Java 中 indexOf 函数的常见使用场景有哪些?(Java的indexof函数有哪些使用场景)
Java2024-12-23

编程热搜

目录