从电商系统认识数据与数据的存储

news2025/1/7 6:30:08

相信各位读者一年不知道要多少次通过电商App浏览和购买商品。既然大家对电商系统都比较熟悉,我将以电商系统作为研究对象,进一步聊聊数据与数据存储的相关内容。

比如我们在某平台搜索“文件系统”这个关键字,想看看这方面的书籍。当我们输入关键字,并单击“搜索”按钮后会列出相关商品的列表,如图所示。

这个看似非常简单的过程,其实是非常复杂的,整个过程涉及手机与数据中心数百次数据传输,并且会涉及到电商系统的多个子系统。如图是一个极度简化的电商系统,当我们通过手机搜索“文件系统”关键字时,手机App(Application的简写,也即手机应用软件)会通过https协议将查询请求发送电商的数据中心(步骤1)。手机App发送的查询请求在计算机层面也称为数据。    

用户的请求到达数据中心后会经过一个称为负载均衡器的设备。数据中心的负载均衡器会将请求路由到核心业务集群的某个节点进行处理(步骤2)。核心业务软件根据关键字从数据库查询相关信息(步骤3),根据数据库返回的信息,核心业务将其组装为页面信息后反馈给手机(步骤4),而这个页面也就是我们在手机上看到的商品列表信息了。

步骤4返回的页面是一个静态页面,其中包含很多资源,比如图书的封面和脚本等内容。这些资源在静态页面中只是一个占位符,如果想正常显示图书封面等图片资源,手机App还会请求具体的资源,如图中图书封面的图片。

图片的传输就涉及步骤5到步骤7的相关流程,或者步骤8到步骤10的流程。两者的差异是一个从缓存系统获取图片资源,另外一个是从文件系统或者对象存储系统获取图片资源。从缓存获取图片资源要比从缓存系统快的多,因此企业为了提高访问速度,会将一些比较热点商品的图片放到缓存中。上述步骤5到步骤7,或者步骤8到步骤10会被反复执行很多次,具体次数与第一次请求中涉及到的资源的数量有关。(注:实际情况还要复杂的多,因为在整个链路上还会涉及DNS解析和CDN缓存等相关内容。为了让大家容易理解,这里省略了相关内容。)    

上述一个查询请求已经涉及4种不同类型的存储系统,分别是存储结构化数据的关系型数据、存储非结构化数据的对象存储和文件系统以及缓存数据的缓存集群。

同时,对于上述4种存储系统,数据库、对象存储和文件系统系统是可以将数据持久化的软件系统。所谓持久化就是将数据保存在如硬盘或者SSD等即使系统掉电也不会丢失数据的设备上。缓存系统通常不会持久化,系统掉电后数据丢失,需要重新从持久化设备上加载数据。

除了上述与业务直接相关的存储系统外,对于电商系统通常还有两块非常重要的业务涉及存储系统,一个是运维监控系统,其中存储设备的运行状态和配置数据;另外一个是日志系统,包含业务运行的日志信息。

前面我们简要介绍了电商系统涉及的几类主要的存储系统,接下来我们介绍一下电商系统涉及的主要的数据类型。其中最主要也是最为重要的数据就是商品的相关数据,以我们直观看到的商品信息为例,其中包含商店名称、商品名称、价格、库存、商品照片的存储路径等等。

如果大家仔细观察就会发现,搜索结果遵循相同的结构,这些数据可以通过表格的方式组织。如图 所示是展示内容与数据表的对应关系。可以看出这种类型的数据结构明确,我们通常称这种类型的数据为结构化数据。

需要说明的是电商系统的结构化数据量是非常大的,关系也是非常复杂的。图中我们只是介绍了一个简单的例子,实际上可能包含上百个表格,而且表格之间还会存在关联。比如除了包含商品信息的表格外,通常还会包含账号信息、订单信息和支付记录等非常多的信息。    

图中的图片并不会存储在数据库中,而是存储在其他存储系统中,比如文件系统、对象存储或者临时存储在缓存集群中。以缓存系统为例,图片数据在缓存中以键值对的形式存储,其中“键”为文件名称,“值”为图片文件的具体内容。

