Nosql

NoSQL 解決方案是否適用於實時手機遊戲?

  • February 28, 2013

開發 iOS/Android/WP 實時遊戲。

伺服器端的東西將使用 Node.js 在 Javascript 中完成。

這將是一個有 8 人房間的瑣事 + 一個用 Python 和 Flask 製作的管理站點(用於統計、帳戶管理、添加問題……它還將提供一個 API 來獲取使用者配置文件)。

基本上我將不得不獲取大約 10 個問題/遊戲(我將檢查使用者是否已經回答了他們,這樣我也可以避免冗餘)。

我想知道我的項目是否真的會從 nosql 數據庫中受益。

我從來沒有使用過,但如果它是相關的,我不介意學習。

玩家數據:經典帳戶資訊、分數、回答問題…

問題數據:問題 + 翻譯、答案、統計數據(詢問次數、正確/錯誤答案計數)…

RDMS 選擇是 psql。

有什麼想法嗎?謝謝

簡短的回答是 NoSQL、NewSQL、OODB 或只是簡單的 SQL 都是選項,但 SQL 可能是最可行的。許多 NoSQL 實現可以以犧牲性能/可擴展性為代價來配置 ACID 合規性,但它們很可能仍會超出大多數合理的 SQL 實現。另一種選擇是使用應用程序分片 SQL 以最小的努力/成本獲得可擴展的 SQL,並且在許多情況下是非常可行的。一般來說,架構和測試比數據儲存更關鍵,最可擴展的數據儲存可能會因為錯誤的架構而落後。

對於初創公司來說,推出產品通常是首要考慮因素,而 SQL 通常是最快上市的,因為它是一個已知的實體,並且經驗豐富的開發人員在這方面擁有最多的經驗。最大的問題通常是你的可用資源,他們是否具備 NoSQL 的知識和經驗?或者你有時間測試、配置、再測試嗎?

pSQL 是比較知名的,它的局限性是眾所周知的。NoSQL 有 10 種可行的選項,還有 100 種處於某種開發狀態的選項。找到合適的並了解其局限性本身就是一個非常重要的項目。NewSQL 是非常新的,在 3-5 年內它很可能成為大型項目的事實上的數據庫。任何小商店都應該遠離它,直到有資源來診斷和解決不可避免的問題的大公司獲得更重要的生產使用。

我認為首先要做的是確保您確切知道自己需要什麼。您可能希望按照 AceCTO 的建議從 SQL 開始。然而,我從那裡開始的理由是不同的。

基本點是標準 SQL 是一項相當成熟的技術。你知道你得到了什麼。它也很健壯,因此您不必處理諸如 VoltDB(一種“NewSQL”解決方案)之類的關於數據持久性的問題。VoltDB 對於某些 C 值和某些 D 值是 ACID 兼容的,但這些值是非標準的。如果您需要遷移到它,您總是可以的,可能作為標準 RDBMS 的助手。NoSQL 是碎片化的,但權衡是更基本的。

使用 NoSQL,您通常會從專注於靈活、緊湊的數據輸出的關係數據庫轉移到專注於靈活、收縮模糊的數據輸入的非關係數據庫。這種權衡是巨大的。這意味著,從積極的方面來說,您可以將數據扔到數據庫中,而不用擔心它是否有效。不利的一面是,這不僅意味著您可以將數據放入數據庫而不必擔心有效性,而且還意味著您放棄了使用結構良好的數學對數據進行基於集合的操作。這些都是巨大的缺點,幾乎不值得用 NoSQL 解決方案替換 RDBMS。

至於可擴展性,在良好的硬體上,PostgreSQL 在 TPC-C 測試中可以擴展到每秒十萬個事務。此外,即使您不想要高端硬體,如果您需要在較小的伺服器上擴展,您也可以使用 Postgres-XC 向外擴展。此外,您對玩家是否看過問題的檢查可能是基於設置的,並且比使用 NoSQL 解決方案更容易以一種表現良好的方式進行。

長話短說,從 SQL 開始。您始終可以根據需要添加幫助程序,無論是 NewSQL 還是 NoSQL,但關係數學很可能太有價值而不能丟棄。

引用自:https://dba.stackexchange.com/questions/35566