Хранение Иерархии каталогов в хранилище Данных в виде пар "ключ-значение"

Если вы хотите сосредоточиться на разработке своего приложения для Windows, я предлагаю вам использовать WPF.

Сделать контроллеры прозрачными в WPF очень просто.

<TextBox Width="200" Height="40" Opacity="0.5"/>
37
задан Salvador Dali 22 April 2015 в 00:49
поделиться

4 ответа

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

Другой моделью для хранения иерархических данных в (реляционной) базе данных является вложенный набор модель . Его реализация в базах данных SQL хорошо известна . Также см. в этой статье модифицированный алгоритм обхода дерева предварительного порядка .

Очень простой метод: вы можете сохранить путь для каждого объекта - с их помощью будет легко запрашивать деревья в базах данных NOSQL:

{ path: "Color", ... }
{ path: "Color.Red", ... }
{ path: "Color.Red.Apple", ... }
{ path: "Color.Red.Cherry", ... }

Когда узлы будут удалены или переименованы, некоторые пути должны быть обновлены. Но в целом этот способ выглядит многообещающим. Вам просто нужно зарезервировать специальный символ в качестве разделителя. Накладные расходы на дисковое пространство должны быть незначительными.

edit: этот метод называется материализованным путем

Наконец,

58
ответ дан 27 November 2019 в 04:50
поделиться

У меня нет большого опыта работы с NOSQL, так что это не окончательный ответ, но вот как я подхожу к нему:

Я бы, вероятно, использовал ваш первый подход , где у вас есть:

{
  dir: 'dir_name',
  parent_dir: 'parent_dir_name'
}

А затем настройте map-reduce для быстрого запроса дочерних элементов каталога. Функциональность MongoDB по уменьшению карты по-прежнему доступна только в ветке разработки, и я еще не работал с ней, но в CouchDB (и я предполагаю, с некоторыми изменениями в MongoDB) вы могли бы сделать что-то вроде:

map:
function(doc) {
  emit( doc.parent_dir, doc.dir );
}

reduce:
function(key, values) {
  return( values );
}

Что бы даст вам список подкаталогов для каждого родительского каталога.

1
ответ дан 27 November 2019 в 04:50
поделиться

I suggest storing a heap to the the id's of the data items. I think this is the best plan. If you need lots and lots of stuff any heap element could be an index to another heap.

eg

{ "id:xxx", "id:yyy", "sub-heap-id:zzz"....}

If this is not clear post a comment and I will explain more when I get home.

-1
ответ дан 27 November 2019 в 04:50
поделиться

Сделайте индекс!

http://www.mongodb.org/display/DOCS/Indexes

-3
ответ дан 27 November 2019 в 04:50
поделиться
Другие вопросы по тегам:

Похожие вопросы: