Ищите универсальную библиотеку для выполнения сценариев SQL (a.k.a. Библиотека сравнительного анализа СУБД) - PullRequest
4 голосов
/ 09 апреля 2011

Интересно, есть ли библиотека, которая абстрагирует следующие операции СУБД:

  1. Загрузка данных (набор файлов CSV или операторов вставки SQL)
  2. Выполнить кучу запросов
  3. Получить измерения для вышеуказанного (пропускная способность, задержка и т. Д.)
  4. Формирование отчета (графики и т. Д.) На основании вышеизложенного.

У меня есть куча файлов DDL / DML для разных баз данных (например, TPC-H, SSB и т. Д.), И я хочу иметь возможность загружать данные и выполнять запросы ко многим СУБД, не беспокоясь об особенностях конкретная СУБД (MySQL, SQLServer, Oracle и т. д.).

Закрытие, которое я нашел до сих пор, это эти . Проблема с ними заключается в том, что они специфичны для конкретной рабочей нагрузки (в большинстве случаев это TPC) в том смысле, что доменные объекты моделируются как классы (Java или C ++). То, что я ищу, не зависит от домена и не зависит от СУБД.

Ответы [ 3 ]

1 голос
/ 04 мая 2011

Это можно сделать с помощью комбинации DbUnit и JMeter.

DbUnit не зависит от СУБД (насколько это возможно) и может использоваться для загрузки файлов CSV в базу данных.

JMeterможет запускать операторы SQL для любой СУБД, имеющей драйвер JDBC, и может использоваться для измерения производительности каждого оператора.

0 голосов
/ 12 февраля 2015

OLTPBench соответствует требованиям для всех заявленных требований:

Бенчмаркинг невероятно полезен, но бесконечно мучителен. Этот набор тестов является результатом того, что группа докторов наук / докторов наук / профессоров собралась вместе и объединила свои рабочие нагрузки / основы / опыт / усилия. Мы надеемся, что это сэкономит время других людей и предоставит расширяемую платформу, которую можно будет развивать с использованием открытого исходного кода.

OLTPBenchmark - это многопоточный генератор нагрузки. Инфраструктура разработана для того, чтобы иметь возможность генерировать переменную загрузку смеси с любой реляционной базой данных с поддержкой JDBC. Инфраструктура также предоставляет функции сбора данных, например журналы задержки для каждой транзакции и пропускной способности.

Вместе со структурой мы предоставляем следующие тесты OLTP / Web:

  • TPC-C
  • Википедия
  • Синтетический ресурс Stresser
  • Twitter
  • Epinions.com
  • TATP
  • AuctionMark
  • СИДЕНЬЯ
  • YCSB
  • JPAB (Hibernate)
  • Вотер (японский "Американский Идол")
  • SIBench (изоляция моментального снимка)
  • SmallBank
  • LinkBench

Эта структура предназначена для легкого расширения, мы предоставляем код-заглушку, который участник может использовать для включения нового теста, используя все функции системы (регистрация, контролируемая скорость, контролируемая смесь и т. Д.)

0 голосов
/ 04 мая 2011

Я думаю, что здесь было бы лучше использовать ORM.Что-то вроде ActiveRecord в Ruby, класса Perl: DBI или DBIx :: Class или даже Hibernate в Java.

ActiveRecord в Ruby уже предлагает встроенную поддержку работы с MySQL, PostgreSQL, SQLite, Oracle, SQLServer и DB2, в то время как hibernate, похоже, работает с гораздо большим количеством БД ( Поддерживаемые базы данных Hibernate * )

Работая с ORM, у вас есть унифицированный способ работы с БД.Конечно, запросы должны быть написаны на языке ORM (Ruby, Perl, Python, Java и т. Д.), А не на SQL.Но таким образом, вы также получаете уверенность в том, что эквивалентные операции выполняются во всех механизмах БД, и вам нужно только поддерживать один файл инструкций 'DDL / DML' для всех БД.

Надеюсь, это поможет

...