天天看點

NoSQL和MySQL的差別

結合:《javaEE 網際網路輕量級架構整合開發》

即非關系型資料庫和關系型資料庫。

MySQL的優點:事務處理—保持資料的一緻性;由于以标準化為前提,資料更新的開銷很小(相同的字段基本上隻有一處);可以進行Join等複雜查詢

NoSQL的優點:首先它是基于記憶體的,也就是資料放在記憶體中,而不是像資料庫那樣把資料放在磁盤上,而記憶體的讀取速度是磁盤讀取速度的幾十倍到上百倍,是以NoSQL工具的速度遠比資料庫讀取速度要快得多,滿足了高響應的要求。即使NoSQL将資料放在磁盤中,它也是一種半結構化的資料 格式,讀取到解析的複雜度遠比MySQL要簡單,這是因為MySQL存儲的是經過結構化、多範式等有複雜規則的資料,還原為記憶體結構的速度較慢。NoSQL在很大程度上滿足了高并發、快速讀/和響應的要求,是以它也是Java網際網路系統的利器。

簡單的擴充:典型例子是Cassandra,由于其架構是類似于經典的P2P,是以能通過輕松地添加新的節點來擴充這個叢集;

低廉的成本:這是大多數分布式資料庫共有的特點,因為主要都是開源軟體,沒有昂貴的License成本;

NoSQL的缺點:大多數NoSQL資料庫都不支援事務,也不像 SQL Server和Oracle那樣能提供各種附加功能,比如BI和報表等; 不提供對SQL的支援

那麼該如何選擇?

如果規模和性能比24小時的資料一緻性更重要,那NoSQL是一個理想的選擇 (NoSQL依賴于BASE模型——基本可用、軟狀态、最終一緻性)。

但如果要保證到“始終一緻”,尤其是對于機密資訊和财務資訊,那麼MySQL很可能是最優的選擇(MySQL依賴于ACID模型——原子性、一緻性、獨立性和耐久性)。

如果關系資料庫在你的應用場景中,完全能夠很好的工作,而你又是非常善于使用和維護關系資料庫的,那麼我覺得你完全沒有必要遷移到NoSQL上面,除非你是個喜歡折騰的人。如果你是在金融,電信等以資料為王的關鍵領域,目前使用的是Oracle資料庫來提供高可靠性的,除非遇到特别大的瓶頸,不然也别貿然嘗試NoSQL。