2012-06-13 65 views
0

我試圖用Mongodb和Node.js實現一個簡單的登錄系統,但是我發現它太麻煩了(每個人都在構建一百個框架並且沒有解釋一半的代碼)。我可能可以做到,但這需要太多的工作等等,因爲我只想做一個簡單的多人遊戲。可以使用純文本文件進行身份驗證嗎?

我對數據庫的替代方案是純文本文件。當然,我打算散列密碼。我想到的第一個問題是,文件可能會變得太大,並且服務器會放慢嘗試讀取它的速度(在假設情況下,我懷疑我的遊戲會有那麼多用戶)。解決辦法是在服務器上創建一個users/文件夾,並將大文件拆分爲許多較小的文件。他們的名字將與用戶名相符,並且散列密碼和電子郵件將被保留。這解決了速度問題,我看不到我仍然需要數據庫!

我錯過了什麼嗎?使用數據庫還有其他好處嗎?另外,如果有人用Mongodb登錄的例子回答,我會很高興,這將解決我所有的問題。儘可能簡單。

+1

當您想開始查詢您的數據時,數據庫非常有用。假設每個用戶的文件存儲他的高分,並在系統中顯示前10個高分將是一場噩夢。 – xbonez

+0

我認爲使用數據庫的主要原因是你描述的可伸縮性問題。如果你可以讓這個文件遠離網絡用戶,你應該體面得體。 –

+7

你爲什麼要嘗試用純文本文件來模擬數據庫?數據庫是爲此目的而明確做出的... – Bergi

回答

4

有一個的原因使用真正的數據庫,而不是一些黑客,一半的文件實施。一些大的:

  • ACID(這是真的理由4)
  • 性能&穩定性(數據庫是一些軟件仍然在使用最成熟的片)
  • 標準化

如果你想「輕量級」,我建議你從SQLite開始。


相關:

+0

我會檢查出來的。照顧提供說reasos?我看不到他們... – corazza

1

如果您正在使用mongo,我強烈建議使用Mongoose庫。它爲Mongo提供了極好的ORM。如果您最終決定使用該ORM,則會建立一個名爲mongoose-auth的已建立身份驗證庫。我爲我自己的網站使用了默認的password example

2

假設你有一個認證信息爲:用戶名(10),密碼(32)。這些使42個字符。假設每個字符是4個字節(由宇宙中的所有字符組成),每個用戶消耗42 * 4 = 168個字節。即使你有100.000個用戶,它也只需要16MB的內存。它可以適合整個RAM,你只需要改變磁盤,並在程序啓動時讀取所有內容。當然,它會有一個小問題,但不是什麼大問題。

但是,處理文件可能會成爲一個問題,您不必重新發明輪子。這是數據庫的用途。我同意,使用Mongo,MySQL可以是一個矯枉過正的問題,但是如果你只打算使用數據庫進行認證,那麼你可以使用更輕量級的解決方案,你可以使用SQLite,它只有一個文件,一個〜270KB的客戶端和一個不錯的NodeJS庫。看看這個不錯的post

1

如果你正在使用NodeJS mongoDB可以很好地滿足你的需求,還可以選擇redis,couch等等... MongoDB和任何啓動和f你一直在玩它,不妨堅持下去。

看看這個使用cloudfoundry或Mongolab(免費)mongoDb服務器的回購。

https://github.com/daithiw44/Node_Authenticated_MongoDB

演示有一個按鈕,當點擊打DB得到的值。將硬編碼值替換爲用戶名和密碼文本字段中的值,並且可以對用戶進行身份驗證並設置expressjs會話。

這是用較舊版本的節點編寫的,但是對package.json的調整應該會給你一個開始的好地方。

希望有所幫助。

相關問題