由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
JobHunting版 - TinyUrl的design需要NON-SQL 还是SQL
相关主题
TinyUrl的design需要NON-SQL 还是SQL关于MySQL和NoSQL的一道面试题
G家店面design题目【急】BI Analyst Offer 求分析
system deisng里tinyUrl的问题,求大神指点About the latency of reading from mysql binlog (转载)
f design question 求讨论ASP.NET+SQL+C#是所谓的后端吗?
FB设计题求教。后端码农到底要不要会手写复杂SQL
老年马工赶快去 fbSQL 面试问题
dropbox一道题core java position, investment bank front office, new york city
KV store 还需要memcache吗?这种题目怎么回答?
相关话题的讨论汇总
话题: sql话题: mysql话题: cache话题: memcache话题: qps
进入JobHunting版参与讨论
1 (共1页)
h******e
发帖数: 52
1
数据量不大的话,比如几十上百G,好像SQLprefereable 还是nonsql
另外要不要把 longURL->shortUrl 和shortUrl->LongURL都存下来?
T****U
发帖数: 3344
2
数据存储mysql应该就够了,但是如果访问量比较大的时候,峰值100/s以上那种,需要
用in mem database, 或者自己写个简单的k-v store cache data.
你有table了,long, short都在表里面,一般都是short url当主键,因为大部分访问
量都是short to long.
sql nosql主要问题是数据是否结构化,简单判断就是数据表是否过于复杂,查询时需
要join很多表
N*D
发帖数: 3641
3
Case by case. 需求不明,没法决定。

【在 h******e 的大作中提到】
: 数据量不大的话,比如几十上百G,好像SQLprefereable 还是nonsql
: 另外要不要把 longURL->shortUrl 和shortUrl->LongURL都存下来?

N*D
发帖数: 3641
4
100/s不是较大,是极小。。。

【在 T****U 的大作中提到】
: 数据存储mysql应该就够了,但是如果访问量比较大的时候,峰值100/s以上那种,需要
: 用in mem database, 或者自己写个简单的k-v store cache data.
: 你有table了,long, short都在表里面,一般都是short url当主键,因为大部分访问
: 量都是short to long.
: sql nosql主要问题是数据是否结构化,简单判断就是数据表是否过于复杂,查询时需
: 要join很多表

w**z
发帖数: 8232
5
一般 query, MySQL 几千 per second 毫无压力。

【在 N*D 的大作中提到】
: 100/s不是较大,是极小。。。
T****U
发帖数: 3344
6
几百G的数据量,你不放到内存,每次查硬盘还是不行把
http://northernmost.org/blog/mysql-query-cache-vs-memcached-rid
The MySQL query cache is invalidated as soon as the table is modified in any
shape or form. Be it an UPDATE, INSERT or DELETE.
这种频繁读写的数据,还是放到内存比较好,而且利于分布式设计,增加处理能力和冗
余。

【在 w**z 的大作中提到】
: 一般 query, MySQL 几千 per second 毫无压力。
N*D
发帖数: 3641
7
放内存还是放硬盘,交给storage layer决定,不是你app layer考虑的问题。
最后还是一句话:需求不明,没发设计。
数据量多大?1GB?1TB?1PB?
访问量多大?读多少?写多少?1 qps,还是100qps,还是100k qps,还是10m qps
Latency要求?1ms?10ms?100ms?1s?
然后use case:需要给短的读长的?需要给长的读短的?
然后各种细节:一个长的缩成固定的短的?同一个用户short一个长的consistently产
生一个短的?不同用户short一个长的产生几个短的?
等把问题弄清楚,面试就差不多结束了。

【在 T****U 的大作中提到】
: 几百G的数据量,你不放到内存,每次查硬盘还是不行把
: http://northernmost.org/blog/mysql-query-cache-vs-memcached-rid
: The MySQL query cache is invalidated as soon as the table is modified in any
: shape or form. Be it an UPDATE, INSERT or DELETE.
: 这种频繁读写的数据,还是放到内存比较好,而且利于分布式设计,增加处理能力和冗
: 余。

T****U
发帖数: 3344
8
那我们算算,就是基本的长生成短,短读取长的服务,1million dau, 10%的人用长变
短服务,每人每天3次请求,所有用户每人平均使用短到长服务5次,
峰值按10倍计算。
那么写操作是35qps,读操作是600qps
一天300M数据,一年是100G左右
怎么设计比较好?

