Java 持久化动态属性和查询
我需要实现联系人数据库。此联系人数据库的特殊之处在于,用户应该能够动态(在运行时)添加他/她想要跟踪的联系人的属性。其中一些属性的类型为字符串、其他数字和日期。一些属性具有预定义的值,其他属性是自由字段等。。用户还希望能够快速方便地查询此类结构。数据库需要轻松处理50万个联系人,每个联系人大约有10个属性Java 持久化动态属性和查询,java,oop,Java,Oop,我需要实现联系人数据库。此联系人数据库的特殊之处在于,用户应该能够动态(在运行时)添加他/她想要跟踪的联系人的属性。其中一些属性的类型为字符串、其他数字和日期。一些属性具有预定义的值,其他属性是自由字段等。。用户还希望能够快速方便地查询此类结构。数据库需要轻松处理50万个联系人,每个联系人大约有10个属性 class Contact{ private Map<DynamicProperty, Collection<DynamicValue> values> proper
class Contact{
private Map<DynamicProperty, Collection<DynamicValue> values> propertiesAndValues;
//other userfull methods
}
它导致动态属性模型具有具有动态属性的Contact类
class Contact{
private Map<DynamicProperty, Collection<DynamicValue> values> propertiesAndValues;
//other userfull methods
}
我考虑以下选项:
- 将联系人存储在RDBMS中,并使用Lucene进行查询-是否有任何帮助
- 将动态属性存储为XML,并将其存储到rdbms,并使用xpath支持——不幸的是,对于500000个联系人来说,这似乎相当缓慢
- 使用另一个数据库—Mango DB或Jackrabbit来存储此信息
或者,您可以将Lucene与RDBMS一起使用,并利用类似的功能。Wikipedia有一个很好的条目,它是一种用于表示具有任意属性的实体的数据建模技术。它通常用于临床数据,但也可能适用于您的情况