什么是正确的数据库系统

时间:2011-06-11 16:16:43

标签: database scala nosql

对于用Scala编写的应用程序,我正在寻找满足以下要求的“最佳”数据库系统:

  • 对以下查询的良好支持:对于节点查找所有连接的节点,通过另一个节点连接的所有节点的值为“somevalue”
  • 适用于数据量较小的0 $云服务
  • 良好的社区支持和文档

2 个答案:

答案 0 :(得分:4)

您最有可能尝试在数据库中存储图表

有一些图形数据库,专门用于存储节点和连接节点与顶点(用你的术语,值)。 http://en.wikipedia.org/wiki/Graph_database#Graph_database_projects

我担心,云中没有免费提供免费选项。您应该购买VPS,Amazon EC2实例,Windows Azure实例或任何托管数据库的内容。这些天没有什么是免费的。

在图形数据库中,我的选择是neo4j,它有很好的支持,文档,社区,它专门用于Java(当然还有Scala)。但我听说orientdbvertexdb对此也有好处。

答案 1 :(得分:2)

  

对以下查询的良好支持:对于节点查找所有连接的节点,通过另一个节点连接的所有节点的值为“somevalue”   良好的社区支持和文档

如果您只需要查找邻域中的节点,

Postgres就足够了,因为它支持recursive queries

假设你有一个nodes (id, parent_id, col)的定向图,这允许写:

with rec_nodes as (
select id,
       col,
       1 as depth
from   nodes
where  parent_id = :id
union all
select nodes.id,
       nodes.col,
       rec_nodes.depth + 1 as depth
from   nodes
join   rec_nodes on rec_nodes.parent_id = nodes.id
where  depth < :depth
)
select id
from   rec_nodes
where  col = :col;

只要:id:depth约束 with语句,上述内容就会很好(如果没有,它会构建整个图表,你绝对不希望发生这种情况。)

  

可用作低数据量的0 $云服务

不是云,也不是0美元,而是very cheap here。 (最后我查了一下,基本的VPS在共享服务器上提供了Postgres。整个过程由Postgres的一位创始人运行。)

Be wary直接在云中托管数据库。