图片文件的数据通常是作为一个整体存在的,必须专用软件才能打开才能看到图片的效果。如果我们用二进制工具打开文件,看到的是一堆的数字,具体如图所示。实际上,图片文件有很多格式,这些格式定义了如何描述图片中每一个点(专业术语叫像素)颜色。可以看到,像图片文字这种数据是作为一个整体存在的,并不像数据库数据那样结构清晰,这种数据称为非结构化数据。  

除了结构化数据和非结构化数据外,还有一种介于两者之间的数据,这种数据称为半结构化数据。比如上面商品信息,不仅仅可以通过SQL数据库存储,还可以通过文件以JSON字符串的形式存储。由于通过一个字符串来存储,似乎并没有清晰的格式,但是字符串内部却有比较清晰的结构,一般称这种类型的数据为半结构化的数据

  {

        “文件系统”:{

             {“名称”: “文件系统技术内幕”, “价格”:“48.36“,”URL”:”image.xx.com”},

             {“名称”: “分布式统一大数据虚拟文件系统”, “价格”:“49.53“,”URL”:”image.xx.com”}

        }

    }

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1643256.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

环形链表面试题详解

A. 环形链表1 给你一个链表的头节点 head ,判断链表中是否有环. 如果链表中有某个节点,可以通过连续跟踪 next 指针再次到达,则链表中存在环。 为了表示给定链表中的环,评测系统内部使用整数 pos 来表示链表尾连接到链表中的位置…

Typescript语法二

继承 继承是⾯向对象编程中的重要机制,允许⼀个类(⼦类或派⽣类)继承另⼀个类(⽗类或基类)的属性和⽅法。⼦类可以直接使⽤⽗类的特性,并根据需要添加新的特性或覆盖现有的特性。这种机制赋予⾯向对象程序良…

OpenCV的周期性噪声去除滤波器(70)

返回:OpenCV系列文章目录(持续更新中......) 上一篇:OpenCV如何通过梯度结构张量进行各向异性图像分割(69) 下一篇 :OpenCV如何为我们的应用程序添加跟踪栏(71) 目录 目标 理论 如何消除傅里叶域中的周期性噪声? 源代码 解释 结果 目…

C语言——指针的奥秘(1.0)

指针 一.内存和地址1.内存2.编址 二.指针变量和指针1.取地址操作符(&)2.指针变量和解引用操作符(*)1.指针变量2.拆解指针类型3.解引用操作符4.指针变量的大小 三.指针变量的类型和意义1.指针的解引用2.指针 - 整数3.void* 指针…

54.HarmonyOS鸿蒙系统 App(ArkTS)tcp socket套接字网络连接收发测试

工程代码https://download.csdn.net/download/txwtech/89258409?spm1001.2014.3001.5501 54.HarmonyOS鸿蒙系统 App(ArkTS)tcp socket套接字网络连接收发测试 import socket from ohos.net.socket; import process from ohos.process; import wifiManager from ohos.wifiMana…

redis的哨兵

文章目录 一、概念手动恢复redis主从复制的流程自动回复redis主从复制的流程 二、部署三、哨兵节点的作用演示四、哨兵节点的原理 一、概念 Redis Sentinel 相关名词解释 我主要说一个场景,就是我们上一篇讲到的redis主从复制会遇到的问题,朱姐带你如…

细粒度图像分类论文研读

细粒度图像分类论文研读 摘要Abstract1. 基于细粒度图像分类的视觉语义嵌入模型1.1 文献摘要1.2 创新点1.3 模型网络结构和方法1.3.1 问题陈述1.3.2 两级卷积神经网络1.3.3 局部化 CNN1.3.4 回归排序网络1.3.5 参数学习 1.4 实验1.4.1 数据集1.4.2 实验设置1.4.3 分类结果对比1…

3.SpringSecurity基本原理

SpringSecurity本质是一个过滤器链。十多个过滤器构成一个过滤器链。 这些过滤器在项目启动就会进行加载。每个过滤器执行放行操作才会执行下一个过滤器。 常见过滤器 FilterSecurityInterceptor 是一个方法级的权限过滤器,基本位于过滤器链的最底部。 Excepti…

