доступ к диску с помощью индексатора b-дерева - PullRequest
2 голосов
/ 08 июля 2011

iv'e реализовано дерево B +, мои конечные узлы указывают на начало строки (записи) в CSV-файле

мой вопрос:

мое дерево предназначено для исключения дерева - значение ORDER, т. Е. (Количество указателей в каждом узле дерева)

Насколько я понимаю, значение заказа предполагает оптимизацию доступа к диску, поскольку можно прочитать весь блок диска в память за одну операцию доступа к диску.

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

например: (order * sizeof (Record))

Доступ к данным:

Указатель, как я уже сказал, содержит путь к файлу и смещение к началу строки (Запись)

  StreamReader reader ;
  reader.BaseStream.Position = leaf.Pointers[i].offset ; // leaf is a leaf node in the      tree 
  string record = reader.ReadLine();  

1) эквивалентна ли операция ReadLine () одному диску Access? В таком случае способ доступа к моим данным был бы таким же (доступ к диску, а не поиск), на ORDER (размер) узлов моего дерева не повлияет.

2) как можно изменить метод доступа к диску для оптимизации в соответствии с размером блока диска?

1 Ответ

0 голосов
/ 12 октября 2011

1) операция ReadLine () эквивалентна одному диску Access?в таком случае способ доступа к моим данным был бы таким же (доступ к диску, а не поиск), на порядок (размер) узлов моего дерева не повлияет.

Да, вашReadLine () - доступ к диску;Однако это не относится к вам.По сути, вы храните все данные «вне строки».Типичное дерево BTree или B + Tree хранит данные непосредственно в древовидной структуре, а не в связанном файле.Вы немного разбираетесь в деталях самой механики BTree, поэтому я не могу сказать вам, как повлияет порядок / размер.Вы храните структуру BTree или просто строите индекс в памяти?Если он сохранен, то как вы сохраняете / загружаете узел в графе?

2) как изменить способ доступа к диску для оптимизации в соответствии с размером блока диска?

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

...