如果不用数据库,首先我们想到的是使用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
这里可以简单看出,会存在很多问题。
- 数据的质量方面。
- 很难保证同一个艺术家发行的每条专辑信息中,艺术家字段一致。即数据的冗余性
- 不合法输入的字符串,即数据的类型
- 实现方便
- 性能差,如果需要查询某些数据需要遍历。数据库可能使用索引来实现
- 多线程,如果保障一致性? 加锁 + MVCC
- 数据持久
- 写记录时,宕机如何处理。
- 高可用?
上面的缺陷,也就是专业数据库解决的主要痛点。