问一个数据库的知识

一个困扰了我很久的问题。比如我要设计一个Facebook 那么针对user 我应该使用那种数据库?sql or nosql? 如果用sql 不scale 用nosql的话不好relation

一般是这样。具体还看要求的细节。也有的面试官直接要求sql或nosql的,并不让你选择。

面试官说随便你的情况下一般选择怎么比较好? 为什么?

一般就是根据 DAU,QPS, throughput 这些信息。 sql 的话一般是用connection pool,超过 pool 的size就不能用了。

另外也看是不是 ready heavy 还是 write heavy。
如果只是 read heavy,sql 可以通过master-slave的模式scale。
write heavy 一般只能上 nosql 了,一般是cassandra或 dynamoDB这种类型的 nosql

ok 理解了。我再好好dive deep一下

想的深的话,还要考虑 备份,部署,安全等因素。
工作中考虑更多的是业务逻辑,DB schema的设计也会影响选型。尤其是要考虑对数据库的操作有哪些,有哪些读操作,哪些写操作。
上述因素考虑清楚才能选型。

ok get了感谢x老师