【在 N*D 的大作中提到】
: 放内存还是放硬盘,交给storage layer决定,不是你app layer考虑的问题。
: 最后还是一句话:需求不明,没发设计。
: 数据量多大?1GB?1TB?1PB?
: 访问量多大?读多少?写多少?1 qps,还是100qps,还是100k qps,还是10m qps
: Latency要求?1ms?10ms?100ms?1s?
: 然后use case:需要给短的读长的?需要给长的读短的?
: 然后各种细节:一个长的缩成固定的短的?同一个用户short一个长的consistently产
: 生一个短的?不同用户short一个长的产生几个短的?
: 等把问题弄清楚,面试就差不多结束了。

N*D
发帖数: 3641
9
两个服务器 + 一个MySQL就行了,没latency要求的话连memcache都省了。

【在 T****U 的大作中提到】
: 那我们算算,就是基本的长生成短,短读取长的服务,1million dau, 10%的人用长变
: 短服务,每人每天3次请求,所有用户每人平均使用短到长服务5次,
: 峰值按10倍计算。
: 那么写操作是35qps,读操作是600qps
: 一天300M数据,一年是100G左右
: 怎么设计比较好?

N*D
发帖数: 3641
10
这是老黄历了,query cache写invalidate相关entries,这也是标准做法。

any

【在 T****U 的大作中提到】
: 几百G的数据量,你不放到内存,每次查硬盘还是不行把
: http://northernmost.org/blog/mysql-query-cache-vs-memcached-rid
: The MySQL query cache is invalidated as soon as the table is modified in any
: shape or form. Be it an UPDATE, INSERT or DELETE.
: 这种频繁读写的数据,还是放到内存比较好,而且利于分布式设计,增加处理能力和冗
: 余。

相关主题
老年马工赶快去 fb关于MySQL和NoSQL的一道面试题
dropbox一道题【急】BI Analyst Offer 求分析
KV store 还需要memcache吗?About the latency of reading from mysql binlog (转载)
进入JobHunting版参与讨论
T****U
发帖数: 3344
11
这个latency指什么?
如果预计使用量增加10倍,到350qps写,6000qps读,数据到1T, 怎么设计好?
如何保证HA, 这时候要加memcache, mysql至少有1,2个backup把

【在 N*D 的大作中提到】
: 两个服务器 + 一个MySQL就行了,没latency要求的话连memcache都省了。
N*D
发帖数: 3641
12
6000个读吧?
用MySQL就要sharding了,假设每个MySQL能支持2K read,在保守点,4个sharding;每
个sharding 500GB,外加一个slave;
如果scale上去了,就用NoSQL,反正你也不需要relational的功能。如果需要短查长,又
需要长查短,NoSQL支持secondary index就好,不然就在App上dual write,不过要自
己做consistency,比较麻烦。
latency指读写速度。比如MySQL能搞几十个ms,上memcache能搞到几个ms而已。

【在 T****U 的大作中提到】
: 这个latency指什么?
: 如果预计使用量增加10倍,到350qps写,6000qps读,数据到1T, 怎么设计好?
: 如何保证HA, 这时候要加memcache, mysql至少有1,2个backup把

T****U
发帖数: 3344
13
6000读,如果用memcache,估计一两台机器做数据缓冲服务就够了,因为你不需要读入
所有数据,也就没必要做sharding了。后面mysql再搞一两个backup。
写服务也可以batch异步操作,那mysql的写也不是问题了。
长查短搞两个表在memcache就行了,mysql还是一个表,不需要同步。

【在 N*D 的大作中提到】
: 6000个读吧?
: 用MySQL就要sharding了,假设每个MySQL能支持2K read,在保守点,4个sharding;每
: 个sharding 500GB,外加一个slave;
: 如果scale上去了,就用NoSQL,反正你也不需要relational的功能。如果需要短查长,又
: 需要长查短,NoSQL支持secondary index就好,不然就在App上dual write,不过要自
: 己做consistency,比较麻烦。
: latency指读写速度。比如MySQL能搞几十个ms,上memcache能搞到几个ms而已。

N*D
发帖数: 3641
14
呵呵,假设你的DB是2k的capacity,你没法保证cache hit rate能上66%吧,连访问
pattern是啥都不知道的情况下。
而且Cache本身应该是functional optional的,如果你设计个系统,当辅助的cache
down了,你系统也down了的话,呵呵。

