前段时间因为项目需要搭建一个web服务器,后端Web框架我调研了几个,比如Python的Flask,Django,
NodeJs的Express,JavaEE的Spring,以及C++的CppCMS, 经过权衡拓展性开发效率,最后选择了Django。
也许Python不是最好的选择,但至少目前来看工作的还挺顺利。
但是当时对于数据库的选择,却走了一点弯路。因为平时对于数据库接触不多,所以一开始选择了MongoDB
作为数据库。这在初期是没啥问题的,但后来随着项目推进,产品经理不断地增加需求(我要...我要...我还要...),
数据库中各个collection的耦合读也越来越高,甚至同一个collection也有大量的冗余数据。虽然也有办法进行优化,
但是我经过查阅资料和进度考量,最后还是决定趁着项目尚未release,将NoSQL替换为关系型的数据库。
关系数据库简介
关系数据库由由埃德加·科德(IBM)在1969年左右提出。自推出后就成为商业应用的主要数据库模型(与其他数据库模型,
如分级,网络或对象模型相比)。如今已有许多商业关系数据库管理系统(RDBMS),如Oracle,IBM DB2和Microsoft SQL Server等。
也有许多免费的开源关系数据库,如MySQL,mSQL(mini-SQL)和嵌入式JavaDB(Apache Derby)等。
关系数据库将数据存储在表(table)中。一个表由行和列组成。行称为记录(record)或元组(tuple),列称为字段(field)或属性(attribute)。
数据库的表类似于电子表格。不过关系数据库可以在这些表格中产生关联,使得可以有效地存储大量的数据,以及高效地检索数据。
SQL(结构化查询语言)通常用来对关系数据库进行操作。
关系数据库设计步骤
数据库的设计对经验的要求比理论要高,因为你必须作出许多选择。数据库通常是为了某种应用的需求而高度定制的,因此,
通常在数据库设计的指导里,通常都是指出不要做什么而不是