Какая система баз данных подходит для этого - PullRequest
1 голос
/ 11 июня 2011

Для приложения, написанного на Scala, я ищу «лучшую» систему баз данных для следующих требований:

  • Хорошая поддержка запросов, таких как: Для узла найдите все подключенные узлы, все узлы, соединенные через другой узел со значением 'somevalue'
  • Доступен как облачный сервис за 0 $ для небольших объемов данных.
  • Хорошая поддержка сообщества и документация

Ответы [ 2 ]

4 голосов
/ 11 июня 2011

Скорее всего, вы пытаетесь сохранить график в вашей базе данных.

Существуют графовые базы данных, специально созданные для хранения узлов и соединения узлов с вершинами (в ваших терминах значения). http://en.wikipedia.org/wiki/Graph_database#Graph_database_projects

Боюсь, в облаке нет бесплатных опций, предлагаемых бесплатно. Вам следует купить VPS, экземпляр Amazon EC2, экземпляр Windows Azure или что-либо еще для размещения вашей базы данных. В наши дни ничего не выходит на свободу.

Среди графовых баз данных мой выбор будет neo4j, он имеет хорошую поддержку, документацию, сообщество и специально разработан для использования с Java (и, конечно, Scala). Однако я слышал, что orientdb и vertexdb также хороши для этого.

2 голосов
/ 11 июня 2011

Хорошая поддержка запросов, таких как: Для узла найдите все подключенные узлы, все узлы, соединенные через другой узел со значением 'somevalue' Хорошая поддержка сообщества и документация

Postgres вполне достаточно, если вам нужно только найти узлы в окрестности, поскольку он поддерживает рекурсивные запросы .

Предполагая, что у вас ориентированный граф 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, а очень дешево здесь . (В последний раз я проверял, базовый VPS предлагает Postgres на общем сервере. И все это управляется одним из основателей Postgres.)

Будьте осторожны при непосредственном размещении БД в облаке.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...