대용량 레코드 기반 수학 데이터베이스를위한 플랫폼은 무엇입니까?


11

안녕하세요, 저는 프로그래밍 경험이있는 토목 기술자이지만 현재 이용 가능한 다양한 옵션에 익숙하지 않습니다. 진행하는 가장 좋은 방법은 무엇이든 알려주십시오.

지상 측량 측정 데이터베이스를 그리드 형식으로 만들고 쿼리하고 싶습니다. 토공 작업을 통해 다양한 시간에 각 그리드 위치에 대해 많은 측정이 이루어 지므로 4 차원 시간이 있습니다.

관측치는 텍스트 파일에서 읽을 가능성이 높습니다. 각 레코드에는 (2 x 정수) 그리드 위치 (행 및 열) (부동 소수점)지면 수준과 다양한 문자열 정보 코드 (총 30 자까지 가능)가 있습니다.

그리드는 약 10000 행 x 10000 열일 수있다. 그리드의 모든 위치가 각 측량에서 레코드를 갖지는 않지만 일반적으로 최대 100 개의 레코드를 갖습니다. 많은 그리드 위치에는 레코드가 전혀 없습니다 (사이트가 완전히 직사각형이 아님).

레코드를 검색하고 데이터를 추출하고 계산을 수행하고 싶습니다 (예 : 각 그리드 위치에 대한 최저 또는 최고지면 수준 계산). FORTRAN, BASIC 또는 C와 같은 언어로 배열을 사용하여 이것을 간단하게 프로그래밍 할 수 있다고 확신합니다. 많은 배열 요소가 비어 있지만 이것이 올바른 방법이 아니라고 생각합니다. 이와 같은 큰 데이터베이스에는 사용법을 배우는 데 필요한 특수 도구가 필요합니다.

플랫폼에 가능한 옵션을 생각하고 있습니다.

  1. 데이터베이스 프로그램을 사용하십시오. 나는 이것이 얼마나 강력한 지 잘 모르지만 GUI에 많은 오버 헤드가있을 것이라고 생각합니다.

  2. SQL을 사용 하시겠습니까? 이것은 잘 모르지만 데이터베이스의 언어 인 것 같습니다. 나는 항상 선언적이 아닌 명령형 언어를 사용했으며 위키 백과에서 SQL이 선언적이라는 것을 이해함에 따라 나는 변화에 약간 긴장하고 있습니다. 그것을 사용하는 과정을 완전히 이해하지 못합니다. 콘솔 프로그램을 만드는 컴파일러가 있습니까? 데이터베이스가 디스크에 저장되어 있습니까? 그런 바보 같은 질문에 대해 죄송합니다.

  3. c-treeACE와 같은 API를 사용하십니까? 나는 이것이 "이것을하고 나서 그렇게하라"는 언어의 친숙 함을 제공 할 수있는 방법이라고 생각한다 (불행히도 이것이 내가 엔지니어라고 생각하는 방식이다!). 그러나 API가 제공하는 배후의 메모리 및 처리 관리가 거대한 배열로 달성 할 수있는 것보다 우수하기를 바랍니다.

  4. 또는 객체 지향 언어를 사용하여 컴퓨터에서 저장 요구 사항에 대해 걱정하도록 할 수 있습니까? 예를 들어, 레코드를 필요한 결과를 얻는 데 도움이되는 메소드 및 속성이있는 객체로 레코드를 저장하면 3과 비교할 때 막대한 프로그램이 될 것입니다)

수억 개의 레코드가있을 가능성이 높으며 Windows를 실행하는 최신 PC에서 몇 시간 (바람직하게는 초!)이 아닌 몇 분 만에 쿼리하고 처리 할 수 ​​있기를 바랍니다. 좀 더 구체적으로 말하면 Windows 7 64 비트를 실행하는 6Gb 램 및 120Gb SSD가 장착 된 i7 프로세서입니다.

누군가가 초보자와 지혜의 말씀을 나눌 시간이 있기를 바랍니다.


오후 1시에서 5시 사이에 온라인에 접속할 수 있다면 (또는 나중에는 더 좋을 수도 있습니다) 채팅에 참여하여 도움을 드리고자합니다. chat.stackexchange.com/rooms/179/the-heap (당연히 그 전에 교인들이있을 수도 있습니다). 지리 정보 시스템 (Geographic Information Systems) 과 같은 특정 생각 이 도움이 될 수 있습니다.
jcolebrand

