2016-06-16 2 views
10

Я только что узнал о gunDB, и концепция кажется очень интересной, и я хотел бы узнать больше об этом, прежде чем начинать оценивать ее дальше.Конкретные вопросы о gunDB как автономной БД для проекта Cordova

  • Если бы я хотел создать приложение чата, как учебник, но реализовать чат номера. Будет ли у клиентов возможность «подписываться» только на определенные чаты и избегать передачи содержимого каждой другой комнаты чата? Как это влияет на сохранение, если не все данные синхронизируются со всеми клиентами? Нужно ли запускать специальный клиент (т. Е. Сервер?), Который будет обеспечивать постоянную сохранность всех данных?
  • Для этого же учебного курса чата, если я хочу подписаться на несколько чатов, мне нужно было бы создать несколько экземпляров Gun, каждый из которых использовал бы «одноранговое» хранилище?
  • Как управлять пользователями/паролями/etc в gunDB? Отправка каждому клиенту копии пользовательской БД интересна с точки зрения репликации , но с точки зрения безопасности, кажется, счетчик интуитивно понятен.
  • Есть ли способ попросить пистолет только синхронизировать при определенных обстоятельствах, например, когда доступно WiFi-соединение (подумайте о Кордове)?
  • Что относительно временных данных? Есть ли способ в приложении чата, для экземпляра , чтобы сообщить gunDB, что меня интересуют только будущие сообщения и игнорируют все, что было создано до определенного состояния или времени (снова, чтобы избежать передачи огромных объемов данных по дорогостоящий план данных)?
  • Как вы сохраняете данные на диске (потенциально круговые) в gunDB и загружать данные обратно в БД при необходимости?
  • Можете ли вы спросить пистолет для одновременного контроля двух клавиш? Например, если клиенту нужно отображать данные чата и список todo (оба «ключа» из учебника), предполагая, что оба «заглядывают».
  • Есть ли учебное пособие по использованию моего собственного сервера для хранения?
+1

Это так много вопросов за раз, было бы лучше разбить его на более мелкие вопросы. – nawfal

ответ

9
  1. чаты. Точно так же chat tutorial загрузил чат-стол, вы можете просто иметь таблицу «номеров». Тогда вы можете захватить только комнату, которую вы хотите. Потому что пистолет использует partials, чтобы быть быстрым, он только завершит загрузку данных, на которые вы подписаны. Да, клиенты могут хранить только подмножество данных в целом, но это, конечно, может повлиять на уровни репликации/сохранения. Если вы беспокоитесь об этом, то запуск «сильного» партнера (например, сервера) - это простое и идеальное решение, так как оно будет поддерживать все. (И, к сожалению, потому что у WebRTC есть проблемы *, вам как-то придется запускать peer-сервер ретранслятора в любом случае. Поэтому также можно использовать его для хранения).

  2. Несколько экземпляров. Вам не нужно создавать экземпляры нескольких пистолетов на ключ. На самом деле это плохо. Лучше, если вы этого не сделаете. Возможно, однако мы не тестировали это столько, сколько должны, потому что это не идеально.

  3. Безопасность/авторизация - очень трогательная тема, так что это зависит от того, как вы хотите создать свое приложение. Если вы собираетесь работать с истинным P2P/децентрализованным дизайном, вам нужно будет сделать общий/закрытый ключ cryptography and signatures. Таким образом, другие пользователи не могут действительно читать данные, даже если они могут помочь в резервном копировании данных.Однако, если вы хотите, чтобы все упрощалось и создавалось ваше приложение, так как большинство приложений построено ... как централизованная служба, тогда вы прокси-сервер записываете на свой сервер. Это тот же самый метод, который большинство людей использует в настоящее время при создании приложений, и GUN может делать то же самое.

  4. Данные по ограничению использования WiFi/скорости. К сожалению, это недоступно в JavaScript, но похоже, что такие гибридные приложения, как вы упомянули в PhoneGap, могут получить доступ к этой информации. GUN предназначен для работы в таких сценариях, поскольку он не работает в режиме онлайн. Но как вы взаимодействуете с внешними API-интерфейсами, которые дают вам эти условия ... вне моего опыта, но выполнимы.

  5. Временные данные/ограничение передачи данных. Сначала см. Мой ответ, выполнимый, но зависящий от внешних API. С точки зрения ограничения запросов, да, да. A: Мы скоро представим «лексические курсоры», которые позволят клиентам сдерживать ответы, однако мы, вероятно, будем постепенно наращивать каждую из своих возможностей ограничений (поскольку это не было огромным приоритетом для сообщества, но ваше участие будет эскалировать его!), сначала с точными совпадениями свойств (думаю, как оператор выбора SQL), на самом деле это то, что мы будем использовать для создания расширения запроса SQL для пушки!), затем второй лексический диапазон (выберите свойства, начинающиеся с 'a' через 'c'), который может быть выполнен с диапазонами временных меток, затем третий байт-ограничение (например, только отправьте обратно не более 200 байт за раз). Тем не менее, очевидная вещь, которую вы можете сделать самостоятельно (не то, что вы хотите), вы могли бы просто иметь столик комнат, а затем комната представляет собой таблицу кусков, а куски - это таблица сообщений. Потенциально с комнатой, имеющей «последний» фрагмент, вы можете легко получить доступ к вашему чату, выполнив gun.get('rooms').path('mychatroom').path('last').map().val(function(message){ console.log(message); }); или что-то в этом роде. Это позволит вам точно контролировать условия, которые вы хотите, но также означает, что вам нужно немного поработать.

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

  7. Да, пушка может контролировать несколько ключей одновременно.

  8. Использование собственного сервера для хранения ... это может означать пару разных вещей. Как запустить собственный пушечный сервер? Для этого есть простая оболочка: https://www.npmjs.com/package/gun-server. Если вам нужны примеры с Express, и все это просто. Как использовать существующую файловую систему в развернутом сервере как хранилище, потому что вы не хотите использовать S3? Вы можете использовать драйвер уровня https://github.com/PsychoLlama/gun-level. Это ответ?

* WebRTC требует, чтобы серверы STUN/ICE/сигнализации загружали соединение WebRTC. Это очень раздражает. Это означает, что даже если WebRTC является P2P, для того, чтобы подключиться, вам нужно пройти через какой-либо сервер, и это должно радоваться за каждую загрузку страницы. Из-за этого мы по умолчанию пушка пушки с websockets/JSONP, что она должна подключаться к peer-серверу ретранслятора пистолета (есть также аналогичные ретрансляторы для сообществ, которые люди могут использовать для личных экспериментов, но легко управлять своими силами, в пункте 4). В результате мы еще не выпустили адаптер WebRTC, несмотря на то, что пистолет WebRTC + - идеальный вариант - глупые серверы STUN/ICE/сигнализации.

+0

Спасибо, Марк! Я буду следить за тем, как только у меня была возможность экспериментировать с инструментом еще – Eric

+0

@marknadal Point 8/Ссылка на gun-сервер хороша, но [указывает на ресурс без примеров] (https: // www. npmjs.com/package/gun-server)!Это все равно _bizarre_, как настроить собственный одноранговый узел для других, чтобы присоединиться к параметру параметра {peers} ... Реальный пример полной установки (gun-server) был бы хорош – 1111161171159459134

+0

@ 1111161171159459134 отличная точка. Я фактически не поддерживаю проект gun-server, но вы хорошо понимаете. Вы бы подняли это как проблему на этом репо? – marknadal

Смежные вопросы