2016-09-14 191 views
0

我正在開發一個node.js多人紙牌遊戲應用程序,由4名玩家同時播放。Node.js將對象存儲在數據庫或數組中?

我有一個包含所有正在進行的遊戲的對象數組, 我想知道如果有5000個遊戲或更多遊戲正在進行中,我的服務器應用程序中是否有內存問題?

對我來說,將對象存儲在數據庫中並每次讀取它會更好,數據連接將會更多使用,但內存更少?在這種情況下最好的辦法是什麼?

+1

這一切都取決於數據集有多大,訪問頻率多少以及如果服務器出現故障,您需要多長時間才能保留它 - 這些數據都不是共享的。內存是首選,除非數據量太大,或者需要持久性或需要多個進程訪問。 – jfriend00

+0

在我的例子中,每個用戶(在這種情況下是20 000個用戶)每個〜15-20秒訪問遊戲對象。我不需要數據來堅持我的例子,「內存是首選的,除非數據量太大」,何時應該考慮數據量太大? – jeromeb

+0

數據有多大? – jfriend00

回答

0

如果你實際上可以將數據保存在內存中,那通常會產生一個更快,更簡單的解決方案。

以下是一些您可能需要使用一個數據庫,而不是原因:

  1. 你需要從多個進程訪問。
  2. 您需要持久化數據(如果服務器應該重新啓動或崩潰)。
  3. 您正在存儲的數據超過了內存容量。
  4. 您需要某些已經內置到典型數據庫中的併發或事務功能。
  5. 您想要使用現有數據庫的某些搜索/索引功能。

如果沒有這些原因開車送你到一個數據庫和數據輕鬆裝入內存(用於node.js的可能比500MB-1GB以內),這取決於你的服務器有多少其他的內存使用和服務器訪問足夠的運行時內存,那麼存儲和訪問內存中的數據通常更快,更簡單。