Ассоциативные связи / Хабр
Что такое идеальный «квант информации» или «минимальная единица смысла» и зачем задаваться этим вопросом? С этим связано много боли, часто даже неосознаваемой. Мы предлагаем решение, но сначала нужно разобраться для чего это нужно. Рекомендуем ознакомиться с первой статьёй в серии.
Ретроспектива
Relational tables, document oriented databases, jsonb stores… В них мы часто представляем минимальной единицей смысла модель в таблице/коллекции. Модель состоит из разной структуры колонок/полей, и отражает некий реальный объект или абстрактную концепцию автора.
Такой подход создает проблемы:
Множество пространств адресации. (Если вы не видите ее, вскоре будет статья исключительно на эту тему, и вы увидите почему это проблема реальна).
Множество точек контроля структуры данных, изменение которых стоит дорого.
Совместимость только на том уровне который заложен автором.
Неспособность полноценно описать что-то новое без создания еще одной таблицы/коллекции.
Невозможность разделить предметы от отношений между ними.
Все эти проблемы решаются в ассоциативной модели данных Deep.Case.
Если вам интересна оптимизация или поиск по диапазонам в графе — здесь будет ссылка.
Давайте разбираться
Deep.Case оперирует концепцией Link (связь) как минимальной единицей смысла / квантом информации.
Links таблица
Links (сеть связей) очень похожа на граф, однако в графе есть однозначное деление на nodes (узлы) и edges (рёбра) ссылающиеся только на них. Links не разделяет эти пространства адресов. Это позволяет связям ссылаться на связи и нести любой смысл который в них может заложить автор моделей данных.
Link структура
Структура связи состоит из обязательных уникального id
связи и type_id
связи используемой как тип данной связи. Необязательные поля from_id
и to_id
могут быть заполнены только вместе.
Типы для создания связей легко создаются пользователем самостоятельно в рамках модели проекта, или поставляются вместе с импортируемыми моделями-пакетами.
Заполненные поля from_id
и to_id
ссылаются на другие связи. Такими связями можно описывать любые отношения.
{ links(where: { id: { _eq: 8 } }) { id type_id from_id to_id } }
{ "data": { "links": [ { "id": 8, "type_id": 1, "from_id": 7, "to_id": 6 } ] } }
Link как узел (node)
В связях можно не заполнять from_id
и to_id
. Такие связи играют роль node, узла, точки, предмета отношений.
{ links(where: { id: { _eq: 28 } }) { id type_id from_id to_id } }
{ "data": { "links": [ { "id": 28, "type_id": 6, "from_id": 0, "to_id": 0 } ] } }
Link как связь
Если from_id
и to_id
заполнены, связь играет роль отношения между узлами или связями. Она может ответить на вопрос как они связаны используя type_id
. Некоторое окружение узла связями может ответить на множество вопросов о его смысле, отношениях, предназначении, значении и состоянии.
{ links(where: { id: { _in: [6,7,8] } }) { id type_id from_id to_id } }
{ "data": { "links": [ { "id": 6, "type_id": 1, "from_id": 0, "to_id": 0 }, { "id": 7, "type_id": 1, "from_id": 0, "to_id": 0 }, { "id": 8, "type_id": 1, "from_id": 7, "to_id": 6 } ] } }
Единый GraphQL API
Это API позволяет очень многое, как например переходы по индексам на всех детей/родителей в определенных поддеревьях. Но об этом будут отдельные статьи.
Очевидно, что там доступна структура самой связи, а также из связи можно перейти к другим связям как по ее ссылкам (from_id
и to_id
), так и по обратным ссылкам от других связей (исходящих и входящих). Например, можно перейти на все связи которые ссылаются на данную связь по from_id
(исходят из неё) с помощью relationship out
, или по to_id
(входят в неё) с помощью relationship in
.
{ links(where: { id: { _eq: 8 } }) { id type { id } from { id type_id from_id to_id out { id type_id from_id to_id } } to { id type_id from_id to_id in { id type_id from_id to_id } } } }
{ "data": { "links": [ { "id": 8, "type": { "id": 1 }, "from": { "id": 7, "type_id": 1, "from_id": 0, "to_id": 0, "out": [ { "id": 8, "type_id": 1, "from_id": 7, "to_id": 6 } ] }, "to": { "id": 6, "type_id": 1, "from_id": 0, "to_id": 0, "in": [ { "id": 8, "type_id": 1, "from_id": 7, "to_id": 6 }, { "id": 13, "type_id": 1, "from_id": 6, "to_id": 6 }, { "id": 24, "type_id": 22, "from_id": 23, "to_id": 6 } ] } } ] } }
SQL-like queries
Мы можем не только получать данные по описанным выше структурам. Мы можем применять sql-like where
предикат для выполнения разнообразных сложных фильтраций на каждом уровне.
{ links(where: {id: { _eq: 6 } }) { id type { id } from { id } to { id } out(where: { from_id: { _eq: 6} }) { id type_id from_id to_id } in(where: { type_id: { _eq: 1} }, limit: 1) { id type_id from_id to_id } } }
{ "data": { "links": [ { "id": 6, "type": { "id": 1 }, "from": null, "to": null, "out": [ { "id": 13, "type_id": 1, "from_id": 6, "to_id": 6 } ], "in": [ { "id": 8, "type_id": 1, "from_id": 7, "to_id": 6 } ] } ] } }
Subscriptions
И все это сразу с поддержкой подписок. Вы можете просто сказать на изменение какой структуры вы хотите подписаться — и вы будете получать обновления результатов вашего запроса.
subscription { links(where: { from_id: { _eq: 7 }, to_id: { _eq: 6 } }) { id type_id } }
Поддержите ассоциативные технологии
Мы создаем среду разработки (коробочную CE/EE версию и SaaS версию), позволяющую использовать ассоциативный подход для решения ваших бизнес задач, нуждающихся в хранении данных, с возможностью адаптации под любые изменения бизнеса. Мы создадим распределённую сеть серверных кластеров в едином ассоциативном пространстве, в том числе чтобы не думать о региональном законодательстве, создавая проект. Мы создаём культуру публикации повторно используемых моделей данных с их поведением.
Присоединяйтесь к нашему сообществу в Discord. Подпишитесь на ранний доступ в нашем Waitlist или поддержите нас на Patreon. http://deep.foundation/
На нашем сайте можно найти ссылки на черновики будущих статей находящихся в разработке, ссылки на исходники кода, планы по project и product менеджменту и invest презентации.
Ассоциация. Ассоциативные связи и цепочки
Фильм «Шоколад»
Ассоциация – связь в памяти, когда вслед за одним в голове человека без обоснований появляется другое.
Домашняя птица? – Курица! Поэт? – Пушкин!
Откройте словарь в случайном месте и ткните пальцем в случайное слово. Прочтите его. Теперь назовите несколько других слов, которые приходят вам на ум, когда вы произносите первое слово. Например: «белый» -> «снег», «белый» -> «день», «белый» -> «свет»; «черная» -> «сажа», «черная» -> «ворона»; «танк» -> «броня», «танк» -> «пушка». И так далее. Такая пара слов называется ассоциацией. Если взять второе слово в паре и придумать ассоциацию уже к нему, то возникнет цепочка из трех слов и двух ассоциаций.
Таким образом можно строить сколь угодно длинные цепочки.
Почему и как ассоциации образуются сами
Ассоциации появляются чаще всего по смежности в пространстве и во времени: говоря о домашней птице, чаще всего упоминают курицу – мы это запомнили. Рядом с ложками на столе часто лежат вилки – отсюда частая ассоциативная связь «ложка-вилка». А «ложка» и «термоядерный коллайдер» – ни пространственно, ни временно в нашем опыте не связаны, и такая ассоциация нетипична. Частным случаем являются ассоциации по сходству (голубое—синее) и по контрасту (черное—белое).
Когда ассоциация чего-то с чем-то у нас возникает, а когда – нет? Чаще всего влияет фактор впечатления и новизны. Чем ярче и сильнее нечто произвело на нас впечатление, тем скорее у нас это не просто запомнится, но запомнится в связи со всем тем, что это окружало: где, с кем, когда, как… Аналогично, быстрее и ярче ассоциации возникают в связи с чем-то новым, что привлекло внимание в силу эффекта новизны.
Кроме эффекта новизны, на образование ассоциаций влияет эффект повторения. Если эта девушка обычно улыбается, ее будут чаще называть Солнышком. Улыбайтесь чаще!
Многое определяется и направленностью внимания самого человека. У девочек – девчачьи ассоциации, у мальчиков – мальчиковые, у взрослых людей – взрослые, у сексуально заряженных молодых людей ассоциации преимущественно сексуальные. «О чем ты думаешь, глядя на кирпич? – О девушках. – А почему? Как связаны кирпич и девушки? – А я о них всегда думаю. ..»
Физиологическим механизмом образования большинства ассоциаций, скорее всего, являются сочетательные рефлексы в понимании В.М. Бехтерева. Впрочем, возникновение большинства ассоциаций можно объяснить как условными рефлексами по И.П. Павлову, так и понятием «подкрепление», чаще используемым в бихевиоризме.
Использование ассоциаций в практической психологии
Метод свободных (у Юнга – направленных) ассоциаций активно использовался и используется в психоанализе.
В проективных тестах людям предъявляется картинка с неясным содержанием, и по характеру преобладающих ассоциативных связей можно делать вывод о характерном для человеке способе восприятия и мышления, о его чувствах, потребностях и интересах.
В 1936 году Милтон Эриксон написал статью, в которой изложил результаты своего эксперимента с тестом словесных ассоциаций, суть которого состоит в том, что человек бессознательно дает ассоциативную связь на стимульное слово теми словами, которые описывают его проблему. Например, на стимульное слово «живот» испытуемая дала такие слова: большой, беспокойство, младенец, бояться, операция, болезнь, забыто. И это была информация о ее нежелательной беременности, которую она не помнила.
Управляемые ассоциации
Творческие люди сами могут создавать свои творческие ассоциации, находя интересные и запоминающиеся ассоциации. Управляемые ассоциации – ассоциации, которые мы сами создаем и сами можем корректировать или стирать. Создавая управляемые ассоциации, мы с вами можем управлять своим вниманием и памятью.
Если вы хотите вспомнить, что вам нужно сегодня при выходе из дома, ярко представьте, как вы видите прихожую и сразу вспоминаете: «Зонтик!»
А если услышали хороший анекдот, сразу прикиньте, в какой компании и обстановке он будет уместен, а сразу же создайте себе картинку, что вы с этими людьми в такой обстановке и рассказываете этот анекдот. С высокой вероятностью вы его в той обстановке – вспомните.
ассоциативных ссылок. Что такое идеальный «квант… | Иван Глазунов | CodeX
Photo by Uriel SC on UnsplashЧто такое идеальный «квант информации» или «минимальная единица смысла» и зачем задавать такой вопрос? С этим связано много боли, часто даже не осознаваемой. Мы предлагаем решение, но сначала нужно разобраться, для чего оно нужно. Рекомендуем прочитать первую статью цикла.
Реляционные таблицы, документно-ориентированные базы данных, хранилища jsonb… Мы часто используем модель в таблице/наборе как минимальную единицу значения. Модель состоит из столбцов/полей с различной структурой и отражает некий реальный объект или абстрактное понятие, определенное автором.
Такой подход создает проблемы:
- Большое количество адресных пространств. (Если вы не видите в этом проблемы, то скоро где будет статья исключительно на эту тему, и вы увидите, почему эта проблема реальна).
- Много контрольных точек структуры данных, изменение которых требует больших затрат.
- Совместимость только на уровне, определенном автором.
- Неспособность полностью описать что-то новое без создания другой таблицы/коллекции.
- Невозможность отделить объекты от отношений между ними.
Все эти проблемы решаются в ассоциативной модели данных Deep. Case.
Если вас интересует оптимизация или поиск по диапазонам в графе, то здесь будет ссылка на эту статью.
Deep.Case работает с концепцией Link как с минимальной единицей значения/квантом информации.
Links (сеть ссылок) очень похожа на граф, однако граф имеет деление на узлы и ребра, относящиеся только к узлам. Ссылки не разделяют эти адресные пространства. Это позволяет ссылкам ссылаться на ссылки и нести любое значение, которое может вложить в них автор моделей данных.
Структура ссылки состоит из обязательных уникальных id
и type_id
, используемых в качестве типа этой ссылки. Необязательные поля from_id
и to_id
можно указывать только вместе.
Типы для создания ссылок легко создаются самим пользователем в рамках модели проекта или поставляются с импортированными пакетами моделей.
Указанные поля from_id
и to_id
ссылаются на другие ссылки. Такими ссылками можно описать любые отношения.
{
ссылки (где: { id: { _eq: 74 } }) {
id
type_id
from_id
to_id
}
}{
"data": {
"links": [
" id"
: 74,
"type_id": 70,
"from_id": 72,
"to_id": 73,
}
]
}
}
Вы можете оставить поля from_id
и to_4 пустыми в ссылках Такие связи играют роль узла, точки, объекта отношений.
{
ссылки (где: { id: { _eq: 28 } }) {
id
type_id
from_id
to_id
}
}{
"данные": {
"ссылки": [
{
"id": 28,
"type_id": 6,
"from_id": 0,
"to_id" : 0
}
]
}
}
Если указаны from_id
и to_id
, ссылка играет роль отношения между узлами или ссылками. Он может ответить на вопрос, как они связаны, используя type_id
. Окружение узла со ссылками может ответить на многие вопросы о его значении, отношениях, назначении, значении и состоянии.
{
ссылки(где: { id: { _in: [6,7,8] } }) {
id
type_id
from_id
to_id
}
}{
"data": {
"links": [
{
"id": 6,
"type_id": 1,
"from_id": 0,
"to_id": 0
},
{
"id": 7,
"type_id": 1,
" from_id": 0,
"to_id": 0
},
{
"id": 8,
"type_id": 1,
"from_id": 7,
"to_id": 6
}
]
}
}
Этот API позволяет делать множество вещей, таких как обход всех дочерних/родительских элементов в определенных поддеревьях с использованием индекса. Но об этом будут отдельные статьи.
Очевидно, там доступна структура самой ссылки, а также по ссылке можно перейти на другие ссылки как по ее ссылкам ( from_id
и to_id
), так и по обратным ссылкам с других ссылок (исходящей и входящие). Например, можно перейти ко всем ссылкам, которые ссылаются на эту ссылку по from_id
(эти ссылки идут от нее) с помощью отношения out
, или по to_id
(эти ссылки идут на него) с помощью отношения в
.
{
Ссылки (где: {id: {_eq: 8}}) {
ID
Тип {
ID
}
от {
ID
TYP_ID
FROM_ID
TO_ID
OUT {
ID
от
до
до {
ID
до
до {
ID
до
до {
ID
.
}
}
до {
ID
TYPE_ID
FROM_ID
TO_ID
IN {
ID
TYPE_ID
FROM_ID
TO_ID
}
}
}
} {
}
}
}
} {
}
. "id": 8,
"type": {
"id": 1
},
"from": {
"id": 7,
"type_id": 1,
"from_id": 0,
"to_id": 0,
"out": [
{
"id": 8,
"type_id": 1,
"from_id": 7,
"to_id": 6
}
]
},
"to": {
"id": 6,
"type_id": 1,
"from_id": 0,
"to_id" ": 0,
"in": [
{
"id": 8,
"type_id": 1,
"from_id": 7,
"to_id": 6
},
{
"id": 13 ,
"type_id": 1,
"from_id": 6,
"to_id": 6
},
{
"id": 24,
"type_id": 22,
"from_id": 23,
"to_id": 6
}
]
}
}
]
}
}
Мы можем получать не только данные по структурам, описанным выше. Мы можем использовать sql-подобный предикат where
для выполнения различных сложных фильтров на каждом уровне.
{
ссылки(где: {id: {_eq: 6}}) {
id
type {id}
from {id}
to {id}
out(where: {from_id: {_eq: 6}} ) {
id
type_id
from_id
to_id
}
in(где: { type_id: { _eq: 1} }, limit: 1) {
id
type_id
from_id
to_id
}
}
}{
"данные": {
"ссылки": [
{
"id": 6,
"type": {
"id": 1
},
"from": null,
"to": null,
"out": [
{
"id": 13,
"type_id": 1,
"from_id": 6,
"to_id": 6
}
],
"in": [
{
"id": 8,
"type_id": 1,
"from_id" ": 7,
"to_id": 6
}
]
}
]
}
}
И все это уже с поддержкой подписок. Вы можете просто описать, на какую структуру вы хотите подписаться — и вы будете получать обновления результатов вашего запроса в режиме реального времени.
подписка {
ссылки(где: { from_id: { _eq: 7 }, to_id: { _eq: 6 } }) {
id
type_id
}
}
Создаем среду разработки (коробочная CE/EE версия и SaaS версия), которая позволяет использовать хранилище данных для решения ваших бизнес-задач с возможностью адаптации к любым изменениям бизнеса с помощью ассоциативного подхода. Создадим распределенную сеть серверных кластеров в едином ассоциативном пространстве, в том числе, чтобы не думать о региональном законодательстве при создании проекта. Мы создаем культуру публикации повторно используемых моделей данных с их поведением.
Присоединяйтесь к нашему сообществу в Discord. Подпишитесь на ранний доступ в нашем списке ожидания или поддержите нас на Patreon.
На нашем сайте вы можете найти ссылки на черновики будущих статей в разработке, ссылки на исходники кода, планы по управлению проектами и продуктами и инвестиционные презентации.
определение ассоциативной связи | Английский словарь для учащихся
Ассоциативные мысли — это вещи, о которых вы думаете, потому что вы видите, слышите или думаете о чем-то, что напоминает вам об этих вещах или ассоциируется у вас с этими вещами.
Ассоциативная вина укоренилась в его душе...
Перевод английского Cobuild Collins Dictionary  
Смотрите также:
ассоциировать, ассоциировать, ассоциировать, ассимилировать
Collaborative Dictionary English Cobuild
|
Вы хотите отклонить эту запись: дайте нам свои комментарии (неправильный перевод/определение, повторяющиеся записи. |