软件系统的数据存储设计
数据库的设计是系统开发必不可少的环节,数据库设计的合理性将会节省大量数据存储空间,同时保证了数据的完整性以及整个系统运行的畅通高效性。此外,优秀的数据库设计还应当考虑到数据库应用系统的后续开发,保证数据查询的高效性,满足用户的应用需求,加快网页访问浏览速度,给用户带来良好的使用体验等等。
一般涉及大规模数据的查询处理时,用户查询数据的效率就会体现的越发明显,而查询数据的效率将会直接影响到用户的使用感,如果数据库表设计不合理, 数据访问迟缓造成系统的卡顿,这对于系统的性能而言无疑是致命的。因此在系统设计的初期就需要对数据的特征作详细分析整理,当充分了解到被处理数据互相之间的联系后再设计数据库表就会避免很多后续工作意外的发生,既减少冗余和耦合同时也减少了不必要的工作量。如下表所示是系统内所有数据表的说明,后续主要对他们中的核心字段以及字段对应之间的联系和信息进行介绍说明。
RDBMS 读写分离
读写分离是基于主从复制架构,一个主库,有多个从库,主库主要负责写,写完后主库会自动把数据给同步给从库。主从复制,是用来建立一个和主数据库完全一样的数据库环境,称为从数据库,主数据库一般是准实时的业务数据库。一台服务器充当主服务器,而另外一台服务器充当从服务器。此时主服务器会将更新信息写入到一个特定的二进制文件中,并会维护文件的一个索引用来跟踪日志循环,这个日志可以记录并发送到从服务器的更新中去。一台从服务器连接到主服务器时,从服务器会通知主服务器从服务器的日志文件中读取最后一次成功更新的位置。然后从服务器会接收从哪个时刻起发生的任何更新,然后锁住并等到主服务器通知新的更新。
读写分离原理图
主库将变更写入binlog日志,然后从库连接到主库之后,从库有一个 IO 线程,将主库的 binlog 日志拷贝到自己本地,写入一个 relay中继日志(relay log)中。接着从库中有一个SQL线程会从中继日志读取binlog,然后执行binlog日志中的内容,也就是在自己本地再次执行一遍SQL语句,从而使从服务器和主服务器的数据保持一致。
主从配置就是围绕这个原理配置,也就是说:从库会生成两个线程,一个I/O线程,一个SQL线程;I/O线程会去请求主库的binlog,并将得到的binlog写到本地的relay-log(中继日志)文件中;主库会生成一个log dump线程,用来给从库I/O线程传binlog;SQL线程,会读取relay log文件中的日志,并解析成sql语句逐一执行。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。