半点优化网 http://www.bdxc.net/
当前位置首页 > 网站建设> 正文

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

2022-05-17 17:33:27 暂无评论 229 网站建设 软件开发   后台   保存

数据的存储方式有很多种。根据不同的需求可以做出不同的选择。我们以开发一个问答系统为例,来介绍一下他们的不同使用场景和方法。

关系型数据库利用关系型数据库比如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的缩写。一图胜千言,希望可以利用动画来可视化抽象的原理。

欢迎关注,点赞! 谢谢支持。

猜你喜欢