Как стать автором
Обновить
58.53
Deep.Foundation
Фонд развития ассоциативных технологий.

Стартап с другой планеты

Время на прочтение12 мин
Количество просмотров11K

Привет, Хабр! Мы стартап Deep.Foundation, и сегодня мы официально публикуем альфа-версию своей портальной пушки Deep.Case!

Что же мы такое создали?

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

Для чего?

Мы мечтаем жить в мире, где менять проект так же легко, как и создавать его с нуля.

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

Мы мечтаем жить в мире, где вы можете использовать свой код снова и снова, чтобы не приходилось выдумывать велосипед каждый новый проект.

Мы мечтаем вывести бизнес-логику за пределы кода.

Мы мечтаем, чтобы программисты занимались творчеством, а не рутиной.

И чтобы воплотить наши мечты в жизнь мы придумали Deep.

Давайте вместе узнаем, получилось у нас или нет?

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

Мультипарадигменность

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

Архитектура

Deep в версии alpha.0 - это среда хранения данных, реагирования на семантические события в памяти, выполнения кода в изолированных контейнерах, управляемых нашим оркестратором. Таким образом, Deep предоставляет GraphQL API доступа к ассоциативной памяти с контекстнозависимой правовой системой и мультиязыковым кроссплатформенным стандартом выполнения кода в разных средах как docker/lxd/kuber/... в качестве реакций на события в связях или на запрос в соответствии с определённым роутингом.

Приложение

Для удобства разработки, система поставляется с приложением для Mac, Windows, Linux, как самостоятельное разворачиваемое решение в Docker и любыми другими способами. Вскоре добавим больше способов посадить семя глубины в таких средах как Kubernetes, Amazon, Azure, Heroku... и многие другие.

Дата-ориентированно

Data Driven Development - теория, тесно связанная с реактивностью и с Markov decision process в Reinforcement Learning, который используют в DeepMind.

Базовая идея: в центре всего сверхгибкое хранилище состояния. Все данные хранятся в нем. Большинство выполняемых вычислений - внутренние реакции на события в памяти, так как единственный API доступа - доступ к CRUD операциям над связями.

И в пространстве ассоциативности Deep решает вопрос совместимости любых моделей данных в общем виде.

Пожалуйста, положите вилы, сейчас все подробно расскажем. И да, не надо верить нам на слово, идите и изучите, ниже будут ссылки на документацию.

Это полностью Open Source решение https://github.com/deep-foundation. Оно доступно всем, бесплатно и передано в общественное достояние. Каждый может использовать Deep в своей работе, без каких-либо дополнительный условий, или возникающих препятствий.

Монетизация

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

После выпуска релизной stable версии (сейчас только альфа) мы создадим Deep.Space облачное решение для быстрой развёртки, балансировки, быстрых переездов между регионами и экземплярами Deep, соблюдения международных принципов вычисления и хранения информации, и целостной работы системы сквозь все границы и стандарты. Выполнения платных пакетов с открытого рынка разработчиков в недоступной пользователю части его арендованных мощностей согласно трехстороннему договору с провайдером, так чтобы связи управляющие этим воспринимались как естественная часть экосистемы конкретного deep экземпляра.

Для начала, что такое Deep?

Ранее мы публиковали две статьи на тему того, что есть ассоциативные связи. Тык и тык

Это пространство, состоящее из связей как из минимальных единиц смысла. В нем существуют гибкие правовые механики, состоящие из: деревьев определяющих диапазоны связей, селекторов позволяющих включить или исключить деревья в выборку, и правила для операций над связями, состоящие из селекторов на субъекты, объекты и действия. В связях может храниться код, который Deep самостоятельно запускает в изолированных средах в качестве реакции как на внутренние ассоциативные события, так и на внешние раздражители.

Связи
связь без начала и конца, замкнутая на себя дважды связь, связь у которой начало и конец это две другие связи, наследование через указание типа для каждой связи
связь без начала и конца, замкнутая на себя дважды связь, связь у которой начало и конец это две другие связи, наследование через указание типа для каждой связи

Связь - это хранимая единица смысла.

Каждая связь имеет тип представляемый связью (это может быть сама же эта связь или же другая связь). Связь, играющая роль типа, типизирует то, каким может быть её дочерная связь-экземпляр (созданная с type_id полем указывающим на связь-тип). Например если у связи-типа не будет from_id и to_id связь-экземпляр не сможет иметь from_id и to_id, а если они будут указывать на конкретные типы, связь-экземпляр сможет указывать ими только на связи-экземпляры соответствующих типов. Подробнее про типизацию в главе Typing.

