2012-01-30 27 views
1

我正在開發一種內部網牆以供人們發佈信息。 我一直使用正常的DB結構有一段時間了,即:MySQL平板與鍵/值對

user_id/username/email/password/name/.../backgroundColor/.../mood/... 

一個新的合作伙伴加入到這個項目,他想切換到一個鍵/值數據庫,使數據庫中的更大的靈活性,即:

user_id/keyName/value 

作爲一個noob,我明白他的意思,它是如何更靈活,但我擔心它會增加對數據庫/行的查詢次數,並會減慢速度。除此之外,我們需要一些非常普通的類型來確保一切都合適。

誰能告訴我優點和缺點使用這樣一個數據庫結構,你會推薦使用哪一個?這是否適用於小型網站,但是當我們獲得大量流量和用戶時會導致問題嗎?

我見過的其他職位,但他們不跟我說話,即: Non Relational Database , Key Value or flat tableUsing a relational database and a key-value store in combination

感謝您的幫助。

回答

1

如果你走這條路線,MySQL不再是最好的選擇。還有其他NoSQL產品可用於處理較少結構化的鍵值數據。

NoSQL的優勢在於它可以很好地擴展到超大型站點;缺點是你失去了很多SQL可以非常輕鬆地完成的高級功能(複雜查詢,連接等)。如果您從高級SQL功能中獲得很多好處,最好堅持使用它。如果您只是一次只查找一張表中的數據,並且始終使用簡單的鍵來訪問數據,並且擔心有一天您會遇到MySQL的限制,那麼NoSQL最終會允許更高級別的可伸縮性在長期。

0

想想吧。對於一個非常簡單的用例,例如獲得給定用戶標識的八個基本「屬性」。目前,這是鍵/值模式中的單個查詢,這將需要 八個查詢,如SELECT ATTR WHERE KEY-NAME = "USERNAME" AND USERID = "XXXXXX";

想想更復雜的用例,例如「給我所有的用戶」心情「快樂和背景色」粉紅色「。這將是您當前模式中的一個簡單選擇。在鍵/值模式中,這將涉及複雜的連接和子查詢。

沒有Sql可以很好地擴展,因爲它沒有太大的作用。通過切換到「鍵/值」模式,您會失去大量的功能,以加快一些非常簡單的訪問。