图神经网络综述和学习路径

应用邻域 应用举例 应用层面(节点,连接,子图,全图) 概念区别 图神经网络本质上解决了表示学习的问题 可以把神经网络看作一个黑箱,图中的f函数 困难与挑战 现代的深度学习,如何把图输入到神经…

Qwik 和 Next.js 未来Web项目框架

Qwikover Next.js Qwik 是我进行 Web 项目开发的首选框架,而不是 Next.js 作为一名全栈工程师,我的前端之旅始于大约 10年前。从纯 JavaScript 和 jQuery 开始,然后转向了 KnockoutJS、AngularJS 和 GWT。React 出现, React 一直是…

IoTDB 入门教程 问题篇②——RPC远程连接IoTDB服务器失败

文章目录 一、前文二、发现问题三、分析问题四、检查6667端口是否监听所有IP五、检查ECS云服务器的安全组是否允许六、检查Linux防火墙是否允许 一、前文 IoTDB入门教程——导读 二、发现问题 使用本地IP127.0.0.1可以连接IoTDB服务器使用远程IPxx.xx.xx.xx却连接不到。提示你…

哥白尼高程Copernicus DEM下载(CSDN_20240505)

哥白尼数字高程模型(Copernicus DEM, COP-DEM)由欧洲航天局(European Space Agency, 简称ESA或欧空局)发布,全球范围免费提供30米和90米分辨率DEM。COP-DEM是数字表面模型(DSM),它表示地球表面(包括建筑物、基础设施和植被)的高程。COP-DEM是经过编辑的D…

java发送请求-http和https

http和https区别 1、http是网络传输超文本协议,client---- http------ server 2、httpshttpssl证书,让网络传输更安全 ,client---- httpssl------ server 3、ssl证书是需要客户端认可的,注意官方证书和jdk生成的证书的用户来使…

sql 中having和where区别

where 是用于筛选表中满足条件的行,不可以和聚类函数一起使用 having 是用于筛选满足条件的组 ,可与聚合函数一起使用 所以having语句中不能使用select中定义的名字

【设计模式】13、template 模板模式

文章目录 十三、template 模板模式13.1 ppl13.1.1 目录层级13.1.2 ppl_test.go13.1.3 ppl.go13.1.4 llm_ppl.go13.1.5 ocr_ppl.go 十三、template 模板模式 https://refactoringguru.cn/design-patterns/template-method 如果是一套标准流程, 但有多种实现, 可以用 template …

nodejs的ws+vue3编写聊天室的demo

nodejs编写ws服务是非常简单高效的,nodejs有众多的实现ws的库,如ws,SocketIO等,nodejs的事件线程是单线程的,所以不要在事件线程内做阻塞性的操作,耗时的操作交给工作线程或者子进程操作。 我使用nodejsvue3实现了写了…

安装vscode基础配置,es6基础语法,

https://code.visualstudio.com/ es6 定义变量 const声明常量(只读变量) // 1、声明之后不允许改变 const PI “3.1415926” PI 3 // TypeError: Assignment to constant variable. // 2、一但声明必须初始化,否则会报错 const MY_AGE /…

MySQL —— 表的基本操作

一、创建 1.语法 create table 表名称( 自定义变量1, 自定义变量2, 自定义变量3(最后一个变量末尾不需要加任何标点符号) )charset字符集 collate校验集 engine存储引擎; ps:若是不具体给字符集、校验集、储存引擎,则采用配置文件…

【网络安全产品】---应用防火墙(WAF)

what Web应用防火墙(Web Application Firewall) WAF可对网站或者App的业务流量进行恶意特征识别及防护,在对流量清洗和过滤后,将正常、安全的流量返回给服务器,避免网站服务器被恶意入侵导致性能异常等问题,从而保障…

计算机网络——Dijkstra路由算法

实验目的 实现基于 Dijkstra 算法的路由软件 实验内容 网络拓扑如图所示 实验过程 先编写开辟应该图的空间,然后给点映射数字,构建图。程序获取用户输入的学号,构建图中边的权值。接下来程序从用户输入获取最短路径的搜索起点&#xff0…