软件开发时数据在后台是如何保存的?

热门回答:
数据的存储方式有很多种 。根据不同的需求可以做出不同的选择 。我们以开发一个问答系统为例 。来介绍一下他们的不同使用场景和方法 。
关系型数据库
利用关系型数据库比如MySQL 。是最常用的一种方式 。刚开始开发一个简单的问答系统 。你就可以建几张表:

软件开发时数据在后台是如何保存的?

文章插图
上面的实体关系图是我刚用PlantUML画的一个简化版 。帮助理解 。源代码在这里:
@startuml!define Table(name,desc) class name as \"desc\" << (T,#FFAAAA) >>!define primary_key(x) <b>x</b>!define unique(x) <color:green>x</color>!define not_null(x) <u>x</u>hide methodshide stereotypes' entitiesTable(users, \"users\n(存储用户信息)\") {primary_key(id) INTEGERnot_null(unique(username)) VARCHAR[32]not_null(password) VARCHAR[64]age SMALLINTgender SMALLINTbirthday DATETIME}Table(questions, \"questions\n(存储问题信息)\") {primary_key(question_id) INTEGERnot_null(unique(user_id)) INTEGERtitle VARCHAR[255]content VARCHAR[2048]creationTime DATETIMEupdateTime DATETIME}Table(answers, \"answers\n(存储问题的答案)\") {primary_key(answer_id) INTEGERprimary_key(question_id) INTEGERnot_null(unique(user_id)) INTEGERcontent VARCHAR[2048]creationTime DATETIMEupdateTime DATETIME}' relationships' one to may relationship, 一对多的关系users --> questions : \"1个用户提了多个问题\"users --> answers : \"1个用户写了多个问题的答案\"questions --> answers : \"1个问题有多个答案\"@enduml
我是用VSCODE的插件画的:
软件开发时数据在后台是如何保存的?

文章插图
设计好表之后就可以在MySQL里面建表 。
如果你用Java做 。可以利用JPA框架做数据存储 。简单的可以利用MyBatis 。MyBatis是一个Java持久化框架 。它通过XML描述符或注解把对象与SQL语句关联起来 。简单、容易上手 。建议刚开始可以利用这个练练手 。
软件开发时数据在后台是如何保存的?

文章插图
复杂一些的可以利用Hibernate 。Hibernate是一个开放源代码的对象关系映射框架 。如果你喜欢面向对象的编程 。那就可以利用Hibernate把你设计的对象映射到数据库的各个表 。方便存取 。但是这个相对复杂 。学习起来比较花时间 。
软件开发时数据在后台是如何保存的?

文章插图
NoSQL
你也可以利用NoSQL数据库 。也非常简单 。比如mongodb. mongodb是一个基于分布式文件存储的开源数据库系统 。你可以把上面的表都设计成JSON文档 。直接存储在mongodb里面 。
软件开发时数据在后台是如何保存的?

文章插图
全文检索 elasticsearch
如果要支持全文检索 。你需要用Elasticsearch 。Elasticsearch是一个分布式的全文搜索引擎 。
软件开发时数据在后台是如何保存的?

文章插图
缓存 Redis
如果你的用户量大了 。要提高系统的访问速度 。你需要用到各种缓存技术比如redis 。
软件开发时数据在后台是如何保存的?

文章插图
消息系统 Kafka
如果你的系统发展壮大了 。又开发出很多其他的系统 。比如推荐系统 。审核系统 。你的各个系统之间需要消息通讯 。你还需要用到消息系统 Kafka 。
软件开发时数据在后台是如何保存的?

文章插图
我有几个视频 。利用动画来演示和解释Kafka的原理 。欢迎观看和评论 。
软件开发时数据在后台是如何保存的?

文章插图
分布式存储 Hadoop HDFS
随着你的用户的增加 。内容的增加 。你的网站每天产生几百GB甚至几百TB的数据 。你就需要用到分布式存储 Hadoop 。
软件开发时数据在后台是如何保存的?

文章插图
我也分享了一些关于Hadoop的视频 。利用动画来演示Hadoop的原理实现 。欢迎关注 。
软件开发时数据在后台是如何保存的?

文章插图
总结
根据系统的不同需求和不同发展阶段 。可以选择不同的存储方式 。如果是一开始为了验证自己的产品的想法 。也就是做PoC (prove of concept) 。那就可以选择简单易用的 。比如MySQL 。MongoDB等 。等将来系统发展了 。根据需要再升级存储方式 。比如ES 。redis 。kafka还有hadoop 。
上面说的各种存储方式都支持各种编程语言 。Java 。Python 。Ruby 。NodeJS等等 。简单易用 。
如果是个人学习技术 。建议从简单的开始 。做一个小的项目 。比如我给的问答的例子 。慢慢体会不同的技术的不同使用方法和应用场景 。
希望可以帮助到你 。有问题可以在评论区提问 。我会一一解答 。
本人 。@小马过河Vizit 。专注于分布式系统原理和实践分享 。希望利用动画生动而又准确地演示抽象的原理 。
关于我的名字 。小马过河Vizit 。意为凡事像小马过河一样 。需要自己亲自尝试、探索才能获得乐趣和新知 。Vizit是指Visualize it的缩写 。一图胜千言 。希望可以利用动画来可视化抽象的原理 。
欢迎关注 。点赞! 谢谢支持 。
其他观点:
用我的经验 。换您的时间 。下面只回答重点:
1、软件的数据一般来源于用户从页面录入 。或者从终端设备采集(比如录音设备、摄像设备等) 。也就是说后台保存的数据不仅限于简单的字符类型 。也包括二进制类型 。
2、数据从前端通过网络传递给后端 。后端程序执行保存操作 。
3、数据需要保存 。必须经过序列化 。然后存储到存储到持久化设备上 。一般说的就是磁盘 。
4、存储到硬盘上有很多种方式 。可以通过文件存储、也可以通过数据库存储 。
5、通过数据库存储 。本质上也是存储到磁盘的文件内 。数据库只是一个软件 。将数据有序的进行存储和组织 。让他们相互关联 。
6、数据库存储当然也有很多种 。mysql、oracle、sqlserver、mongodb等等 。
总结:后端存储数据本质上就是存储到磁盘的文件上 。区别在于用什么存储而已 。后端程序都有存储数据的接口可以使用 。这些接口与操作系统之间交互 。完成最终的数据存储 。
软件开发时数据在后台是如何保存的?

文章插图
其他观点:
你说的是代码保存 。还是成品软件保存数据 。一般有以下方式保存数据 。
1.保存软件设置信息 。一般为配置文件形式 。比如.ini,.config等等 。直接写文件到磁盘里 。软件每次启动时读取文件里面相关健值 。或者直接写注册表里 。
【软件开发时数据在后台是如何保存的?】2.数据信息 。一般都是以数据库形式保存到文件或者连接数据库保存到数据库里面的 。读的时候直接从数据库文件或者连接数据库读 。