2014-02-08 3 views
5

Я не собираюсь долго болтать об этом вопросе о том, что я тестировал и число хрустел. Меня больше интересуют фактические современные практические выступления.Влияние RDBMS на Golang

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

Я знаю, что gorp является дополнительным слоем, который пытается добавить ORM к базовому драйверу/реализации SQL, но, увидев чрезвычайно чистый код Go и находясь очень близко к кости во всем, что он делает. Это не похоже на PHP/Python/JAVA, что я тоже использую, когда вам приходится перемещаться по бесконечным уровням сложности, чтобы фактически увидеть, что делает пакет по существу.

Итак, мой вопрос в том, может ли кто-нибудь поделиться (тесты всегда приветствуются :)) их опыт и знания по этому вопросу.

Я не думаю, что решение NoSQL-типа является вариантом для моих проектов. Все мои проекты всегда сильно зависят от бизнес-логики и переплетенных отношений. Я также задаюсь вопросом, станет ли Postgres победой над MySQL. С Django (Python) я заметил значительное увеличение производительности с помощью Postgres, но я никогда не нашел доказательств в этом вопросе, если это было связано с реализацией ядра Postgres или просто использованием Django для использования обертки.

Небольшое обновление

После перечитывая вопрос, который я заметил, что я вроде пропустил реальную цель этого. Я на самом деле ищут наиболее подходящее решение SQL, которое будет в наименьшей степени замедлять сам Golang. Я знаю, что SQL работает параллельно, но также и относительно интенсивного трафика при запуске его в качестве веб-службы. Я не буду очень беспокоиться о том, чтобы снова сбросить часть ORM, если это сильно повлияет на производительность.

+1

вы бы _very_ трудно заметить разницу в производительности между любым ОРМ и другим. То, что _can_ делает разницу, - это такие запросы, которые вы склонны использовать, и на которые может влиять стиль ORM. – Javier

+0

@javier спасибо, это конечно звучит утешительный. Я очень рад видеть, насколько быстрее работает Go при создании веб-сервиса. Это то, что я чувствовал, когда перешел из CodeIgniter/DataMapper в Django для своих личных проектов. Go снова дает такое же чувство к Django, но все еще не теряя слишком большого контроля и простоты. Go было удивительно просто, с тем, к чему я привык, с классическими вариантами C. –

+1

@Javier суммирует это хорошо. Ваши запросы окажут самое большое влияние на производительность: хорошее использование индексов, лимитов и т. Д. Обеспечит вам лучшую прибыль, чем выбор библиотеки. gorp довольно хорош для «ORM», но если вы хотите посмотреть на более простые альтернативы, рассмотрите также https: // github.com/jmoiron/sqlx и/или https://github.com/eaigner/jet – elithrar

ответ

6

Если вам нужно использовать ORM sqlx или gorp, то вы можете выбрать варианты Go. Лично я немного старая школа, и я предпочел бы для данного типа Foo, я бы предпочел написать структуру FooDB, которая реализует интерфейс FooDS. Все в вашем приложении просто использует FooDS. (DB = database, DS = datastore)

В вашей реализации FooDB может использоваться любое количество базовых технологий MongoDB, LevelDB, SQL и т. Д., И это может измениться по мере изменения вашего приложения, и это изменение будет прозрачным для остальной части вашего приложения (так как в остальной части вашего приложения используется FooDS).

Я бы использовать по умолчанию database/sql (Подготовленные заявления и т.д.) и наиболее зрелый драйвер Go SQL является драйвер MySQL Julien Шмидт: https://github.com/go-sql-driver/mysql

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