scale 英文是擴充的意思。
資料庫要進行擴充,指的是存儲系統不夠,或者性能不夠,要提升的時候,就要進行擴充。
分為向上擴充和橫向擴充,這就像一個人往上面發展與橫向發展兩種思路。
scale-up:往上方向去擴充,就是提高單機的性能,比如資料庫調優,硬體上的調優等等。都是從一個提升上來考慮。
scale-out:橫向去擴充。目标不是放在提高單機性能上。而是要做成分布式。多個機器來解決。
scale-up和scale-out的角度是機器的角度,一台機器不夠的時候,是把硬體性能提升(往上面擴充),還是通過分布式(橫向擴充)
橫向擴充是一個戰略上的,要做成分布式,怎麼把資料分散到多個機器上呢,現在要談戰術上用什麼技術手段,技術手段就是sharding技術。
而sharding技術是分片的意思,分片其實是指資料進行分片
分為垂直分片和水準分片。
垂直分片:典型的是将大字段拆分出去。
水準分片:按照某個字段,比如user_id進行hash,一部分到一個表,一部分到另外一張表,這就是水準分片。
我覺得,sharding側重的點不同,側重的點是對資料,資料庫中的資料如何進行分片上(分散到多個點存儲,這個點可以是伺服器,也可以是小到一個庫,小到一個表)。
而sacle側重是整個資料庫如何擴充。是整體上的。
解決資料庫性能問題歸類分為兩大類:
一、scale up和scale out
二、sharding技術
網上關于分表的資料很多。
以上隻是為個人做概念區分。不正确之處,等待完善