Подтвердить что ты не робот

Использование метеора с postgresql

Я хочу использовать Meteor для подключения к нашей реляционной базе данных (PostgreSQL). Есть ли опыт подключения Meteor к другим базам данных?

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

Update: См. Ответ ниже. Поскольку этот вопрос все еще привлекает внимание, это ссылка на решение.

https://github.com/meteor-stream/meteor-postgres

4b9b3361

Ответ 2

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

Посмотрите на аналогичный вопрос для mysql. Метеор с mysql

Ответ 3

Если вы похожи на меня, вы любите Метеор, но ненавидите Монго. В дорожной карте Meteor Trello (https://trello.com/b/hjBDflxp/meteor-roadmap) наиболее признанной функцией является поддержка SQL, либо PostgreSQL, либо MySQL.

Поскольку в Метеор нет даты, я кратко излагаю частичные решения, которые я нашел.

1.- Использовать SQL только для запросов на стороне клиента.

** UPDATE: alasql теперь представляет собой пакет метеоров:

Вы можете установить alaSQL с помощью

  meteor add agershun:alasql

Коллекции AlaSQL и Meteor Mongo

Теперь вы можете использовать коллекции Meteor в качестве аргументов. Применение SQL к коллекции Meteor:

Template.body.helpers({
   tasks: function () {
     return alasql('SELECT * FROM ?',[Tasks]);
   }
});

Или вы можете использовать опции find() со специальной функцией METEOR():

return alasql('SELECT * FROM ?',[Tasks]);
return alasql('SELECT * FROM METEOR(?)',[Tasks]);
return alasql('SELECT * FROM METEOR(?,?)',[Tasks,{text:"Hello world!"}]);
return alasql('SELECT * FROM METEOR(?,{text:"Hello world!"})',[Tasks]);

Посмотрим правде в глаза, Монго сосет на общие операции с данными, поэтому возможность использовать SQL для запроса данных (с помощью JOINS, GRUP BY и т.д.) облегчила бы боль. Есть пакеты, которые позволяют использовать SQL в клиенте, по крайней мере, для запросов: самой простой из них - старая утилита (2010), SqlLike (http://www.thomasfrank.se/sqlike.html). Новый игрок в городе - alaSQL, который активно развивается @agershun (https://github.com/agershun/alasql). Преимущество SqlLike заключается в том, что он имеет только 10 тыс. AlaSQL, конечно, гораздо более мощный, но для использования SQL для замены mongo sintax в объединениях и агрегатах SqlLike в порядке.

С обоими из них вы можете сделать что-то подобное в своем помощнике:

    productsSold:function(){
    var customerSalesHistory=salesHistory.find({cutomerId:Session.get('currentCustomer')}).fetch();
    var items=products.find().fetch();
    return alasql("select item.name, sales.ordered as sumaVentas from ? sales, ? items
      where items.Id=sales.itemId",[customerSalesHistory,items]);
}

2.- Эксперимент с поддержкой прямого SQL.

Некоторые пакеты пытаются заменить Mongo (и minimongo) на MySql или PostgreSQL. @numtel MySql пакет Meteor-MySql https://github.com/numtel/meteor-mysql, а PostgreSQL - Meteor-pg (https://github.com/numtel/meteor-pg). Оба являются хорошими попытками решить проблему, но еще есть некоторые проблемы и как-то громоздко адаптироваться.

Команда из Hack Reactor сформировала Meteor Stream, и ее первым продуктом является интеграция PostgreSql с Meteor, meteor-postgres (https://github.com/meteor-stream/meteor-postgres). Он выглядит очень хорошо и использует alaSql на клиенте для замены minimongo.

Оба подхода хороши, но у них есть некоторые проблемы:

Они сломали развертывание в метеор. Они очень, очень молоды и не близки к производству. AFAIK Они по-прежнему нуждаются в настройках обычного обычного суб-синтаксиса, к которому мы привыкли, что может повысить совместимость с другими метеорными пакетами. 3.- Все еще используйте Mongo, но как простой репозиторий для вашей базы данных MySql.

Этот параметр поддерживает все характеристики Meteor и использует Mongo в качестве временного репозитория для ваших баз данных MySql или PostgreSql.

Блестящая попытка - это mysql-shadow by @perak (https://github.com/perak/mysql-shadow). Он делает то, что он говорит, поддерживает Mongo в обоих направлениях с MySql и позволяет вам работать с вашими данными в MySql.

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

Для полнофункциональной синхронизации вы можете использовать SymmetricsDS (http://www.symmetricds.org), очень хорошо протестированный репликатор базы данных. Конечно, это связано с настройкой нового java-сервера, но, безусловно, это лучший способ убедиться, что вы сможете конвертировать вашу базу данных Mongo в простой репозиторий вашей реальной базы данных MySql, PostgreSQL, SQL Server, Informix. Я должен проверить это сам еще.

Теперь MySQL Shadow кажется достаточно хорошим решением.

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

Кроме того, если когда-нибудь команда Meteor использует некоторые из долларов, поднятых в интеграции SQL, ваше приложение, скорее всего, будет работать так, как есть.

Ответ 4

Самое близкое к тому, что вы запрашиваете сейчас, - это проект Meteor SQL, хотя в настоящее время он поддерживает только MySQL.

Возможно, вы подумали бы о внесении вклада в проект поддержки Postgres?