The OpenNET Project / Index page

[ новости /+++ | форум | wiki | теги | ]

Первый стабильный релиз реляционно-графовой СУБД EdgeDB

11.02.2022 23:09

Доступен первый стабильный релиз СУБД EdgeDB, представляющую собой надстройку над PostgreSQL с реализацией реляционно-графовой модели данных и языка запросов EdgeQL, оптимизированных для работы со сложными иерархическими данными. Код написан на языках Python и Rust (парсер и критичные к производительности части) и распространяется под лицензией Apache 2.0. Клиентские библиотеки подготовлены для языков Python, Go, Rust и TypeScript/Javascript. Предоставляется инструментарий командной строки для управления СУБД и интерактивного выполнения запросов (REPL).

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


   type Person {
     required property name -> str;
   }
   type Movie {
     required property title -> str;
     multi link actors -> Person;
   }

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

Предоставляются встроенные инструменты для миграции схемы хранения - после изменения схемы, задаваемой в отдельном esdl-файле, достаточно выполнить команду "edgedb migration create" и СУБД проанализирует различия в схеме и в интерактивном режиме сгенерирует скрипт для перехода на новую схему. Автоматически отслеживается история изменения схемы.

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


   select Movie {
     title,
     actors: {
       name
     }
   }
   filter .title = "The Matrix"

   insert Movie {
     title := "The Matrix Resurrections",
     actors := (
       select Person
       filter .name in {
         'Keanu Reeves',
         'Carrie-Anne Moss',
         'Laurence Fishburne'
       }
     )
   }

   for number in {0, 1, 2, 3}
   union (
     select { number, number + 0.5 }
   );



  1. Главная ссылка к новости (https://www.edgedb.com/blog/ed...)
  2. OpenNews: Первый стабильный выпуск графо-ориентированной СУБД Nebula Graph
  3. OpenNews: Доступна распределённая графо-ориентированная СУБД Dgraph 0.4
  4. OpenNews: Релиз СУБД Neo4j 1.3, ориентированной на хранение графов
  5. OpenNews: Компания Alibaba открыла код распределённой СУБД PolarDB, основанной на PostgreSQL
  6. OpenNews: Опубликована СУБД immudb 1.0, обеспечивающая защиту от искажения данных
Лицензия: CC-BY
Тип: Программы
Короткая ссылка: https://opennet.ru/56682-edgedb
Ключевые слова: edgedb, database, postgresql
При перепечатке указание ссылки на opennet.ru обязательно


Обсуждение (62) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.1, Аноним (1), 23:47, 11/02/2022 [ответить] [﹢﹢﹢] [ · · · ]  
  • –3 +/
    годно. с релизом!
     
     
  • 2.19, лютый жабби__ (?), 08:53, 12/02/2022 [^] [^^] [^^^] [ответить]  
  • +/
    >годно

    а бенчмарки постеснялись сделать? сколько графовых поделок не тестил, никто даже близко не догоняет neo4j (на чуть более сложных примерах, чем shortestpath или match)

     
     
  • 3.34, Анонн (?), 10:51, 12/02/2022 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Лишь бы написать...
    Открыл, запустил, проверил подходит или нет https://github.com/edgedb/webapp-bench
     
     
  • 4.55, лютый жабби__ (?), 17:02, 12/02/2022 [^] [^^] [^^^] [ответить]  
  • +/
    >Открыл, запустил, проверил подходит или нет

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

     
     
  • 5.60, Аноним (60), 19:11, 12/02/2022 [^] [^^] [^^^] [ответить]  
  • +1 +/
    А зачем ты тогда нужен? Погонщик скажет и будешь за зарплату тестить, никуда не денешься. И тикеты не забудь закрыть, висят тебе уже два дня.
     
  • 5.77, Ag (ok), 12:33, 13/02/2022 [^] [^^] [^^^] [ответить]  
  • +/
    Жалко времени - занесите денег тестерам, вместе с постановкой задачи. Или вам и денег жалко?!
     
     
  • 6.79, лютый жабби__ (?), 08:15, 14/02/2022 [^] [^^] [^^^] [ответить]  
  • +/
    Читать научитесь, комментаторы. Где официальные бенчмарки? А их нет => скорее всего это поделие даже в искуственных примерах не может обогнать конкурентов...

    Нафиг оно нужно время на него тратить?

     
     
  • 7.80, лютый жабби__ (?), 08:19, 14/02/2022 [^] [^^] [^^^] [ответить]  
  • +/
    Взять тех же arangoDB, они поднатужились и родили статейку как они якобы порвали всех конкурентов лохматых версий и монго и нео4ж. Статейка разумеется не обновляется годами, и разумеется на чуть более других тестах всё становится сильно наоборот... но хоть в чём-то арангутанги лучше или наравне с нео4ж. А тут вообще молчок... просто поделие в вакууме для фанатов постгреса?
     
  • 3.81, adolfus (ok), 01:08, 16/02/2022 [^] [^^] [^^^] [ответить]  
  • +/
    Вы еще сравните с голым ISAM, что лежит под SQL.
    За любой шаг навстречу программисту приходится платить пользователю потерей функционала, синжением производительности и уменьшением памяти, доступной для выделения из кучи, что опять же приводит к снижению призводительности, но уже на порядок. Хотя, если в составе есть приложение, позволяющее графически строить схему данных без писанины кода, типа, как в кларионе, для эскизного проектирования, в принципе, годно.

     

  • 1.2, Bx (ok), 23:56, 11/02/2022 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    а где я могу сделать
    select Movie {
         title,
         actors: {
           name
         }
       }
       filter .title = "The Matrix"

    ???
    про инъекции не слышали, поди?

     
     
  • 2.18, Аноним (18), 07:27, 12/02/2022 [^] [^^] [^^^] [ответить]  
  • +3 +/
    Доку бы открыл https://www.edgedb.com/docs/edgeql/parameters.
     
  • 2.28, Аноним (28), 09:48, 12/02/2022 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Ну так как теперь модно, через curl ставим. В зависимостях ржавый, ради cli, при этом полноценная клиентская библиотека на ржавом так и не дописана. Клиента для "your favorite language" ставим отдельно через npm/pip. Классика...
     

  • 1.3, Аноним (3), 00:25, 12/02/2022 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Графы это хорошо, но nosql выбирают из-за эффективного горизонтального масштабирования из коробки. Для нагруженных проектов отпадает автоматом.
     
     
  • 2.4, Bx (ok), 00:36, 12/02/2022 [^] [^^] [^^^] [ответить]  
  • –4 +/
    > Графы это хорошо, но nosql выбирают из-за эффективного горизонтального масштабирования
    > из коробки. Для нагруженных проектов отпадает автоматом.

    "Эвона, как"(C) И как масштабируются K-V горизонтально?

     
     
  • 3.6, Аноним (3), 00:44, 12/02/2022 [^] [^^] [^^^] [ответить]  
  • +4 +/
    Шардированием K ессно. Вопрос то в чём?
     
     
  • 4.7, Bx (ok), 00:51, 12/02/2022 [^] [^^] [^^^] [ответить]  
  • –5 +/
    > Шардированием K ессно. Вопрос то в чём?

    Это не вопрос, наверное. Про CAP-теорему не все только лишь слышали, все применяют :) Только не все понимают, что делаю это.

     
     
  • 5.23, Аноним (23), 09:25, 12/02/2022 [^] [^^] [^^^] [ответить]  
  • +/
    Те кто применяют CAP теорему весьма посредственные личности и не вдупляют, что она не работает. Читайте авторов.
     
     
  • 6.29, Bx (ok), 09:58, 12/02/2022 [^] [^^] [^^^] [ответить]  
  • –1 +/
    > Те кто применяют CAP теорему весьма посредственные личности и не вдупляют, что
    > она не работает. Читайте авторов.

    Точно. Просьба как можно шире свое мнение распространть.

     
  • 2.20, лютый жабби__ (?), 08:56, 12/02/2022 [^] [^^] [^^^] [ответить]  
  • +/
    >но nosql выбирают из-за эффективного горизонтального

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

     
     
  • 3.46, Аноним (3), 14:09, 12/02/2022 [^] [^^] [^^^] [ответить]  
  • +/
    По факту графы реализуются поверх любой бд. Это лишь абстракция. И на aws и на azure есть такие прослойки поверх соответственно dynamodb и cosmosdb.
     
     
  • 4.48, Аноним (18), 14:18, 12/02/2022 [^] [^^] [^^^] [ответить]  
  • +/
    DynamoDB это key-value, поверх неё ты графы не построишь.

    Ты построишь только поверх реляционной БД. И ничего лучше пока не придумали.

     
     
  • 5.53, Аноним (3), 15:50, 12/02/2022 [^] [^^] [^^^] [ответить]  
  • +/
    Я не спрашиваю, а утверждаю. Зайди на aws или azure и убедись. Графы это предельно примитивная конструкция и key-value более чем достаточно. Скорее вопрос в том, а нужны ли они вообще. И почти всегда ответ - не нужны.
     
     
  • 6.59, Аноним (18), 19:04, 12/02/2022 [^] [^^] [^^^] [ответить]  
  • +/
    У нас была основная "база данных" на DynamoDB. Я её знаю вдоль и поперек.

    Либо вы очень плохо знаете и понимаете DynamoDB, либо совсем не разбираетесь что такое реляционная база данных.

    Начать надо с самого простого - ACID и транзакций. Которых у DynamoDB нет.

    Это даже не обычная БД, а кусок овна.

    Рассчитана на лохов и менеджеров.

     
     
  • 7.62, Аноним (3), 19:51, 12/02/2022 [^] [^^] [^^^] [ответить]  
  • +/
    Угу, 10 лет ежедневной разработки и продакшена на mssql. Тысячи STP, сотни баз. Конечно не знаю, куда нам. Для энтерпрайза и финтеха да, безусловно. Но для массовых продуктов все эти рассказы про целостность перестают кого-то интересовать на моменте, когда производительности не хватает, а вертикально масштабироваться становится слишком дорого.
     
     
  • 8.65, Аноним (18), 21:45, 12/02/2022 [^] [^^] [^^^] [ответить]  
  • –1 +/
    То что вы там 10 лет мусор производите не делает вас профессионалом Берёте key-... текст свёрнут, показать
     
     
  • 9.73, Аноним (3), 01:55, 13/02/2022 [^] [^^] [^^^] [ответить]  
  • +/
    Ну да, нас не делает, а вас безусловно делает Смешно Давайте подобную ахинею б... текст свёрнут, показать
     
     
  • 10.75, Аноним (18), 10:28, 13/02/2022 [^] [^^] [^^^] [ответить]  
  • +1 +/
    А я кому несу ... текст свёрнут, показать
     
  • 8.69, Аноним (18), 22:00, 12/02/2022 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Когда не хватает производительности - значит OLAP запросы и надо брать column-or... текст свёрнут, показать
     
  • 4.63, лютый жабби__ (?), 20:28, 12/02/2022 [^] [^^] [^^^] [ответить]  
  • +/
    >По факту графы реализуются поверх любой бд

    дашотынесёшь.жпг

    ты на своей "надстройке над любой дб" сможешь allshortestpaths на глубину 50 шагов просчитывать за милисекунды?

     
     
  • 5.64, лютый жабби__ (?), 20:29, 12/02/2022 [^] [^^] [^^^] [ответить]  
  • +/
    p.s. на базе хотя бы в десятки-сотни миллионов узлов
     
  • 5.67, Аноним (18), 21:53, 12/02/2022 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Тут профи с 100 сделанных проектов. 10 лет опыта. Тяп-ляп и готово. Какие транзакции и гарантии? Да кому они нужны!

    А то что любой запрос в key-value это практически 100% полный full scan базы данных...

    Зато быстро (!) На самом деле нет.
    SSD терабайтник поставить за 10к и уже будет летать.

    Это может быть "медленно" только если терабайты / петабайты на каждый (!) запрос дергать.

     

  • 1.5, Хакер2005 (?), 00:41, 12/02/2022 [ответить] [﹢﹢﹢] [ · · · ]  
  • –8 +/
    Наконец то отличная бд на расте.
     
     
  • 2.12, Аноним (12), 05:39, 12/02/2022 [^] [^^] [^^^] [ответить]  
  • +/
    бд там postgres, писана на c++. читать научись
     
     
  • 3.14, leap42 (ok), 07:14, 12/02/2022 [^] [^^] [^^^] [ответить]  
  • +4 +/
    > бд там postgres, писана на c++. читать научись

    Анониму тож не помешает почитать на чём Postgres написан.

     
     
  • 4.15, Аноним (18), 07:21, 12/02/2022 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Эксперт экспертом погоняет
     
     
  • 5.32, Аноним (32), 10:11, 12/02/2022 [^] [^^] [^^^] [ответить]  
  • +/
    Так ты и есть тот эксперт, который все на раст переписывает и всё никак не перепишет. Даже сабж не на расте.  
     
  • 3.38, funny.falcon (?), 12:07, 12/02/2022 [^] [^^] [^^^] [ответить]  
  • +3 +/
    PostgreSQL написан на C. Плюсами там даже и не пахнет.
     
  • 2.13, leap42 (ok), 07:14, 12/02/2022 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > Наконец то отличная бд на расте.

    лол, гитхаб даж проценты пишет

     
  • 2.26, Аноним (32), 09:28, 12/02/2022 [^] [^^] [^^^] [ответить]  
  • +1 +/
    О да вставили какую-то библиотечку 2.6% от общего объема кода. Все теперь проект на раст. А то что 94.3% написано на питоне это всем пофиг.  Растофанатики не наделены умственными способностями.  
     
  • 2.30, Аноним (28), 09:58, 12/02/2022 [^] [^^] [^^^] [ответить]  
  • +/
    Там на ржавом парсер для cli в виде питоновского модуля, а ржавый даже не входит в "First-party clients for your favorite languages" O_o
     
     
  • 3.31, Аноним (28), 10:05, 12/02/2022 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Ой, я упустил там ещё есть graphql на питоне и graphql-rewrite на ржавом. То есть в команде одни пишут код, вторые стали переписывать на ржавом и бросили этим заниматься полтора года назад.
     
  • 3.78, Аноним12345 (?), 16:40, 13/02/2022 [^] [^^] [^^^] [ответить]  
  • +/
    Ржавому тут не место
     

  • 1.17, Аноним (18), 07:23, 12/02/2022 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    Самое крутая их инновация - это язык запросов и то что база данных объектно-ориентированная.

    SQL такого не могёт.

     
     
  • 2.21, Самокатофил (?), 08:57, 12/02/2022 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Ну, защищенность не забывай, которая обеспечивается использованием раста. Это тоже круто.
     
     
  • 3.27, Аноним (32), 09:29, 12/02/2022 [^] [^^] [^^^] [ответить]  
  • +3 +/
    Если там и есть какая-та безопасность то только от языка питон, которого в проекте 94.3%
     
     
  • 4.41, Самокатофил (?), 13:28, 12/02/2022 [^] [^^] [^^^] [ответить]  
  • +/
    Не обязательно. Можно использовать раст только в самых уязвимых местах, а во все остальные пустить питон. Тогда будет и быстро, и безопасно. Можно быстро писать софт, и деплоить его в производство.
     
     
  • 5.49, Аноним (18), 14:21, 12/02/2022 [^] [^^] [^^^] [ответить]  
  • +/
    Ну Python и быстро... С другой стороны её писали очень крутые ребята, которые асинхронный стек Python и пушили. Те будет нормально.
     
     
  • 6.50, Самокатофил (?), 14:37, 12/02/2022 [^] [^^] [^^^] [ответить]  
  • +/
    > Ну Python и быстро... С другой стороны её писали очень крутые ребята,
    > которые асинхронный стек Python и пушили. Те будет нормально.

    Про скорость исполнения в 2к22... лол. Ретрогады должны страдать.

     
     
  • 7.58, Аноним (18), 18:52, 12/02/2022 [^] [^^] [^^^] [ответить]  
  • +/
    Ну да, в БД, где считают миллисекунды скорость не имеет значения.

    Ну, я весь во внимании...

     
     
  • 8.66, Самокатофил (?), 21:45, 12/02/2022 [^] [^^] [^^^] [ответить]  
  • +/
    Помните откровения Грэхэма в начале нулевых, про лисп Сейчас что-то изменилось... текст свёрнут, показать
     
     
  • 9.71, Likern (?), 23:20, 12/02/2022 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Базы данных должны быть быстрыми, очень быстрыми Они это продают Это значит мо... текст свёрнут, показать
     

  • 1.24, Аноним (23), 09:26, 12/02/2022 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    ООП головного мозга в базах. Оба пользователя психушки будут рады.
     
     
  • 2.33, Аноним (32), 10:12, 12/02/2022 [^] [^^] [^^^] [ответить]  
  • +/
    Им тоже надо развлекаться
     
  • 2.37, Аноним (18), 11:31, 12/02/2022 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Ну-ка, расскажи как ты моделируешь JSON или объекты языка с помощью табличек?
     
  • 2.42, санитар (?), 13:36, 12/02/2022 [^] [^^] [^^^] [ответить]  
  • +2 +/
    чего это "оба"? У нас тут их тыщи!
     

  • 1.39, Аноним (39), 12:53, 12/02/2022 [ответить] [﹢﹢﹢] [ · · · ]  
  • +5 +/
    > Код написан на языках Python и Rust

    Python 94.3%
    Cython 3.0%
    Rust 2.6%

    Админ, с тебя жир течет по всему сайту

     
  • 1.40, Аноним (40), 13:07, 12/02/2022 [ответить] [﹢﹢﹢] [ · · · ]  
  • –2 +/
    Ух ты, предмет поддерживает множественное наследование (англ. multiple inheritance) и полиморфные запросы (англ. polimorphic queries​) =))
     
  • 1.61, Вася (??), 19:46, 12/02/2022 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Если это надстройка над psql и если под капотом она использует либо обычные таблицы и join-ы (кажется так, иначе, зачем ей схема и миграция схемы?), либо jsonb + jsonb_path_query, то зачем ей быть клиент-серверной? Почему ей не быть библиотекой, встраиваемой в приложение, например на Go или на питоне?
     
  • 1.70, Аноним (70), 22:03, 12/02/2022 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Что за извращенцы кладут графы в реляционные БД? Может оно там еще и на рекурсивных CTE работает?
     
     
  • 2.72, Likern (?), 23:21, 12/02/2022 [^] [^^] [^^^] [ответить]  
  • +/
    А как их ещё класть?
     
     
  • 3.76, Аноним (70), 12:17, 13/02/2022 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Ну я не знаю даже, посмотрите что ли как в Neo4j это реализовано. Там индексированный поиск в списках смежности, без попытки натянуть графы на реляционную алгебру с джоинами, нормальными формами и прочим. То, что в РСУБД можно при желании запихать иерархические структуры данных, не значит, что так нужно делать. Кроме каких-то совсем простых классических случаев, когда в базе нужно хранить дерево (и наличие цикла считается аномалией, а не фичей, на которой завязана бизнес-логика). Тогда Materialized Path в помощью. Во всех остальных случаях попытка использовать РСУБД для графовых задач - натягивание совы на глобус.
     

  • 1.82, Кремов (?), 14:45, 17/02/2022 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Феерическое ненужно с системой типов устаревшей ещё во времена появления оригинального sql
     

     Добавить комментарий
    Имя:
    E-Mail:
    Текст:



    Спонсоры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2022 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру