如果不用数据库,首先我们想到的是使用csv进行存储。

  • 艺术家(Artists)信息
  • 艺术家发行的专辑(Albums)信息
"Wu Tang Clan",1992,"USA"
"Notorious BIG",1992,"USA"
"Ice Cube",1989,"USA"
"Enter the Wu Tang","Wu Tang Clan",1993
"St.Ides Mix Tape","Wu Tang Clan",1994
"AmeriKKKa's Most Wanted","Ice Cube",1990

这里可以简单看出,会存在很多问题。

  1. 数据的质量方面。
    1. 很难保证同一个艺术家发行的每条专辑信息中,艺术家字段一致。即数据的冗余性
    2. 不合法输入的字符串,即数据的类型
  2. 实现方便
    1. 性能差,如果需要查询某些数据需要遍历。数据库可能使用索引来实现
    2. 多线程,如果保障一致性? 加锁 + MVCC
  3. 数据持久
    1. 写记录时,宕机如何处理。
    2. 高可用?
      上面的缺陷,也就是专业数据库解决的主要痛点。