2012-04-10 3 views
4

Есть ли библиотека, где я могу получить доступ к mongodb, используя sql-подобный синтаксис.Доступ к Mongodb через sql как синтаксис

Пример

use db 
select * from table1 
insert into table1 values (a,b,c) 
delete from table 
select a,b,count(*) from table1 group by a,b 
select a.field1,b.field2 from a,b where a.id=b.id 

Благодаря комбинационное

+3

Почему вы хотите это сделать? – AD7six

+1

Если вы хотите использовать sql, не используйте Mongodb, но используйте RDBMS –

+1

Иногда, когда вы хотите переключиться с RDBMS на NoSql, вы сталкиваетесь с проблемами Legacy, и для упрощения этого процесса вы хотите иметь что-то, что будет действовать как прокси, прием SQL и отображение его функций NoSQL. – Max

ответ

-2

MongoDB и его текущий драйвер не поддерживает прямой SQL подобный синтаксис. Однако все операции легко выполняются с конкретными операциями с драйверами. Вот краткое отображение MongoDB операций в соответствующий SQL как запрос:

http://www.mongodb.org/display/DOCS/SQL+to+Mongo+Mapping+Chart

-2

Есть несколько проектов в стадии реализации, чтобы эмулировать интерфейс SQL для MongoDB. Хотя они предоставляют знакомый интерфейс, в целом их следует избегать. Они работают по принципиально ошибочной предпосылке в том, что они анализируют строки и переводят их в вызовы методов.

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

+1

Системы, которые «анализируют строки и переводят их в вызовы методов», определенно не являются «фундаментально ошибочным положением». Это делает каждый консоль и язык программирования на основе скриптов. Оценка времени исполнения невероятно мощна - действительно ли это какие-то разные компиляции команд MapReduce в C++ по сравнению с тем, что они были созданы из сценария на лету? – ShadowChaser

5

Кривая обучения небольшая, только если вы выполняете исключительно простые sql-запросы. Если степень вашего запроса SQL «выбирается * из X», то MongoDB выглядит как блестящая идея, чтобы прорезать все слишком сложные SQL. Но если вам нужно выполнить левые внешние соединения, проверьте значение null, проверьте диапазоны, подзапросы, группировку и суммирование, тогда вы скоро получите круглую вогнутую вмятину в своем столе после того, как ее переместят в Монго. Больной punchline в том, что половина времени, то, что вы пытаетесь сделать, не может быть сделано в интерфейсе Mongo. Mongo представляет собой смелый новый мир, в котором вместо баз данных, таких как агрегация и оптимизация запросов, он просто хранит данные, и все это делается путем получения всего, медленно, хранения в памяти приложения и выполнения всего этого в коде.

+0

Хотя ваш совет может быть очень ценным, вы не ответили на вопрос; пожалуйста, подумайте о том, чтобы написать такой ввод как комментарий. – Trinimon

+0

Нет, это отличный ответ, даже правду даже спустя 43 года. Монго страшно за сообщения. –

+0

Отличный ответ! Именно поиск информации, которую кто-то привнес в этот вопрос, ищет. – fwc

5

ДА!

Компания под названием UnityJDBC создает драйвер JDBC для mongodb. В отличие от драйвера mongo java, этот JDBC-драйвер позволяет запускать SQL-запросы против MongoDB, а драйвер поддерживается любым Java-приложением, использующим JDBC.

загрузить этот драйвер пойти ...

http://www.unityjdbc.com/mongojdbc/mongo_jdbc.php

Его можно скачать бесплатно тоже!

надеюсь, что это помогает

1

Посмотрите на этот недавний проект: http://www.mongosql.com/. Я смотрел на него в течение последних нескольких недель, и это выглядит очень многообещающе.

Для тех из вас, кто поставил под сомнение полезность SQL для MongoDB, рассмотрите большое количество не очень технических пользователей во многих организациях, таких как бизнес-аналитики, которые могут знать SQL, но не хотят перескочить на JavaScript и JSON. Такие инструменты, как mongoSQL, могут помочь продвинуть MongoDB в организации.

1

Есть несколько решений, но почти все они не могут действительно представить модель данных MongoDB таким образом, чтобы «реляционные» приложения ODBC/JDBC и пользователи нуждались/требовали. Недавний коммерческий продукт был выпущен, который решает эти проблемы

ODBC: http://www.progress.com/products/datadirect-connect/odbc-drivers/data-sources/mongodb

JDBC: http://www.progress.com/products/datadirect-connect/jdbc-drivers/data-sources/mongodb

Чтобы удовлетворить потребность в ODBC/JDBC (SQL) доступ ... Хотя есть сильные аргументы для написания новых приложений с использованием клиентов Mongo по-прежнему существует настоятельная потребность в рынке для качественного доступа ODBC/JDBC и SQL к MongoDB. Эта потребность во многом возникает из всех отчетов, аналитических и BI-приложений, которые полагаются на возможности ODBC/JDBC и не предлагают встроенную интеграцию с MongoDB.

+0

Я пробовал выполнить драйвер jdbc/mongodb с запросом «group by -having». Но производительность была ужасной по сравнению с базовой структурой агрегации MongoDB. – Kanatoko

1

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

«MoSQL импортирует содержимое вашего кластера базы данных MongoDB в экземпляр PostgreSQL с использованием хвостовика oplog, чтобы поддерживать актуальное современное зеркало SQL. Это позволяет запускать производственные службы в базе данных MongoDB, а затем запускать автономно аналитики или отчетности, используя всю мощь SQL ».

1

Free NoSQL Viewer поддерживает преобразование SQL-запросов в синтаксис оболочки MongoDB. Кроме того, в SQL Viewer вы даже можете использовать операторы SQL SELECT для запроса данных коллекции MongoDB, не зная синтаксиса запросов MongoDB. Ознакомьтесь с NoSQL Viewer здесь www.spviewer.com/nosqlviewer.html

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