Над связями можно производить операции через GraphQL (как открыть GraphQL playgroud в Deep) и через DeepClient. Подробнее про операции в главе Links.

К связям можно привязать значения (value) типа number, string или object. Возможность их существования также типизируется на уровне описания типа при помощи Value связи исходящей от связи-типа к связи Number, String или Object.

import { minilinks } from '@deep-foundation/deeplinks/imports/minilinks';
import { DeepClient } from '@deep-foundation/deeplinks/imports/deepclient';

apolloClient;

const deep = new DeepClient({ apolloClient });

// client methods select,insert,update,delete gets options as second argument
// options always contains: { table, returning, variables, name }

await deep.select(id); // { data: [Link] }
await deep.select([id]); // { data: [Link] }
await deep.select({ id: { _in: id } }); // { data: [Link] }

await deep.insert({}); // { data: [{ id }] }
await deep.insert({
	id, // can be reserved with client.reserve(count)
	from_id, to_id, type_id
});
// insert with nested links and values
await deep.insert({
	type_id: 1,
	string: { data: { value: 'Abc' } } // https://github.com/deep-foundation/deeplinks/issues/30
	from: { data: { type_id: 1 } },
	to: { data: { type_id: 1 } },
});

await deep.update({ link: { type: { _in: [1,2,3] } } }, { value: 'abc' }, { table: 'table123' }); // { data: [{ id }] }
await deep.update(id, { value: 'abc' }, { table: 'table123' }); // { data: [{ id }] }
await deep.update([id], { value: 'abc' }, { table: 'table123' }); // { data: [{ id }] }

await deep.delete({ type: { _in: [1,2,3] } }); // { data: [{ id }] }
await deep.delete(id); // { data: [{ id }] }
await deep.delete([id]); // { data: [{ id }] }

await deep.reserve(5); // reserve count: 5 ids // [167,168,169,170,171]
await deep.await(linkId); // await all link promises resolved and rejected

// get id by packageName/userId and contain names (as Promise)
await deep.id('@deep-foundation/core', 'Promise') // 9
// Promise link in core package have global id 9 in storage

// client types cache and minilinks deepclient integration coming coon...

// in react can be used hook
import { useDeep } from '@deep-foundation/deeplinks/imports/client';
const deep = useDeep();

Деревья

Ассоциативные связи могут строить множество разнообразных моделей данных, и деревья по связям могут быть построены в любом направлении. Механика деревьев в Deep обеспечивает универсальный язык описания правил построения материализованных путей, учитывая, что одна связь может быть как в нескольких деревьях, так и иметь множество родителей в рамках одного и того же дерева. Да, деревья не поддерживают рекурсию в структуре и предотвращают ее в рамках транзакции. Наличие таких деревьев позволяет получить предельную гибкость. Больше не нужно продумывать модель данных, исходя из оптимальной индексации. Можно построить модели данных, и лишь затем построить деревья по ним.

Теория и примеры деревьев в Deep в документации.

Исходный код в репозитории https://github.com/deep-foundation/materialized-path.

Мы постараемся вскоре выпустить статью с подробным разбором алгоритма.

Пример:

{
  links(where: { id: { _eq: 345 } }) {
    id # нашли связь 345
    up(args: { tree: 353 }) {
      # ищем все связи выше по дереву 353 (дерево как и все в системе тоже связь)
      id type_id from_id to_id
    }
  }
}
{
  "data": {
    "links": [
      {
        "id": 345,
        "up": [
          {
            "id": 343,
            "type_id": 328,
            "from_id": 0,
            "to_id": 0
          },
          {
            "id": 344,
            "type_id": 328,
            "from_id": 0,
            "to_id": 0
          },
          {
            "id": 345,
            "type_id": 328,
            "from_id": 0,
            "to_id": 0
          },
          {
            "id": 346,
            "type_id": 330,
            "from_id": 344,
            "to_id": 345
          },
          {
            "id": 347,
            "type_id": 330,
            "from_id": 343,
            "to_id": 344
          }
        ]
      }
    ]
  }
}

Селекторы

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

Подробнее про селекторы в Deep в документации.

