Какая платформа для большой базы данных на основе записей?

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

Я хочу сделать и запросить базу данных измерений уровня земли в формате сетки. Будет много измерений для каждого местоположения сетки в разное время через работу землеройной работы, так что есть 4-е измерение времени.

Наблюдения, скорее всего, будут считаться из текстового файла. В каждой записи будет состоять (2 x целочисленная) позиция сетки (строка и столбец), а (уровень с плавающей запятой) и различные строковые информационные коды (возможно, до 30 символов).

Решетки могут составлять около 10000 строк х 10000 столбцов. Не каждое место в сетке будет иметь запись в каждом опросе, но обычно у них будет до ста записей. Во многих местах сетки вообще нет записей (сайт не будет идеально прямоугольным).

Я хочу искать записи, извлекать данные и выполнять вычисления, например, вычислять самый низкий или самый высокий уровень земли для каждого местоположения сетки. Я довольно уверен, что у меня будет возможность программировать это достаточно просто на языке, таком как FORTRAN, BASIC или C, используя массивы. Множество элементов массива будет пустым, хотя и я предполагаю, что это неправильный способ сделать это, хотя для больших баз данных, подобных этому, нужны специальные инструменты, которые мне нужно будет изучить, как использовать.

Я думаю о возможных вариантах платформы -

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

  2. Использовать SQL? Об этом я мало что знаю, но, похоже, это язык баз данных. Я всегда использовал императивные языки, а не декларативные, и, как я понимаю из wikipedia, SQL декларативный, я немного нервничаю из-за изменения. Я не совсем понимаю процесс его использования. Есть ли компилятор, который создает консольные программы? Сохранена ли база данных на диске? Извините за такие глупые вопросы.

  3. Использовать API как c-treeACE? Я думаю, что это может быть способ предложить мне знакомство с «сделать это, а затем сделать» язык (к сожалению, так я считаю инженером!). Но я надеюсь, что за кулисами память и управление обработкой, предлагаемые API, будут превосходить то, что я мог бы достичь с помощью огромных массивов.

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

Вероятно, будут сотни миллионов записей, и я хочу иметь возможность запрашивать и обрабатывать их в считанные минуты, а не часы (предпочтительно секунды!) на современных ПК, работающих под управлением Windows. Чтобы быть более конкретным, мой процессор i7 с 6 ГБ оперативной памятью и 120 ГБ SSD с 64-разрядной версией Windows 7.

Надеюсь, у кого-то есть время поделиться несколькими словами мудрости с новичком.

11 голосов | спросил user19109 13 FebruaryEurope/MoscowbWed, 13 Feb 2013 01:48:48 +0400000000amWed, 13 Feb 2013 01:48:48 +040013 2013, 01:48:48

1 ответ


9

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

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

Среди баз данных SQL в этой области PostgreSQL с надстройкой PostGIS считается одним из лучших. Если бы я был вами, я бы начал. Основным преимуществом SQL является то, что он сохраняет гибкость по пути повторного использования ваших данных для тех видов использования, о которых вы еще не думали. Выполнение этого с хорошей геопространственной поддержкой означает, что вы можете рассчитать расстояние на большой площади, не беспокоясь о специфике сферического триггера.

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

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

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

Декларативные воздействия на язык

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

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

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

Как это работает

Скорее всего, если вы пройдете по этому маршруту, у вас будет база данных и программа, написанная на выбранном вами языке. Программа отправит запросы в базу данных и вернет ответы. Вы также можете (в PostgreSQL и многих других реляционных БД) поместить свои запросы в функции, которые затем могут быть вызваны приложением, предоставляя больше императивного или функционального интерфейса. Данные будут храниться на диске и доступны из отдельного программного обеспечения, кроме вашей программы. Вы также можете подключиться к другой программе (от MS Access до pgAdmin) и запускать запросы или генерировать отчеты.

В сущности, вы можете думать о РСУБД как о «математическом движке», который управляет вашими данными, и ваша программа взаимодействует с ним, чтобы делать то, что вам нужно.

ответил Chris Travers 13 FebruaryEurope/MoscowbWed, 13 Feb 2013 09:49:20 +0400000000amWed, 13 Feb 2013 09:49:20 +040013 2013, 09:49:20

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132