首頁 後端開發 php教程 数据库的设计解决办法

数据库的设计解决办法

Jun 13, 2016 pm 01:07 PM
linux memcache memcached nosql

数据库的设计
1.评论:如何保证用户购买过商品才可以评论,必须只能评论一次,1件商品评论一次,当再次购买的时候,可以继续评论一次,就如:淘宝网的评论系统,说说你的思路.

2.文章页浏览次数:浏览的次数是如何统计的,难道其它的网站也是用数据库做的吗?每次浏览+1,如果量大的话,是不是给数据库系统造成压力? 如果不是,那是用什么统计.



------解决方案--------------------
2.日志文件追加写实现的,linux下专门开了一个服务,不停地追加,定时处理数据取的不同操作的访问量,最后生成excel通过自动邮件交给数据部门。这么一个流程。。。
1的话方法多了去了,不过效率、稳定什么的就不好说了,没试过。肯定是和数据库设计有关吧。
------解决方案--------------------
我回答你第2个问题,如果瓶颈在数据库那么可以采取memcache中间缓存的方式来缓存.每一个小时或者半个小时统一更新一次数据库.
------解决方案--------------------
1.评论:如何保证用户购买过商品才可以评论,必须只能评论一次,1件商品评论一次,当再次购买的时候,可以继续评论一次,就如:淘宝网的评论系统,说说你的思路.
这个问题比较简单,用户购买的时候是有订单的,评论之前查看一下这个用户是否在订单库里购买过该商品,如果有则查询一下购买数量,这样就可以限制评论次数了,评论完毕之后在订单库里做一个已经评论过的标记.

2.文章页浏览次数:浏览的次数是如何统计的,难道其它的网站也是用数据库做的吗?每次浏览+1,如果量大的话,是不是给数据库系统造成压力? 如果不是,那是用什么统计.
这个问题,我的做法是:采用缓存的方式,最常见的缓存方法是memcache和文件缓存,memcache好一点,文件缓存会给服务器造成IO的压力,推荐使用memcahce,当用户浏览的时候先读取缓存中是否有该文章的浏览次数记录,如果没有找到记录则建立针对该文章的一条记录,同时计数为1,下一次有人访问的时候再次读取缓存,让计数加1,当该文章的计数达到10次(次数你可以自定义)的时候就清理掉缓冲中该文章的浏览计数,同时把次数写入数据库.
基本原理就是:不到10次就存入缓存,到了10次清理缓存并更新数据库中的浏览次数.这样就是浏览数达到10次再重新操作一次数据库,有效的降低了数据库的压力.
------解决方案--------------------
首先想说的是数据库比你想象的要强大得多. 


------解决方案--------------------
1.评论:如何保证用户购买过商品才可以评论,必须只能评论一次,1件商品评论一次,当再次购买的时候,可以继续评论一次,就如:淘宝网的评论系统,说说你的思路.

购买的时候会生成一个订单id对吧?把评论表和这个订单id对应上,每个id只能在评论表内评论一次

2.文章页浏览次数:浏览的次数是如何统计的,难道其它的网站也是用数据库做的吗?每次浏览+1,如果量大的话,是不是给数据库系统造成压力? 如果不是,那是用什么统计.

小应用可以直接数据库,大的话可以memcached,有个自增的接口,然后定时dump数据到sql即可

------解决方案--------------------
为什么总是想象数据库是不堪一击的呢?
如果用文件做载体,那么关系型数据库也是用文件存储数据的
如果用 memcached 作载体,那么 nosql 也是基于内存的

简单的操作文件或内存,貌似速度要快些。但你还需要用大量的代码来管理和解决冲突
综合效率就不如直接数据库了

------解决方案--------------------

探讨

首先想说的是数据库比你想象的要强大得多.
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
1 個月前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳圖形設置
1 個月前 By 尊渡假赌尊渡假赌尊渡假赌
威爾R.E.P.O.有交叉遊戲嗎?
1 個月前 By 尊渡假赌尊渡假赌尊渡假赌

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

centos和ubuntu的區別 centos和ubuntu的區別 Apr 14, 2025 pm 09:09 PM

