一个困扰了我很久的问题。比如我要设计一个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老师