c********1 发帖数: 421 | 1 比如一个数据库,里面放了所有用户的个人笔记(content)
一般的数据表是这么设计的:
noteId user timestamp content
====== ==== ========= =========
为了能让user在自己的本记本中搜索一个内容,我们一般给user设置一个索引
但是这个table中存储了所有用户的note,所以会非常非常大
我们甚至能开N个table,表的名称是note_{userID}
当然可能有一些其它的方案
我想问:有没有比较好的对于这种用户之间数据完全隔离不可见的方案?
目标:简易,能指定用户查询(比如select * from Note where content like %% and
user={userID}),并且速度快
更进一个问题:比如这些用户有明显的地理分布(墙内v.s.墙外)
能不能做成分布式数据库,按用户所在的geo划分? |
p*****2 发帖数: 21240 | 2 cassandra
and
【在 c********1 的大作中提到】 : 比如一个数据库,里面放了所有用户的个人笔记(content) : 一般的数据表是这么设计的: : noteId user timestamp content : ====== ==== ========= ========= : 为了能让user在自己的本记本中搜索一个内容,我们一般给user设置一个索引 : 但是这个table中存储了所有用户的note,所以会非常非常大 : 我们甚至能开N个table,表的名称是note_{userID} : 当然可能有一些其它的方案 : 我想问:有没有比较好的对于这种用户之间数据完全隔离不可见的方案? : 目标:简易,能指定用户查询(比如select * from Note where content like %% and
|
g*****g 发帖数: 34805 | 3 You need Elastic Search for your query. You can back the data with Cassandra
. |
i**i 发帖数: 1500 | |
n*w 发帖数: 3393 | |
w**z 发帖数: 8232 | 6 你可以有一个global lookup table,纪录哪个user 去哪个shard, 但是user 多了,
你这个lookup table 的db scale 会有问题。或者在generate user id 的时候把shard
number 放进去。查询的时候,自己解析一下。
查content 的话需要Full text search engine 了, 有很多choice, 自己研究一下吧。
and
【在 c********1 的大作中提到】 : 比如一个数据库,里面放了所有用户的个人笔记(content) : 一般的数据表是这么设计的: : noteId user timestamp content : ====== ==== ========= ========= : 为了能让user在自己的本记本中搜索一个内容,我们一般给user设置一个索引 : 但是这个table中存储了所有用户的note,所以会非常非常大 : 我们甚至能开N个table,表的名称是note_{userID} : 当然可能有一些其它的方案 : 我想问:有没有比较好的对于这种用户之间数据完全隔离不可见的方案? : 目标:简易,能指定用户查询(比如select * from Note where content like %% and
|
b********e 发帖数: 595 | 7 简单易用的可以试试mongo,不过备份要花钱。另外看目标用户量多大,太大了没有简
单易用的sql语句的方式,只能自己做全文索引
and
【在 c********1 的大作中提到】 : 比如一个数据库,里面放了所有用户的个人笔记(content) : 一般的数据表是这么设计的: : noteId user timestamp content : ====== ==== ========= ========= : 为了能让user在自己的本记本中搜索一个内容,我们一般给user设置一个索引 : 但是这个table中存储了所有用户的note,所以会非常非常大 : 我们甚至能开N个table,表的名称是note_{userID} : 当然可能有一些其它的方案 : 我想问:有没有比较好的对于这种用户之间数据完全隔离不可见的方案? : 目标:简易,能指定用户查询(比如select * from Note where content like %% and
|