Как я могу интегрировать расширенные вычисления в поле базы данных? - PullRequest
2 голосов
/ 26 марта 2010

Мои биологические исследования включают измерение клеточной структуры по мере того, как она меняет длину в течение всего периода наблюдения (захват изображений каждую минуту в течение нескольких часов). Поскольку мои наборы данных стали больше, я пытаюсь сохранить их в базе данных Access, из которой я хотел бы выполнить различные запросы об их изменениях в размере.

Я знаю, что оператор SELECT может включать в себя некоторые математические перестановки, но я не смог включить многие из моих необходимых вычислений (возможно, из-за недостатка знаний). Например, один расчет включает определение скорости изменения в течение конкретно определенных периодов роста. Это вычисление полностью зависит от необработанных данных, сохраненных в таблице, поэтому я не сделал этого, поэтому было бы целесообразно просто вычислить его в Excel перед вводом в поле.

Так что мой вопрос в том, что было бы наиболее подходящим методом выполнения этого расчета. Стоит ли пытаться связать воедино огромные вычисления SELECT в моем QUERY или есть способ использовать другой язык (я знаю perl?), Который можно вызвать для заполнения нового поля запроса?

Я не ищу кого-то, кто написал бы код, просто где уместно включать каждый шаг. Кроме того, в настоящее время я использую Office Access, но мне будут интересны любые ответы на MySQL, поскольку я могу перейти на эту платформу позже. Спасибо всем!

Ответы [ 5 ]

2 голосов
/ 26 марта 2010

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

1 голос
/ 26 марта 2010

Выполнение этого в SQL будет намного быстрее, но намного сложнее для отладки (я предполагаю, что вы смотрите на такие вещи, как ANOVA, t-тесты, chi ^ 2 и т. Д.)

Сказав это, вы, возможно, захотите сохранить и рассчитать промежуточные значения, такие как задержка с момента предыдущего измерения и изменение измерения.

OTOH, метрики, которые вы описываете, очень просты в SQL:

один расчет включает определение скорости изменения в течение конкретно определенных периодов роста

С

0 голосов
/ 26 марта 2010

Я бы предложил использовать Access в качестве внешнего инструмента для ввода, редактирования и печати ваших данных. Вы можете хранить данные в любом внутреннем механизме базы данных (MySQL, SQL Server и т. Д.), Хотя Jet / ACE (ядро базы данных Access по умолчанию), вероятно, будет полностью адекватным, если ваш набор данных не станет очень, очень большим (это ограничено 2 ГБ, но вы не хотите продолжать использовать его, если ваши данные увеличиваются до 1 ГБ при регулярном использовании).

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

В этой ситуации вы могли бы использовать возможности Access, позволяя вам создать интерфейс для выбора наборов данных, которые вы хотите экспортировать для анализа. В последний раз, когда я делал это для клиента, они использовали SPSS для анализа данных, и я создал для них очень гибкий интерфейс экспорта (они могли выбирать любые переменные, которые им нравились для анализа).

Является ли это полезной альтернативой, зависит от степени и типа анализа, который вы собираетесь провести. Если вы используете много функций, которых не хватает в Access VBA, и вам нужно позаимствовать их из Excel или написать для них замену, то вам лучше было бы делать все это в какой-то другой программе.

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

0 голосов
/ 26 марта 2010

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

0 голосов
/ 26 марта 2010

Если вам нужно заполнить поле результатом сложного вычисления, вычисление будет проще выполнить на полноценном языке программирования, таком как Perl, вместо того, чтобы пытаться сделать это в SQL.

Perl имеет очень хороший API базы данных, "DBI", с драйверами для почти каждого механизма базы данных, известного человеку. Вот хорошая короткая статья о DBI:

http://www.perl.com/pub/a/1999/10/DBI.html

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