{eval=Array;=+count(Array);}

国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

問答專欄Q & A COLUMN

為什么不能在前端連接數據庫呢?

zonezone 回答0 收藏1
問題描述:本人是一個軟件工程大三的學生,最近突然在思考一個問題:為什么不能在前端連接數據庫呢?這個想法的起因是我最近在開發一個簡單的小項目,使用的是gin和vue的前后端分離結構。然后我發現,后端部分所做的事情,說到底就是訪問和操作數據庫(可能因為我做的是一個小項目),那這些事情能否交給前端來做呢?為此我思考了一下是否可行。首先,數據庫的數據需要處理。可能js的執行效率不及后端開發語言,但我覺得這應該存在一個瓶頸。所以是否在以后會存在一個節點,讓js的數據處理能滿足大眾的需求。然后,就是數據庫連接和數據傳輸的問題。可能需要開發一個新的協議來讓網頁和數據庫連接。但是有個新的問題,因為網頁是靜態資源,用戶可以隨意修改,那數據庫的安全也存在問題,我也不知道該怎么解決。最后,我的這個想法的實際意義可能不大,因為像我這樣的一個小項目畢竟是少數,而大多數項目肯定是原有的架構能更好地實現功能。本人第一次提問,思路有點天馬行空,渴望理性探討,如果有邏輯硬傷,望大佬指出。
收藏問題

10條回答

MartinDai

MartinDai

回答于2022-06-28 14:14

假如淘寶這么做了,那就得打通客戶到數據庫服務器的網絡,同時在前端寫明數據庫賬號密碼實例名。我覺得挺好

評論0 贊同0
  •  加載中...
荊兆峰

荊兆峰

回答于2022-06-28 14:14

你的訴求是,如果后端只干了增刪改查,是不是可以干掉。

答案是當然可以,而且這個思路符合邏輯。

但是干掉的方式有很多

1,瀏覽器直接和數據庫打交道。

這個思路早就有之,甚至在富瀏覽器之前。微軟在他的IE瀏覽器中提供了ActiveX的擴展,允許你安裝插件。此時你如果安裝同樣是微軟的Access數據庫插件。就可以直接在瀏覽器操作數據庫了。

2,使用輕量數據庫嵌到前端。

富客戶端概念興起后,在前端存數據也不新鮮了。只是前端不認為這是數據庫,更多認為是緩存。因為最終避免數據丟失,安全,一致性,還是需要后端的。此外,將sqlite類似的數據庫嵌到app是非常常見了,但是app可能不被認為是“前端”。

3,打不過就加入,前端實現輕服務端。

正兒八經說一下這一條。這個無疑是未來去除討厭的服務端的發展方向。借助nodejs,graphQL等框架,面向前端編程已經非常流行了。這里也推薦題主看一下Prisma。堅定自己想法,前端走遍天下是可行的。

評論0 贊同0
  •  加載中...
BlackHole1

BlackHole1

回答于2022-06-28 14:14

技術上可以,但是一般都不會這樣做,原因如下:

  1. 前端信息都是公開的,從前端訪問數據庫,就需要將數據庫的地址,密碼寫在前端的代碼中,這樣就相當于公開了數據庫的訪問;
  2. 數據庫公開訪問的話,用戶就可以隨意訪問數據庫,操作數據庫,這是很嚴重的問題,比如隨便修改賬戶金額,刪除數據,盜取其他用戶敏感信息等;
  3. 無法擴容,流量控制等,比如數據庫現在要遷移到另一臺設備上,可以地址已經寫死到了客戶端,數據庫地址變了,前端就無法訪問了;
  4. 限制了數據庫表的修改,比如數據庫表中某個字段名變了,前端就訪問數據庫的代碼就掛掉了;
  5. 性能差,放在前端的話,限流,異步隊列,熔斷,兜底,緩存等服務端的一些高可用服務都沒有用武之地了。

因此,基本上數據庫訪問的業務代碼都是放在服務端的,客戶端通過訪問服務端來了解訪問數據庫。

評論0 贊同0
  •  加載中...
894974231

894974231

回答于2022-06-28 14:14

你可以將現在的的“狀態”理解為就是前端直接鏈接了數據庫,并給他起個特殊的名字,比如“萌某數據連接”。“萌某數據連接”,“使用了多種協議”,為了“穿越多種”網關;使用了多種保護策略,用以保護鏈接的有效性;……。

評論0 贊同0
  •  加載中...
Charlie_Jade

Charlie_Jade

回答于2022-06-28 14:14

非專業人士,簡單回答一下:

前端連接數據庫,一個是安全問題,第二是并發性能問題,第三是系統的可維護性問題。

當然第三個問題如果真想解決,通過一些設計還是可以解決的,第一第二問題那就關系到互聯網的一些基礎性東西,基礎決定上層建筑,目前的這些設計都是建立在這些基礎上形成的相對最優的方案。

評論0 贊同0
  •  加載中...
stormjun

stormjun

回答于2022-06-28 14:14

也不是完全不行

我以前做程序的時候也是在前端直接連接數據,那時候我剛入行一年,我們公司的項目屬于內網項目,不需要考慮什么安全問題,當時我負責的一個模塊是基于applet的,使用java程序嵌入網頁。

我在applet里面寫了jdbc連接,然后使用js拼接sql,調用applet操作數據庫,完全不經過后臺,開發起來非常方便,網頁刷新一下就能調試了,不需要重啟后臺。

不過那個項目也就客戶那邊幾個人在用,不存在安全性問題,也沒有并發問題,所以那樣做其實一點問題都沒有。

但是,如果是其他web項目甚至是互聯網項目,這樣弄純粹就是不想混了,在js里面寫sql,連接數據庫,別人稍微會點技術的,直接運行一句delete,或者drop table,這時候你怎么辦,特別是你數據庫數據高達百萬或者十幾億的數據,足夠讓你公司破產了。

其實現在也是有一些基于web端的存儲,比如sqlite,websql,sessionstorage,localStorage,session,cookie,或者基于js自己實現個簡易數據庫,我曾經就嘗試實現過js版數據庫,然后服務器上開著一個瀏覽器,后臺用websocket交互這個瀏覽器上的數據庫。

瀏覽器內部提供的存儲一般是為了提升交互體驗而使用,而不是直接存儲賬號密碼,特別是明文密碼或者其他重要數據,所以,不能為了完全的性能而忽略安全性問題。

但是如果是小型項目又是個內網項目,本來就沒什么錢掙的項目,如果你覺得在前端存數據方便那就在前端存就行了,這種情況當然是怎么開發快怎么來了。

評論0 贊同0
  •  加載中...
pekonchan

pekonchan

回答于2022-06-28 14:14

你再仔細想想,如果前端能直接訪問數據庫,前端必然有數據庫連接信息,那么用戶就可以通過其他手段訪問你的數據庫,你還有什么秘密可言?

評論0 贊同0
  •  加載中...
Maxiye

Maxiye

回答于2022-06-28 14:14

因為要分工,你不能把一個人把所有事情都干了。每個人做好自己的事,可以提高效率。

模塊化方便,查找問題比較快速。便于更多人協同作業。就象前端還有三種文件一樣,不然,你全弄些二進制數據,一個文件搞定。

評論0 贊同0
  •  加載中...
lufficc

lufficc

回答于2022-06-28 14:14

技術上完全沒有問題,只是連接參數傳遞時很容易被截獲,那就是被翻了老底

評論0 贊同0
  •  加載中...
zhangrxiang

zhangrxiang

回答于2022-06-28 14:14

作為一個開發者,負責任的告訴你,絕對不可以

第一,安全性沒有保障,暴露數據庫連接賬號和密碼或者授權信息,人人都能鏈接

第二,高并發等復雜的邏輯難實現

第三,js是單線程,還是解釋性語言,性能無法保障

第四,流對于前端是非常困難的,比如內存流處理

第五,前端代碼不能編譯,只能混淆,容易被篡改,暴露源代碼在別人面前是非常危險的

這會想到的就這些,歡迎補充!

評論0 贊同0
  •  加載中...

最新活動

您已邀請0人回答 查看邀請

我的邀請列表

  • 擅長該話題
  • 回答過該話題
  • 我關注的人
向幫助了您的網友說句感謝的話吧!
付費偷看金額在0.1-10元之間
<