对于小白来说web开发最难的部分是数据库的设计吗,数据库的设计有什么>本领/h2>
对于一些成熟的web框架,比如Django,数据库结构搭建好了,剩下的都是自动化的。相反,如果数据库结构比较草率,之后修改那是相当麻烦。有几个原则:
1.少冗余,基本单元尽量小,尽量用>毗连/p>
2.预留扩展
3.字段类型正确选择

4.视图触发器可以设计,预留
其他的还有很多,这是个很专业的工作,复杂的还有什么范式简化之类的,太复杂的还是推荐给专业人士处理。
tips:多看看中小规模的开源应用怎么设计,可以借鉴。
web的工作架构是什么
web的工作架构:
1、浏览器的作用:用户提交请求给服务器,将服务器返回的响应解析出来
2、web服务器:接受用户请求,并给用户做出响应,Windows下有IIS ,Linux下有Apache、Nginx
3、web应用:用php、jsp、asp、aspx等开发语言开发一个web应用程序(博客、购物网站等)。运行在服务器上
4、数据库:存储数据,数据库有一个接口,在应用程序中指定连接数据库的账户>暗码/p>
5、中间件:举个例子,在Linux环境下,用Apache作为服务器想要运行一个Java程序,还需要Tomcat环境的支持,Tomcat就是一个中间件。目前Apache等服务器和中间件的区分越来越少,可以广泛理解为中间件是Apache、IIS、Nginx、Tomcat、Jboss的统称。
web端常用架构
一、单DB架构
单DB架构一般就是nginx直接upstream请求到后端Tomcat,扩容时基本是增加新的Tomcat实例,然后通过Nginx负载均衡upstream过去,此时数据库还不是瓶颈,但是当访问量达到一定级别后数据库的压力就上来了,单个数据库可能扛不住,可以通过分表分库或者读写分离加缓存来解决。
二、DB+Cache/数据库读写分离架构
此时通过使用数据库读写分离或者Redis这种缓存来支撑更大的访问量,但是使用缓存会存在与数据库数据不一致的问题,或者Redis不能直接命中数据库导致数据库压力过大,可以考虑使用Redis的主从或者用一致性哈希算法做分片的Redis集群。使用缓存这种架构,要求应用对数据一致性的要求不是很高。
三、OpenResty+Local Redis+Mysql集群架构
OpenResty首先通过Lua读取本机Redis缓存,如果命不中,则回源到后端Tomcat集群,后端Tomcat集群再读取Mysql数据库,Redis都是安装到和OpenResty同一台服务器上,OpenResty直接读取本机可以减少网络延时。Redis通过主从方式同步数据。
四、OpenResty+Redis集群+Mysql集群架构
此时架构与之前架构不同的是,此时我们使用一致性哈希算法实现Redis集群,而不是读取本机Redis,保证其中一台不可用时,只有很少的数据会丢失,防止击穿到数据库。Redis集群分片可以使用Twemproxy如果Tomcat实例很多的话,就要考虑Redis和Mysql链接数问题,因为大部分Redis/Mysql客户端都是通过连接池实现,此时链接数会成为瓶颈,一般方法是通过中间件来减少链接数。
此时的问题就是Twemproxy实例众多,应用维护、配置困难,需要在这之上做负债均衡,比如,通过LVS/HaProxy实现VIP(虚拟Ip),可以做到切换对应用透明,故障自动转移。还可以通过实现内网DNS来做其负载均衡。