非关系型数据库和报表系统

3
我正在进行一个涉及数十亿条记录的学术项目的架构阶段。该项目在计算能力方面应该非常轻量级,且高度可扩展。
信息结构非常简单:我需要存储一系列具有不同特征的项。这些特征包括整数、小数、日期、字符串等。导入数据时,可以知道每个特征的类型。此外,特征可用于引用其他项。
我需要能够按其特征(一个以上)获取和排序列表 - 可能使用查询,例如>,<,= 和正则表达式,长度,左侧,右侧,中间用于字符串对比特征值和用户任意输入。
报告方面需要求和、平均值、分组等功能,但对于此类需求而言要求更加宽松,无需完全具备立方体功能,但越多越好。
我对NoSQL世界非常陌生。您有什么建议吗?
2个回答

4
如果您查看MongoDB的教程,他们在我看来对用于查询和聚合的Map/Reduce系统有最好的介绍。
不过我想知道为什么您提前得出了NoSQL是正确的选择的结论。尽管不同的项目可能具有不同的模式,但实体和属性的数量是固定的吗?如果您已经排除了SQL,那么原因是什么,毕竟SQL积累了数十年的存储和查询数据的功能。

属性是完全任意的。我有一些SQL VLDB的经验,但并不好用。它需要太多的处理。 - Sonia
“完全任意”的指向NoSQL,我明白了。这意味着,正如我所说,您想要学习Map/Reduce。我自己也在学习它,尽管我最终可能不会选择MongoDB,但我发现它的教程是最好的,所以似乎最好在上面学习。 - Ken Downs
如果我现在理解正确的话,您是说执行复杂查询对NoSQL数据库的方法是使用Map/Reduce,对吗? - Sonia
@sonia,是的。 "Map" 大致相当于 "Select"(带有许多适当的免责声明),而 "Reduce" 大致相当于 "Group by",同样带有适当的免责声明。 - Ken Downs

0

如果您要使用聚合函数,那么可以使用MapReduce来填充聚合表,然后提供数据。

为每个查询编写MapReduce可能很麻烦,您也可以查看Apache Pig和Hive。这对于您所谈论的那种特定的即席查询非常有帮助。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接