【在 T****U 的大作中提到】
: 6000读,如果用memcache,估计一两台机器做数据缓冲服务就够了,因为你不需要读入
: 所有数据,也就没必要做sharding了。后面mysql再搞一两个backup。
: 写服务也可以batch异步操作,那mysql的写也不是问题了。
: 长查短搞两个表在memcache就行了,mysql还是一个表,不需要同步。

T****U
发帖数: 3344
15
短链接服务主要是在twitter那种地方使用,高峰值通常是由于有热点事件,或者名人
发布链接导致,那么cache hit rate还是满高的,如果把memcache的有效时间设为1-2
天的,也就是几个G的内存量,那基本对mysql的访问量就是个平均值600。
memcache本身也是有冗余的,它如果也会挂,你的mysql+1slave也会有问题

【在 N*D 的大作中提到】
: 呵呵,假设你的DB是2k的capacity,你没法保证cache hit rate能上66%吧,连访问
: pattern是啥都不知道的情况下。
: 而且Cache本身应该是functional optional的,如果你设计个系统,当辅助的cache
: down了,你系统也down了的话,呵呵。

N*D
发帖数: 3641
16
Cache和Persistent data store从设计上cost, availability都不一样的。

2

【在 T****U 的大作中提到】
: 短链接服务主要是在twitter那种地方使用,高峰值通常是由于有热点事件,或者名人
: 发布链接导致,那么cache hit rate还是满高的,如果把memcache的有效时间设为1-2
: 天的,也就是几个G的内存量,那基本对mysql的访问量就是个平均值600。
: memcache本身也是有冗余的,它如果也会挂,你的mysql+1slave也会有问题

h******e
发帖数: 52
17
你这个算法有点问题吧?
1M - DAU,每人每天3次请求, 峰值按10倍, 应该是30M requests / (24*3600) = 347
qps in total, 34 write qps, 313 read qps
数巨量: 10% * 3M * (200bytes for long + short URL) / day => 60M / day
和你算的有出入呀?

【在 T****U 的大作中提到】
: 那我们算算,就是基本的长生成短,短读取长的服务,1million dau, 10%的人用长变
: 短服务,每人每天3次请求,所有用户每人平均使用短到长服务5次,
: 峰值按10倍计算。
: 那么写操作是35qps,读操作是600qps
: 一天300M数据,一年是100G左右
: 怎么设计比较好?

h******e
发帖数: 52
18
我的意见是选择no sql既然我们的query主要还是key value式的查询。大家觉得有什么
看法吗?
另外,我们应该选择short url做key吧。 当long url来的时候,我们经过算法转换到
short url。 如果key 已经存在就重复了。

【在 T****U 的大作中提到】
: 数据存储mysql应该就够了,但是如果访问量比较大的时候,峰值100/s以上那种,需要
: 用in mem database, 或者自己写个简单的k-v store cache data.
: 你有table了,long, short都在表里面,一般都是short url当主键,因为大部分访问
: 量都是short to long.
: sql nosql主要问题是数据是否结构化,简单判断就是数据表是否过于复杂,查询时需
: 要join很多表

x*********w
发帖数: 533
19

随便用个key value store不就可以了,随便部署在 2 ~ 3台服务器上,shard的
primary和secondary不要部署在一台机器上。。。。
这种应用也不用考虑transaction了,key value store各种cache,persisitency都有
支持,不用自己实现。
latency需求500ms以内纯属扯淡,需求不合理,拒绝实现
这有啥好考的,啥年代了还用memcache + sql 吗 。。。

【在 h******e 的大作中提到】
: 数据量不大的话,比如几十上百G,好像SQLprefereable 还是nonsql
: 另外要不要把 longURL->shortUrl 和shortUrl->LongURL都存下来?

1 (共1页)
进入JobHunting版参与讨论
相关主题
这种题目怎么回答?FB设计题求教。
今天mitbbs的latency略大老年马工赶快去 fb
大家帮我看看我的背景找工作有戏吗?dropbox一道题
怎么自学自练SQL?KV store 还需要memcache吗?
TinyUrl的design需要NON-SQL 还是SQL关于MySQL和NoSQL的一道面试题
G家店面design题目【急】BI Analyst Offer 求分析
system deisng里tinyUrl的问题,求大神指点About the latency of reading from mysql binlog (转载)
f design question 求讨论ASP.NET+SQL+C#是所谓的后端吗?
相关话题的讨论汇总
话题: sql话题: mysql话题: cache话题: memcache话题: qps