Column Family Database 身上可以看到其他資料庫設計的影子,像是 Keyspace 的概念與 Key-Value Database 接近,各個 Row 也可以有不同的 Columns 設計則和 Document Database 相似,並且提供類 SQL 可以對複雜結構進行查詢的功能。每個 Family 中,Columns 是可以動態定義和新增的,而資料的儲存方式其實就是 Key(+Timestamp)-Value 的結構。
儘管有相似之處,Column Family Database 終究不是關聯式資料庫,不支援 ACID 交易,資料的存放和關聯方式也不相同,因此在資料模型的規劃上需要特別注意,通常會透過反正規劃的結構設計,避免出現需要包裝多個 Row 的交易或子查詢的設計。
沒有什麼資料庫是萬能的,開發者需要在適合的場景選擇適合的資料庫類別,Column Family Database 的特性非常適合應用在大量寫入的情境,像是 Cassandra 就算在節點無法處理時,也允許接收寫入請求的特點非常符合大量寫入,它也很適合有不只是多節點,甚至是跨資料中心需求的設計。但如果單純是需要有彈性的資料結構,或是需要完全支援 ACID 等級的交易,Column Family Database 可能不會是你的首選,可以考慮使用 Key-Value Database 或 Document Database,混合使用 SQL 和 NoSQL 資料庫也會是不錯的選擇。