{
  s1:selectors(where: {
	  # 340 связь входит в селектор 348
    item_id: { _eq: 340 }, # A6
    selector_id: { _eq: 348 },
  }) {
    selector_id item_id
  }{
  s2:selectors(where: {
		# 345 связь не входит в селектор 348
    item_id: { _eq: 345 }, # A5
    selector_id: { _eq: 348 },
  }) {
    selector_id item_id
  }
}
{
  "data": {
    "s1": [
      {
        "selector_id": 348,
        "item_id": 340
      }
    ],
		"s2": [],
  }
}

Правила

Это структура из связей, которая позволяет использовать разнонаправленные деревья индексации и селекторы по ассоциативной сети для установления правил. Она используется системой для свободной, зависимой от контекста, кастомизации правил select/insert/update/delete в зависимости от типа или попадания в селекторы по деревьям. Подробнее о правилах.

Пример из документации.

{
  can1:can(where: {
    subject_id: { _eq: 348 }, # User
    object_id: { _eq: 340 }, # A6
    action_id: { _eq: 349 }, # Dance
  }) {
    subject_id object_id action_id
  }
  can2:can(where: {
    subject_id: { _eq: 348 }, # User
    object_id: { _eq: 345 }, # A5 <==
    action_id: { _eq: 349 }, # Dance
  }) {
    subject_id object_id action_id
  }
}
{
  "data": {
    "can1": [
      {
        "subject_id": 348,
        "object_id": 340,
        "action_id": 349
      }
    ],
		"can2": [].
  }
}

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

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

Мы развиваем ассоциативный пакетный менеджер, который, аккуратно интегрируя их в систему, позволит устанавливать ассоциативные связи, публиковать и разрабатывать их, не покидая Deep.Case.

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

Больше никакого legacy!

Но, давайте теперь подробнее. Как оно работает.

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

Что это значит:

Ассоциативные данные доступны по единому API, в котором любые действия в системе выражены созданием/изменением/удалением связей от имени (jwt) той или иной связи в качестве авторизованного “юзера”, как это обычно называлось.

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

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

Обработчики

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

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

Из исполняемого кода доступен Deep.Client с gql-подключением от имени пакета или пользователя, от чьего имени выполняется код.

В будущих версиях мы планируем добавить ассоциативные модели монтирования/обновления/демонтирования исполняемого кода в форме процессов/компонентов/контейнеров/подов/нодов и прямо изнутри ассоциативной памяти. Фактически, мы сделаем, чтобы сквозная архитектура Глубины могла выполнять поведение, хранимое и контролируемое отслеживание в едином пространстве. Так, чтобы средой для исполнения были не только виртуальные сервера и докеры, а не микроконтроллеры, js на клиенте, unity/unreal engine точку выполнения.

Подробнее про Handlers в документации.

Да, вскоре мы добавим поддержку обработчиков, выполняющихся синхронно внутри транзакции, также с правовыми ограничениями и экземпляром Deep.Client. Это позволит писать бизнес-логику удобно как никогда прежде.

Какие выводы можно сделать?

Мы полностью убрали бизнес-логику из кода. Теперь проект любого размера, созданный на Deep, можно мутировать бесконечно, вы теперь независимы от модели данных.

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

Архитектура.

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

Мы работаем над несколькими нативными решениями, на C++, C#, Rust. Сейчас мы публикуем Deep 0.1.0-alpha.0 версию на базе нескольких надежных зависимостей:

  • PostgreSQL в качестве стабильной и проверенной временем базы данных с поддержкой партицирования, транзакций, триггеров, и распределенного хранения.

  • Hasura в качестве GraphQL адаптера и поставщика реализации стандарта bool_exp, берет на себя часть функционала postgresql storage engine.

    Deep.Foundation развивает свой диалект storage engines, на базе которого ведется разработка сразу нескольких конкурирующих реализаций хранилища, на C++, C# и Rust.

И это далеко не всё.

Подробнее с нашими планами можно ознакомиться в первой итерации дорожной карты.

ROADMAP

А теперь о планах. И о нас.

Для начала, о нашей идеологии.

Наша цель не просто сделать прикольную штуку и заработать на ней денег. Успех, финансы и признание всего лишь инструменты, которые позволят нам достичь нашей настоящей цели:

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

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

Мы хотим изменить мир так, чтобы его мог менять каждый!

Deep - это философия открытости и прозрачности.

Мы всегда обо всем говорим публично. Все материалы в нашем Notion. Факт любых деловых контактов нашей корпорации всегда будет обнародован. Решение о публикации или не публикации разговора принимает только вторая сторона. Мы даем слово, что не имеем возможности отказаться от такой публикации.

Вы можете ознакомиться с нашими подкастами и встречами в нашем YouTube. Больше ссылок на сайте deep.foundation.

На подкастах “Пещера дракона” мы разговариваем с экспертами о Deep. Вы можете ознакомиться с квалификацией наших экспертов в описании файлов.

Любой желающий, кстати, может стать нашим гостем, просто приходите в наш Discord и напишите в канале #hi “Хочу на подкаст”.

Если упомяните в сообщении слово “хабр” в любом очевидном начертании, получите тег habr и комнату только для тех, кто пришел на сервер таким образом.

Мы отрицаем кулуарность, как способ ведения бизнеса.

Теперь о наших надеждах

Мы хотим, чтобы Глубина объединила нас, позволила обмениваться своими механизмами творчества, чтобы ваши лучшие идеи и концепции стали доступны всем в единой среде.

Чтобы вы могли запускать стартапы так быстро и так легко, как было невозможно раньше.

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

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

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

Мы верим в то, что мы сможем выдержать этот кризис, только если создадим нечто эпохальное. Это наш ответ всей глупости, всему невежеству и ненависти, которые сейчас царят в мире.

С одной из существующих точек зрения, мы банда сумасшедших. Чего о нас говорит один лишь тот факт, что мы взяли в качестве официального лица компании, маскота любимого писателя – фантаста нашей команды.

Или, например, что мы объединяем наших последователей в натуральный культ ассоциативности..

Но больше всего нас характеризует то, что мы создаем компанию, которая говорит публично на уровне ЛЮБЫХ деловых контактов. И делаем это в России.

Мы всегда говорили, говорим, и будем говорить с нашей аудиторией прямо и открыто.

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

Наша ценность – люди. Любая, самая крутая идея обречена на забвение, если не найдется тех, кто эту идею перенесет в реальный мир.

Леди и джентльмены, в эти темные времена нам нужно сплотиться с самыми важными для нас людьми, с нашей аудиторией. Создавайте что-то на Deep, взаимодействуйте с нами, задавайте вопросы. Проект будет существовать, только если вы станете благодаря ему лучше и успешнее. Мы сможем вырасти только вместе с вами!

Хотим отдельно обратиться к тем, кого мы воодушевили. Те, кто уже увидели в Deep то, что видим мы. Нечто бездонное, неизведанное, чуждое как город в небесах. И столь же прекрасное.

Народ, вступайте в Кадеты глубины! Испытайте наши ценности, посмотрите, как ваша работа становится эффективнее.

Господа! Важный момент. Мы планируем привлечь инвестиции на развитие. В нашей ситуации - это не самая сложная задача, НО!

Глубина - это Дело всей нашей жизни. И потому на первых этапах мы будем отдавать предпочтение тем, кто верит в нас, тем, кто разделяет наши ценности, а не просто видит крутой, выгодный, но безликий актив.

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

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

Короче, мир лучше захватывать в большой компании. Присоединяйтесь.

В скором времени мы, кстати, выйдем на кикстартер.

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

Deep.

Творчество, которое просто работает.

Команда Deep Foundation благодарит Руслана Бикмаева за помощь в публикации статьи, чувак, без тебя бы это было гораздо сложнее! Мы очень рады что такие люди как ты есть в нашем комьюнити!

Только зарегистрированные пользователи могут участвовать в опросе. Войдите, пожалуйста.
Следующая статья должна быть:
9.72% Подробный анализ materialized path7
37.5% Пример мессенджера на Deep27
25% Пример трейдинг-бота на Deep18
20.83% Пример чат-бота на Deep15
18.06% Пример GitHub-бота на Deep13
27.78% Лучше бы вам не писать больше20
1.39% Лучше доделайте синхронные обработчики внутри транзакций и напишите об этом1
2.78% Лучше доделайте роутинг, чтобы кроме deep, ничего больше не было нужно и напишите об этом2
Проголосовали 72 пользователя. Воздержались 19 пользователей.
Теги:
Хабы:
0
Комментарии28

Публикации

Информация

Сайт
deep.foundation
Дата регистрации
Дата основания
Численность
31–50 человек
Местоположение
Россия
Представитель
Константин Дьяченко

Истории