объектный граф - ponyatov/nimbook GitHub Wiki
Объектный граф
- https://en.wikipedia.org/wiki/Object_graph
- абстрактный тип данных = структура данных, состоящая из объектов, и связей между ними, в виде сети;
- связи задаются указателями, поэтому ОГ это направленный циклический граф (узел может использовать ссылки на самого себя)
Эта структура бесшовно ложится на любой язык программирования с ООП, в т.ч. указатели могут реализовываться через машинные адреса памяти, если не требуется делать распределенную систему, или использовать хранилище. Если структуру требуется хранить в базе данных (RDBMS, key/value,..) или делать распределенной между несколькими компьютерами, в качестве указателей нужно использовать уникальные id
идентификаторы (и добавлять дополнительные поля с информацией о месте хранения, метки времени изменения/синхронизации, и т.д.).
Главное преимущество использования объектного графа вместо встроенных типов языка Nim -- унифицированное представление произвольных данных, не имеющих жёстко заданной реляционной структуры. Ценой за такую универсальность является потеря памяти на хранение служебной информации, формирующей словарь slot[]
и вектор next[]
, и оборачивание объектов языка Nim.