0

我有一个使用 EF4 和 SQL Server 并托管在 AppHarbor 的现有网站。我需要制作一个独立版本,个人可以在没有 Internet 连接的情况下在本地运行。我正在考虑删除 SQL 并用 RavenDB 替换它。我认为数据结构很适合这一点。

从高层次的角度来看,这就是结构

User
 - Elections
   - People
   - Locations
     - Ballots
       - Votes

该网站的每个用户都可以创建多个“选举”。每次选举都是完全独立的,只有创建它的用户以及他们与之共享的任何“访客”用户知道。

以下是一些我还没有找到答案的问题:

  1. 如何隔离仅访问当前选定的“选举”?每个 linq 语句是否需要包含一个“where”子句来限制选举范围,或者我可以让选举“加载”并在“内部”工作?我必须使用db.Query<Person>().Where(p=>p.Election==currentElection)还是可以做类似的事情election.Query<Person>()

  2. 每个人最多有六个字段:我要搜索的“名字”、“姓氏”、“其他名字”、“额外信息”等。我需要经常快速地搜索选举中的每个人以寻找部分匹配项在所有这些领域。我也想要“soundex”类型的匹配。索引会有用吗,还是我只是使用“蛮力”并遍历所有人?如果有 50,000 人参加选举,我可以得到亚秒级的响应吗?

  3. 我如何构建文档以便每个用户都可以获取和使用他们的选举列表?查看他们的选举列表时,我想显示每次选举的摘要信息。应该将其“预存储”在用户对象中吗?或者,在显示列表时,我是否必须加载每个选举的部分内容以获取详细信息(例如人数、选举的某些属性等)。

感谢您的任何帮助,您可以提供!

4

1 回答 1

1

1) 是的,您需要添加 where 子句。election.Query<Person>()如果您添加自己的扩展方法,您可以这样做。2)您想使用索引。你会得到这样的速度和更多。您可能想阅读有关订单搜索的信息:http: //ayende.com/blog/152833/orders-search-in-ravenb 3) 您可以查询或存储它,具体取决于太多因素。

于 2012-12-19T01:07:40.747 回答