답변:


9

여러 가지 옵션이 있으며 여기에 내 대답으로 제한하지 마십시오. 특히 배열 네이티브 데이터베이스가 도움이 될 수 있습니다. 내 대답은 특히 SQL 기반 데이터베이스에 대한 귀하의 질문에 관한 것입니다.

이것이 지리 정보의 문제인 것 같습니다. SQL 기반 데이터베이스는 실제로 이러한 분야에서 잘 사용되지만 데이터베이스 내의 전문가 분야이기도합니다.

이 영역의 SQL 데이터베이스 중 PostGIS 애드온이 포함 된 PostgreSQL이 최고 중 하나로 간주됩니다. 내가 당신이라면, 내가 시작할 곳입니다. SQL의 주요 장점은 아직 생각하지 못한 용도로 데이터를 재사용 할 때 유연성을 유지한다는 것입니다. 우수한 지리 공간 지원으로이 작업을 수행하면 구면 삼각의 특성에 대해 걱정할 필요없이 넓은 지역의 거리를 계산할 수 있습니다.

물론 이것은 그리드가 매우 큰 요소 일뿐입니다. 지구의 곡률을 무시할 수있는 작은 그리드의 경우 PostgreSQL에는 좌표 시스템의 점을 포함하여 다양한 기하학적 유형이 있습니다. 나는 얼마나 많은 면적이 조사되고 있는지 그리고 평면 지오메트리를 취할 수 있는지 여부가 명확하지 않기 때문에 이것을 언급합니다.

그럼에도 불구하고 PostGIS는 3 차원 및 4 차원 기하 좌표 시스템에서 표현 및 계산을 허용하여 사물을 단순화 할 수 있습니다.

또한 사이트가 반드시 정사각형 일 필요는 없습니다. PostgreSQL에서 수행 할 수있는 작업 (기하학적 유형 또는 PostGIS 사용)은 각 사이트에 비 사각형 경계를 정의하여 측정 값을 저장하기 전에 포인트가 사이트 경계 안에 있는지 확인할 수 있습니다.

선언적 언어 영향

이 우려는 과장된 것 같습니다. 사람들은 마치 그들이 호출하는 프로그램의 명령 언어의 일부인 것처럼 SQL 쿼리를 작성할 수 있습니다. 대부분의 쿼리는 중요하지 않습니다.

사람들이 선언적 언어로 의미하는 것은 쿼리 내에서 구조가 원하는 정보를 얻는 방법이 아니라 데이터베이스에 알려줍니다. 이것은 데이터베이스에서 복잡한 정보를 원할 때 중요합니다. 기본적으로 올바른 질문을 할 수 있고 데이터가 유효하면 정답을 얻을 수 있기 때문입니다.

그러나 가장 큰 차이점은 긴 SQL 쿼리가 긴 명령 서브 루틴보다 디버깅하기 쉽다는 것입니다. 쿼리에서 오작동이 발생하는 위치를 더 빨리 좁힐 수 있기 때문입니다.

이것이 작동하는 방법

이 경로를 사용하면 데이터베이스와 원하는 언어로 작성된 프로그램이있을 수 있습니다. 프로그램은 데이터베이스에 쿼리를 보내고 응답을 다시 얻습니다. (PostgreSQL 및 기타 많은 관계형 DB에서) 쿼리를 함수에 넣을 수 있습니다.이 함수는 응용 프로그램에서 호출 할 수 있으므로 더 많은 명령 또는 기능적 인터페이스를 제공합니다. 데이터는 디스크에 저장되고 프로그램과는 별도의 소프트웨어에서 액세스됩니다. 다른 프로그램 (MS Access에서 pgAdmin까지)에 연결하여 쿼리를 실행하거나 보고서를 생성 할 수도 있습니다.

본질적으로 RDBMS는 데이터를 관리하는 "수학 엔진"으로 생각할 수 있으며 프로그램은 데이터와 상호 작용하여 필요한 작업을 수행합니다.


1
답장이 늦어서 죄송합니다. 매우 바빴습니다. sucg에게 자세한 조언을 해주셔서 감사합니다. SQL로 시작하여 O'Reilly 책을 배우고 책에서 권장하는대로 mySQl을 다운로드했습니다. postgreSQL GIS 확장을 사용하고 나중에 C #에서 SQL에 액세스하는 방법을 살펴 보겠습니다. 다시 한 번 감사드립니다.
user19109
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.