2010-02-22 2 views
4

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

У меня есть некоторые физические испытания модели (скажем, данные в аэродинамической трубе, что-то подобное), где для каждой модели (M-1234) У меня есть:

name (M-1234) 
length L 
breadth B 
height H 
L/B ratio 
L/H ratio 
... 
lot of other ratios and dimensions ... 
force versus speed curve given in the form of a lot of points for x-y plotting 
... 
few other similar curves (all of them of type x-y). 

Теперь, что я пытаюсь выполнить сохраните это разумным образом, чтобы пользователь, который будет использовать базу данных, мог прийти и посмотреть, какие самые близкие десять моделей для L/B = 2.5 (или некоторые аналогичные требования). Затем для этого каким-то образом получить все данные этих моделей, включая данные кривой (в формате обычного текстового файла).

Является ли база данных sql (или любой другой, если на то пошло) подходящим способом обработки чего-либо подобного? Или я должен использовать другой подход?

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

+1

Похоже, вопрос для http://stackoverflow.com да? –

+0

@ o.k.w - не уверен, действительно. В любом случае, я оставлю это модераторам, чтобы принять это решение/переместить его соответствующим образом. – Rook

+0

Традиционно база данных не хранит информацию, которая может быть рассчитана, поэтому ваше использование БД будет скорее хранилищем данных или хранилищем данных. Тем не менее, это гораздо более эффективный механизм хранения, чем плоский файл. – 2010-02-22 09:41:02

ответ

2

Я думаю, что вы ищете возможно. Я использую Postgresql здесь, но любая база данных должна работать. Это моя тестовая база данных

 
CREATE TABLE test (
    id serial primary key, 
    ratio double precision 
); 
COPY test (id, ratio) FROM stdin; 
1 0.29999999999999999 
2 0.40000000000000002 
3 0.59999999999999998 
4 0.69999999999999996 
. 

Затем, чтобы найти ближайших значений в определенном соотношении

select id,ratio,abs(ratio-0.5) as score from test order by score asc limit 2;

В этом случае, я ищу для 2 ближайших 0,5

Я бы, вероятно, сделал datamodel, где у вас есть одна таблица для основных данных, коэффициентов и т. Д., А затем вторая таблица, которая содержит точки кривой, поскольку я предполагаю, что кривые не всегда являются тот же размер.

2

Да, база данных, вероятно, лучший подход для этого.

Реляционная база данных (которая обычно использует SQL для доступа к данным) подходит для данных, которые более или менее структурированы в виде таблиц.

Чтобы дать Вам идею:

Вы могли бы иметь основную таблицу model с полями name, width и др. Затем подтаблица (ы) для любых значений, которые могут появляться более одного раза, что относится к model (смотрите «внешний ключ»).

Затем подтаблица для ваших реальных кривых, снова ссылаясь на model.

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

Кажется, вы мало знаете о реляционных СУБД. Подумайте о чтении чего-нибудь в WIkipedia или о нескольких простых учебниках по СУБД (PostgreSQL имеет некоторые: http://www.postgresql.org/docs/8.4/interactive/tutorial.html, но есть и многие другие). Затем выберите СУБД для тестирования (PostgreSQL, вероятно, не плохой выбор, но опять же есть много других).

Затем попробуйте реализовать простую схему таблиц и вернитесь к нам с любыми подробными вопросами (которые, вероятно, у вас есть).

Еще одна вещь: эти вопросы, вероятно, более подходят для serverfault.com.

+0

@sleske - поскольку вы, кажется, знаете об этих вещах, еще один вопрос, если можно. Считаете ли вы, что, возможно, более подходящим будет другой тип базы данных. Мои данные обычно структурированы таким образом, что для каждой модели у меня есть несколько параметров (все скаляры), поэтому одна модель, одна строка параметров. И для каждой модели у меня есть несколько таблиц (другая таблица) данных (кривых). Было бы более уместным, может быть, попытаться поставить его в «традиционную» (не уверенную, что такое правильное имя) базу данных, например, dBase (старые). Они, если я правильно помню, отличаются от сегодняшнего sql-типа. – Rook

+0

@Idigas: Вы можете публиковать вопросы. Но, пожалуйста, разместите их как вопросы, вот что это за сайт :-). Вероятно, лучше всего опубликовать на stackoverflow.com, так как это вопрос программирования. И нет, я бы вообще не рекомендовал dBase в наши дни, но мнения могут отличаться. – sleske

+0

Достаточно честный. Благодаря ! (oh и btw, да, я очень хорошо знаю природу всех трех сайтов. Именно поэтому иногда для этих деталей легче справляться с ними в комментариях, чем заполнять всю доску подробными вопросами относительно один вопрос). – Rook

0

Это, возможно, научные данные: вы можете найти библиотеки/форматы, предназначенные для любых научных данных, полезных: HDF5 http://www.hdfgroup.org/ (заметьте, я не эксперт)

+0

Да, измеренные и прогнозируемые данные. Но из поля, для которого нет форматов файлов, AFAIK. – Rook

+0

Идея с этими инструментами заключается в том, что они упрощают разработку собственного формата. Еще один силос http://wci.llnl.gov/codes/silo/ – Norky

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