объектный граф - ponyatov/nimbook GitHub Wiki

Объектный граф

  • https://en.wikipedia.org/wiki/Object_graph
  • абстрактный тип данных = структура данных, состоящая из объектов, и связей между ними, в виде сети;
  • связи задаются указателями, поэтому ОГ это направленный циклический граф (узел может использовать ссылки на самого себя)

Эта структура бесшовно ложится на любой язык программирования с ООП, в т.ч. указатели могут реализовываться через машинные адреса памяти, если не требуется делать распределенную систему, или использовать хранилище. Если структуру требуется хранить в базе данных (RDBMS, key/value,..) или делать распределенной между несколькими компьютерами, в качестве указателей нужно использовать уникальные id идентификаторы (и добавлять дополнительные поля с информацией о месте хранения, метки времени изменения/синхронизации, и т.д.).

Главное преимущество использования объектного графа вместо встроенных типов языка Nim -- унифицированное представление произвольных данных, не имеющих жёстко заданной реляционной структуры. Ценой за такую универсальность является потеря памяти на хранение служебной информации, формирующей словарь slot[] и вектор next[], и оборачивание объектов языка Nim.

базовый класс узла ОГ