2011-08-04 87 views
2

我们的架构有一个用户表...VoltDB是否支持唯一索引?

USER( 
    userId, 
    firstname, 
    lastname, 
    email) 

,我们要确保所有用户具有唯一的电子邮件地址。是否有可能在VoltDB中创建一个唯一的索引来强制执行此约束?

回答

3

VoltDB支持主键索引(它们始终是唯一的)以及可以定义为唯一的辅助索引。

为特定的表,你有两个选择执行上的电子邮件列唯一性:

  1. 定义用户表的复制。
  2. 分区电子邮件列上的USER表。

如果您在电子邮件上创建唯一索引并对userId上的表进行分区,那么电子邮件列的唯一性实施将位于单个分区内。

+0

这不起作用,我们需要整个数据库集群的唯一性,而不仅仅是在单个分区中。 – raffian

+1

如果在索引中包含分区列,则它将是全局唯一的。我意识到这可能无法解决您的特定问题 - 这是一个更一般的指导。 – Ryan

1

VoltDB为主键提供隐式索引。例如,如果您将userID分配为主键,那么userID将是唯一的(因为VoltDB在主键上隐式索引分配),但要使电子邮件列为唯一的,您必须在电子邮件列上明确指定约束'UNIQUE'。 同样,假设您正在对表进行分区并对列userID进行分区,然后为了使每个分区中的电子邮件唯一,您应该在电子邮件列上明确指定'ASSUMEUNIQUE'约束。

相关问题