TL; DR: GraphQL светит, когда Firebase падает. Мощное моделирование данных, гибкие и эффективные запросы и открытая спецификация - все необходимые компоненты GraphQL, которые отсутствуют в Firebase.
Firebase получила много критики, основанных на его ограниченное моделирование данных. В принципе, ваши данные структурированы как единый гигантский JSON, который многократно указывает одни и те же данные. Вначале кажется, что вначале возникает неуправляемый клиентский код, когда вам нужно обновлять данные, так как вы должны отслеживать все ссылки на одни и те же данные вручную.
Структура данных, используемая в GraphQL, с другой стороны очень интуитивно понятен и привычен думать, поскольку он моделируется как график. Используя синтаксис IDL , мы можем легко описать нашу модель данных, называемую схемой GraphQL. Для приложения Twitter схема может выглядеть так:
type Tweet {
id: ID!
title: String!
author: User! @relation(name: "Tweets")
}
type User {
id: ID!
name: String!
tweets: [Tweet!]! @relation(name: "Tweets")
}
Здесь мы определили два типа Tweet
и User
с некоторыми скалярными свойствами, а также отношение один ко многим между User
и Tweet
. Единые элементы данных называются узлами - и пользовательский узел может быть подключен ко многим узлам твитов. Эта структура данных является простой и гибкой, за исключением подхода JSON от Firebase.
Гибкие возможности запросов GraphQL являются одним из его основных преимуществ. Запросы являются иерархическими, это означает, что вы можете указать требования к данным, которые отражают структуру графика. В нашем примере Twitter у нас может быть запрос на выбор всех пользователей и их твитов:
query {
allUsers {
id
name
tweets {
title
}
}
}
Обратите внимание, что мы можем свободно включать или оставлять поля, которые мы хотим запросить, и мы можем даже запросить связи. Это означает, что нам не нужно делать несколько запросов и мы не запрашиваем ненужные данные, что делает запросы GraphQL чрезвычайно эффективными.
Добавляя аргументы запроса к соединению, мы можем добавлять такие функции, как пользовательский порядок или фильтры, чтобы получить мощный графический API .
Все это просто невозможно в Firebase.
Возможности реального времени Firebase сделали это популярный - но поскольку сообщество GraphQL собирается достичь консенсуса относительно реального времени , наибольшее преимущество Firebase также сведено к нулю. Я рекомендую этот видеоурок для подписки GraphQL, чтобы лучше понять базовые понятия
Итак, чтобы ответить на ваш вопрос: GraphQL превосходит Firebases в большинстве что делает его предпочтительным выбором.
Если вас интересует GraphQL, я рекомендую вам проверить Graphcool , который сочетает в себе силы GraphQL с мощными функциями, такими как встроенная аутентификация и гибкие привязки к AWS Lambda или другие серверные функции для реализации пользовательской бизнес-логики.
Отказ от ответственности: я работаю в Graphcool:)
Вот обзор текущих проблем с направляющими в Windows:
Примечание большая часть совета, который следует, теперь устарела из-за великолепных усилий команда RubyInstaller в обеспечении устойчивости, совместимости и производительности к Ruby в Windows. Я больше не должен использовать VirtualBox, который заявляет много о том, как далеко Ruby в Windows прибыл.
, Если Вы хотите больше технической детали, следующее требуется, читая.:
, кавычка Выбора от той последней:
AkitaOnRails: самая очевидная вещь состоит в том, что любой Драгоценный камень с Расширениями C без надлежащих двоичных файлов для Windows перестанет работать. Попытка выполнить команды оболочки перестанет работать и RubyInline также. Что еще?
Luis Lavena: Hehe, это - просто верхушка айсберга
сказавший все это, я не нахожу разработку с направляющими в Windows также болезненной. Используя Ruby, по большей части, удовольствие. Я избежал бы InstantRails, потому что, чтобы быть откровенным, столь же легко установить Ruby правильно с помощью установщика с одним щелчком, затем делая gem install rails
. При необходимости в Apache и MySQL, , WAMP является хорошей ставкой, хотя даже они не требуются, если Вы просто придерживаетесь Полукровки и SQLite.
то, Что я взял к выполнению недавно, работает VirtualBox с экземпляром Сервера Ubuntu, который тесно зеркально отражает сервер развертывания. Я подключаю сетевой диск к Серверу Ubuntu, тогда я редактирую и выполняю свой код непосредственно VM. Это использует едва любую память (это в настоящее время использует ~43MB; контраст, что с Firefox, который использует ~230MB), и направляющие на самом деле работает лучше, чем выполнение его исходно в Windows. Плюс Вы может экспериментировать с Вашим виртуальным сервером в относительной безопасности. Это - действительно хорошая установка, я настоятельно рекомендую его.
Наконец, вот несколько блогов Ruby/направляющих, нацеленных на пользователей Windows:
Самое большое ограничение выполнения в соответствии с Windows - то, что много вещей является супер медленным.
См. этот поток . Для обсуждения.
Простые вещи как "сценарий/консоль" и выполняющий задачи граблей возьмут в 5 раз дольше в Windows, чем они делают на Linux или Mac
, Другие ограничения:
Вы могли просто использовать Cygwin, и это - версия Ruby. Это избавляется от аргументов о скомпилированных драгоценных камнях, не работающих над Windows - мне удалось скомпилировать много драгоценных камней тот путь.
В целом производительность направляющих является проблемой в Windows.
До Вашей установки развертывания, можно или выполнить направляющие в FCGI или использовать полукровку (и настроить или Apache или IIS как прокси). mod_rails ( http://www.modrails.com ) является лучшим вариантом развертывания для направляющих сегодня, но не работает на Windows.
Вы могли бы найти больше удачи с помощью JRuby в Windows для выполнения направляющих в любой среде JVM, которую Вы хотите (кот, сервер J2EE, и т.д.).
IronRuby еще не должен туда выполнять направляющие в продуктивной среде, но в конечном счете он будет нацелен на рабочие направляющие в любой среде ASP.NET (IIS).
Опция, если Вы застреваете в Windows, состоит в том, чтобы иметь виртуальные серверы, запускающие Linux / BSD / what-have-you.
Это решает много других проблем также (разрешающий Вам попробовать несколько конфигураций сервера легко, и т.д.).
Если Вы не можете убежать от окон, используют VMware и выполняют некоторую форму Linux (человечность популярна). Ваш № 1 ограничения будет скомпилированными драгоценными камнями, которые не играют приятно на окнах.
большинство учебных руководств предполагает, что Вы находитесь на некоторой форме *, отклоняют, это - когда Вы начинаете повреждаться за пределами основных лесов, когда Вы будете чувствовать боль. Обработка изображения, полнотекстовый поиск и даже некоторые адаптеры дб будут или только работать *, отклоняют или боль для установки.
большинство веб-хостов запускает Linux также, хорошо разработать на той же платформе как Ваш хост, избежать головных болей развертывания.
Когда я в последний раз возился с направляющими на окнах, я использовал Мгновенные направляющие и нашел, что он был довольно болезненным процессом, за исключением отсутствия обновлений Мгновенных направляющих (который, от вида веб-сайта все еще что-то вроде проблемы, как мгновенные направляющие 2,0 ROR 2.0 использования, в то время как новейшая версия 2.1). Вы могли бы также изучить ответы на этот вопрос , поскольку он упоминает много других способов получить работу RoR окон легко.
Лично я нашел получение Ruby + направляющие и работа окон кусок пирога. От загрузки до просмотра к моему первому 'HelloWorld' приложение взяло меня все 15 минут. Я даже не беспокоился ни одним материалом InstantRails.
Впоследствии я не могу сказать, что встретился с любой из проблем скорости, о которых сообщают, или проблем с Драгоценными камнями в соответствии с Windows.
Эти парни также делают хороший Ruby, который разработчики прибавляют для Visual Studio:
Я нашел подъем среды разработки и выполнение с , Мгновенные направляющие в Windows были действительно просты. Особенно при использовании Netbeans или Radrails как IDE.
Меньше, чем 10-минутное задание.
, Что сделало тех, кто боролся, находят, чтобы быть проблемой?
У Вас есть опции окон для подъема всего и установленный, такой как Instantrails:
Однако мой личный опыт с попыткой разбудить коллег и работу окон - то, что это - довольно болезненный опыт. Необходимо быть в состоянии получить максимум (если не все) выполнение, но быть готовыми провести унавоживающий небольшого количества времени вокруг (и быть разбитым).
YMMV
я, вероятно, рекомендовал бы или Linux или Mac для разработки направляющих (но я немного смещаюсь против окон, таким образом, Вы, возможно, должны взять это с мелкой частицей соли).
Я разрабатывал направляющие в Windows PC в течение нескольких лет и не имел никаких настоящих проблем, устанавливающих назад, когда я сначала запустил. Однако я недавно восстановил свою машину и изо всех сил пытался получить работу установщика One-Click Ruby и последнюю версию Драгоценных камней. Таким образом, это - то, что я попробовал.
Я был действительно впечатлен идеей Charles Roper выполнить направляющие в виртуальной машине Linux, и это - путь, для которого я первоначально пошел. Все это пошло довольно гладко, и я документировал его по budanters.blogspot.com. Однако я боролся с доступом к серверу MySQL (в Виртуальной машине Linux) от хоста Windows.
Я недавно установил версию Windows пакета NetBeans 6.5 Ruby, и не будучи знающим об этом, это устанавливает JRuby и драгоценные камни направляющих. IDE имеет UI для установки Драгоценных камней, и я теперь вернул свое старое приложение и работающий в моей среде разработки.
Я теперь использую Netbeans 6.7 в Windows, и в целом я очень доволен им. Единственные недостатки - то, что это устанавливает JRuby 1.2, и я должен был установить JRuby 1.3 вручную для получения чего-то работа (я не могу помнить то, что) и я абсолютно не мог заставить развертывание, работающее или с Capistrano или с Vlad Устройство развертывания работать. Vlad использует Open4, который не работает с JRuby.
Netbeans 6.8 идет с JRuby 1.4, так больше не должны возиться с ручной установкой JRuby 1.3. Также кажется, что в JRuby 1.5 Open4 будет теперь работать, что означает, что Vlad мог бы начать работать.
Я сам не являюсь разработчиком рельсов, но подумал, что это может быть интересно. Microsoft выпустила IronRuby 1.0, это версия Ruby, работающая на платформе .NET, которая очевидно работает в 4 раза быстрее , чем официальная реализация Rails в Windows.
http://www.drdobbs.com/open-source/224600662
Официальный сайт http://ironruby.codeplex.com/
Никто еще не упомянул Bitnami RubyStack ? Я использую его уже много лет вместе с RadRails. Включает Apache, MySQL / Postgre, phpmyadmin, git и т. Д. Необязательно Ruby 1.9.2 / Rails 3.0b. Вы также можете запустить Ubuntu RubyStack на виртуальной машине, но я еще не пробовал.