我一直在嘗試構建一個使用noSQL數據庫運行的服務器端API。我對應用程序體系結構很陌生,因此我想就如何嘗試分離圖層提供一些反饋。我認爲引發我的一個主要部分是使用noSQL數據庫,它消除了必須預先定義數據模型的約束,同時要求數據的非規範化例程以確保數據可以快速查詢。4層應用程序體系結構 - 使用noSQL的服務器端API
我使用的是4層:
數據層
- 接受鍵入對象
- 提供從關鍵
- 對象提供對象的列表從查詢
- 提供密鑰列表中的對象列表
- 接受鍵控對象
- 從關鍵
- 器具非規範化基於模型多次定義(程序刪除對象名單,一些對象的部分是拷貝給他人,以加快查詢速度,因爲連接是不可能的與NOSQL)
業務層
- 提供業務邏輯
- 強制執行權限
模型層
- 定義已知對象
- Definies非正規化(什麼對象的部分被複制到其他部分)
- Definies權限(哪些用戶可以在什麼情況下訪問什麼對象)
表示層(RESTful的API)
- 提供寧靜API爲所有資源/服務,包括
- 訪問並修改對象
- 置備新的用戶帳戶
- 登錄到帳戶
- API需要做的其他事情
- 提供寧靜API爲所有資源/服務,包括
我對如何我有這個成立了幾個問題:
1)我認爲,信息定義非規範化(如何以及何時一些ojects的副本中的其他對象提供)被模型定義的一部分,所以我有在模型中提供這些信息的例程。然而,實際上要做到這一點的層是數據層,特別是當信息被保存時,所以我把實現模型中的非規範化定義的例程放在數據層中。它是否正確?2)同樣,我也有模型中的權限(誰可以訪問什麼信息以及在什麼情況下)的定義。但業務層將負責將此信息傳遞給REST API,因此這是我強制執行權限的層。我沒有數據層強制執行權限,因爲雖然有些用戶可能無法直接訪問某些數據,但可以通過用戶執行的其他操作間接修改該數據(例如,更新該用戶的「last_login_time」屬性的簡單日誌記錄儘管用戶永遠無法修改該信息)這是正確的嗎?
3)這裏還有什麼我不正確的,一般來說我應該注意什麼或者我應該知道的其他東西?
4)我正在使用谷歌應用程序引擎,這是Java低級API的python。有一個我應該使用的框架已經處理了一些,特別是反規範化和權限?
謝謝!