norian: (Default)
[personal profile] norian
Гибридная Графовая База Данных (ака отверточка с моторчегом для моделирования моделей)

День 1. Общие размышления и архитектура.

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

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

Зачем ещё это может быть нужно:



- сохранение любых данных любых семантических графов для построения модельной реальности
- автоматизированная сериализация объектов в соответствующих языках, включая указатели на другие объекты
- поддержка компиляции кода как базы данных ассетов
- автоматизация одновременной разработки софта и железа для решения какой-то прикладной задачи
- гибридность означает поддержку массовых операций и упрощённый перенос данных существующих SQL баз. То есть в обычных графовых базах надо обрабатывать каждый узел и каждый линк отдельно, обычно для этого используется специальный язык с интерпретатором. В гибридной базе используются функции стандартного языка (с++) и возможна автоматизированная трансляция SQL (в виде опциональных плагинов)
- также может быть полезна унифицированная поддержка наборов настроек приложений, чтобы все данные лежали в одном месте и с одинаковыми API доступа

Какие могут быть преимущества по сравнению с другими системами баз данных:

- отсутствие типов данных при проектировании структуры и хранении. Типы данных интерпретируются на уровне стандартного языка. Для обозначения структуры данных и поля данных достаточно имени (которое может быть автоматически импортировано из исходного кода приложения или другого источника)
- прозрачная передача данных при сериализации объектов, не требующая использовать дополнительные языки и поддерживающая автоматическую генерацию кода. Ну то есть какой-то инструмент для генерации процедур сохранения и загрузки данных объектов, которые затем можно просто вставить в логику приложения

Базовые понятия графовой базы данных:

Узел данных - структура данных как единица хранения и обработки. Например, данные студентов, преподавателей и групп студентов из классического примера базы данных.
Линк - связь между узлами данных для поддержки логики приложения. Например, линк между студентами и группой. У линка могут быть свои данные, то есть в некотом ограниченном смысле он является и узлом данных.

Блюпринт - ака тип, ака класс, ака вид - общий прототип для отдельных узлов данных и линков. Например, блюпринт "студент" содержит поля "имя" и "курс", но не содержит реального имени и номера курса, а узел данных типа "студент" содержит данные конкретного студента. Термин "блюпринт" используется чтобы избежать путаницы с типами данных языка разработки (с++), но по сути это одно и то же.

Метаданные - данные для организации общей структуры. Например, список блюпринтов.

Архитектура

Очевидно нужна поддержка функциональности для всех вышеперечисленных базовых понятий - узлов данных, линков, блюпринтов и метаданных.

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

Для ускорения доступа к данным нужна индексация.

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

Система для разработки и тестирования - Linux.

Date: 2026-01-19 01:10 pm (UTC)
juan_gandhi: (Default)
From: [personal profile] juan_gandhi
В принципе не моё дело, но всякий граф может быть представлен в виде таблицы, а в реляционных базах все операции вполне научны и не требуют индивидуального лазания по узлам. Короче, я за SQL. Но не моё дело. С сетевой базой баловался, в 92-м, когда они были модны некоторое время.

Date: 2026-01-19 01:47 pm (UTC)
juan_gandhi: (Default)
From: [personal profile] juan_gandhi
Окей, уровень n - это сложная тема, это нужно n раз повторить. А в сетевой как?
Edited Date: 2026-01-19 01:47 pm (UTC)

Date: 2026-01-19 04:39 pm (UTC)
juan_gandhi: (Default)
From: [personal profile] juan_gandhi
А вообще интересная идея, держать графы в графической базе, а всё остальное - в нормальной.

Profile

norian: (Default)
Norian

January 2026

S M T W T F S
    1 2 3
456 78 910
11121314 151617
18 19 20 21 222324
25262728293031

Most Popular Tags

Page Summary

Style Credit

Expand Cut Tags

No cut tags
Page generated Jan. 22nd, 2026 12:52 pm
Powered by Dreamwidth Studios