Что-нибудь похожее на SqlSoup для Scala? - PullRequest
1 голос
/ 14 июля 2011

Какой из существующих API баз данных Scala больше всего похож на SqlSoup для Python (часть SqlAlchemy)?То, что я вижу в SqlSoup: удобный и в значительной степени переносимый API базы данных, где мне не нужно указывать схемы, и все типы выводятся с помощью отражения, но мне не нужно писать необработанные выражения SQL.Также предпочтительным является тот факт, что он является частью более полного пакета базы данных, который поддерживает «все остальное» (спецификации схемы, ORM и т. Д.), И они имеют много одинаковых абстракций запросов.Я предполагаю, что Динамический тип Scala 2.9 может пригодиться здесь.Заранее спасибо.

1 Ответ

0 голосов
/ 14 июля 2011

Наиболее похожим является SQLAlchemy 0.6 http://www.sqlalchemy.org/news.html, который поддерживает Jython. Это означает, что вы можете использовать SQLAlchemy на JVM и вызывать его из Java или Scala. Проверьте это для более подробной информации http://www.rexx.com/~dkuhlman/jython_course_03.html#calling-jython-from-java

Вероятно, вам потребуется написать некоторый интерфейсный код в Jython.

Неэффективность SQLAlchemy происходит из-за несоответствия импеданса между SQL и объектно-ориентированным мышлением. Теперь, когда вы выбрали не объектно-ориентированный язык, возможно, пришло время отойти от клонов SQLAlchemy и поработать над пулом потоков, чтобы предоставить вам неблокирующий доступ к базам данных SQL. Актеры работают очень хорошо, когда вы разбиваете проблему на множество небольших простых задач, а SQLSoup кажется слишком тяжелым для этого.

Может быть, вам также пригодится memcache перед вашей базой данных SQL. Представьте, что вам нужно обработать SQL-запрос за 7 шагов, чтобы получить данные в нужной форме. Если вы сохраните все промежуточные результаты в memcache, вы сможете сократить количество попаданий в базу данных SQL. Актеры поддаются свободному замыслу, в котором вы можете заменить актера или вставить два вместо одного.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...