CentOS 和 Ubuntu 的關鍵差異在於:起源(CentOS 源自 Red Hat,面向企業;Ubuntu 源自 Debian,面向個人)、包管理(CentOS 使用 yum,注重穩定;Ubuntu 使用 apt,更新頻率高)、支持週期(CentOS 提供 10 年支持,Ubuntu 提供 5 年 LTS 支持)、社區支持(CentOS 側重穩定,Ubuntu 提供廣泛教程和文檔)、用途(CentOS 偏向服務器,Ubuntu 適用於服務器和桌面),其他差異包括安裝精簡度(CentOS 精

centos如何安裝 centos如何安裝 Apr 14, 2025 pm 09:03 PM

CentOS 安裝步驟:下載 ISO 映像並刻錄可引導媒體;啟動並選擇安裝源;選擇語言和鍵盤佈局;配置網絡;分區硬盤;設置系統時鐘;創建 root 用戶;選擇軟件包;開始安裝;安裝完成後重啟並從硬盤啟動。

Centos停止維護後的選擇 Centos停止維護後的選擇 Apr 14, 2025 pm 08:51 PM

CentOS 已停止維護,替代選擇包括:1. Rocky Linux(兼容性最佳);2. AlmaLinux(與 CentOS 兼容);3. Ubuntu Server(需要配置);4. Red Hat Enterprise Linux(商業版,付費許可);5. Oracle Linux(與 CentOS 和 RHEL 兼容)。在遷移時,考慮因素有:兼容性、可用性、支持、成本和社區支持。

docker desktop怎麼用 docker desktop怎麼用 Apr 15, 2025 am 11:45 AM

如何使用 Docker Desktop? Docker Desktop 是一款工具,用於在本地機器上運行 Docker 容器。其使用步驟包括:1. 安裝 Docker Desktop;2. 啟動 Docker Desktop;3. 創建 Docker 鏡像(使用 Dockerfile);4. 構建 Docker 鏡像(使用 docker build);5. 運行 Docker 容器(使用 docker run)。

docker原理詳解 docker原理詳解 Apr 14, 2025 pm 11:57 PM

Docker利用Linux內核特性,提供高效、隔離的應用運行環境。其工作原理如下:1. 鏡像作為只讀模板,包含運行應用所需的一切;2. 聯合文件系統(UnionFS)層疊多個文件系統,只存儲差異部分,節省空間並加快速度;3. 守護進程管理鏡像和容器,客戶端用於交互;4. Namespaces和cgroups實現容器隔離和資源限制;5. 多種網絡模式支持容器互聯。理解這些核心概念,才能更好地利用Docker。

centos停止維護後怎麼辦 centos停止維護後怎麼辦 Apr 14, 2025 pm 08:48 PM

CentOS 停止維護後,用戶可以採取以下措施應對:選擇兼容髮行版:如 AlmaLinux、Rocky Linux、CentOS Stream。遷移到商業發行版:如 Red Hat Enterprise Linux、Oracle Linux。升級到 CentOS 9 Stream:滾動發行版,提供最新技術。選擇其他 Linux 發行版:如 Ubuntu、Debian。評估容器、虛擬機或云平台等其他選項。

docker鏡像失敗怎麼辦 docker鏡像失敗怎麼辦 Apr 15, 2025 am 11:21 AM

Docker鏡像構建失敗的故障排除步驟:檢查Dockerfile語法和依賴項版本。檢查構建上下文中是否包含所需源代碼和依賴項。查看構建日誌以獲取錯誤詳細信息。使用--target選項構建分層階段以識別失敗點。確保使用最新版本的Docker引擎。使用--t [image-name]:debug模式構建鏡像以調試問題。檢查磁盤空間並確保足夠。禁用SELinux以防止干擾構建過程。向社區平台尋求幫助,提供Dockerfile和構建日誌描述以獲得更具體的建議。

怎麼看docker進程 怎麼看docker進程 Apr 15, 2025 am 11:48 AM

Docker 進程查看方法:1. Docker CLI 命令:docker ps;2. Systemd CLI 命令:systemctl status docker;3. Docker Compose CLI 命令:docker-compose ps;4. Process Explorer(Windows);5. /proc 目錄(Linux)。

See all articles