2011-01-24 4 views
0

그래, 나는 일반적으로 데이터베이스에 익숙하지 않습니다. 나는 그들 뒤에있는 기본 이론을 이해하고 이상한 Access DB를 여기 저기에 두드렸다.CSV 파일/일반 데이터베이스 질문 쿼리

내가 배우기 위해 애쓰는 한 가지 방법은 구체적인 예입니다. SQL 쿼리가 데이터베이스에 액세스합니다.

LAN 서버에 데이터베이스가있는 시나리오가 있다고 가정 해 봅시다 (논쟁의 여지가있는 MS Access라고 가정 해 봅시다). 클라이언트 컴퓨터에서 SQL 쿼리 또는 기타 쿼리를 실행합니다. 쿼리 결과가 단 한 줄인 경우에도 클라이언트 컴퓨터가 해당 쿼리를 실행하기 위해 전체 데이터베이스를 다운로드해야합니까? 아니면 어떻게 든 CAT5의 데이터를 가져올 수 있을까요? 서버는 그 일을하기 위해 무엇인가를 실행해야합니까? 클라이언트가 일부 작업을 수행하지 않고도 쿼리 결과를 얻을 수있는 방법을 잘 이해할 수 없습니다. ...

검색 할 때이 문제에 대해 두 가지 상반된 이야기가 표시됩니다.

다음 질문 (이미 답변되었을 수 있습니다)에서 다음과 같습니다. DB를 쿼리 할 수 ​​있고 다른 소프트웨어를 실행하는 서버가 없어도 동일한 작업을 수행 할 수 있습니다. CSV? 그렇지 않다면 왜 안 되겠습니까?

이유 나는 어떤 종류의 db 또는 CSV 파일과 통신해야하는 모바일 장치 용 앱을 개발 중이며 매우 높은 속도 (바코드 스캐닝)로 레코드를 업데이트 할 것입니다. 네트워크가 중단되기를 원하지 마십시오 (그대로 [관련 모욕을 삽입하십시오]). 장치에서 서버로 보내는 데이터가 적 으면 적을수록 좋습니다. 사전

답변

1

다양한 SQL 서버에서

덕분에 그냥 있습니다 서버. 클라이언트 쿼리를 수신하고 응답을 되돌려주는 프로그램입니다. 그것은 단순히 데이터 그 이상입니다.

CSV 파일 또는 "플랫 파일"은 단지 데이터입니다. 쿼리 자체에 응답하는 방법은 없습니다.

따라서 네트워크에 연결되어있을 때 쿼리가 서버로 보내 지므로 적절한 결과를 찾을 수 있습니다. 플랫 파일을 열면 네트워크 및/또는 파일 시스템을 사용하여 전체 파일을 읽고 쓸 수 있습니다.

을 편집하여 특정 용도에 대한 메모를 추가하십시오. 쿼리는 네트워크 트래픽이 가장 적기 때문에 데이터베이스 엔진을 사용하는 것이 좋습니다. 당신이 바코드를 스캔 할 때 예를 들어, 쿼리는 다음 텍스트로 간단하게 할 수있다 :

INSERT INTO barcode_table ('code', 'scan_date', 'user') VALUES ('1234567890', '2011-01-24 12:00:00', '1'); 

위의 문자열이 저장되는 데이터베이스 엔진 및 (어떤 관련 지원 데이터와 함께) 코드에 의해 처리됩니다. 응용 프로그램에서 파일을 열어 데이터를 추가하고 닫을 필요가 없습니다. 하나의 파일이 커지면 후자는 매우 느려지므로 많은 사용자가이 파일에 액세스 할 때 동시성이 문제가 될 수 있습니다.

응용 프로그램에서 사용자에게 일부 데이터를 표시해야하는 경우 동일한 방법으로 특정 정보를 요청하고 서버가 관련 결과를 생성합니다. 따라서 사용자가 일부 필터와 일치하는 제품 목록을 원한다는 시나리오를 상상해보십시오. 제품 책이라면, 사용자가 특정 저자의 목록을 요청한다고 가정이 예에서

SELECT products.title, barcode_table.code 
FROM products, barcode_table 
WHERE products.author = 'Anders Hejlsberg' 
ORDER BY products.title ASC; 

는 만 제품의 제목과 바코드가 모바일 응용 프로그램 서버에서 전송됩니다.

이러한 예제는 플랫 파일을 사용하지 않고 특정 종류의 구조 데이터베이스 엔진을 사용하는 데 도움이되기를 바랍니다. 그러나 데이터베이스의 특정 풍미와 구현은 또 다른 질문입니다.

+0

나는 SQL을 사용하는 방법을 얻었지만, 어쨌든 포스트에 감사 드리며, 그것은 내 머리 속에서 좀 더 견고 해졌다. –

0

일반적으로 관계형 데이터베이스는 원격 서버에 저장되며 클라이언트 인터페이스를 통해 액세스합니다. 각 데이터베이스 공급 업체에는 서버의 데이터베이스에 액세스 할 수있는 원격 컴퓨터에 설치할 소프트웨어가 있습니다. 쿼리가 실행될 때 전체 DB가 클라이언트로 다시 전송되지 않지만 쿼리를 구조화하는 방법에 대해 신중하지 않으면 매우 큰 결과 집합을 보낼 수 있습니다.

  • 서버가 클라이언트를 수신 데이터베이스는 클라이언트가 연결
  • 을 연결하고 데이터베이스는 그림에 쿼리 계획을 구축
  • 데이터베이스에 SQL을 명령을 실행 : 일반적으로 흐름을 말하는 것은이 같다 결과를 얻는 방법
  • 계획이 실행되고 결과가 클라이언트로 다시 전송됩니다.

CSV는 단순히 파일 형식이며 관계형 데이터베이스와 같이 완전히 기능하는 플랫폼이 아닙니다.

+0

그래,이 사건이 내가 생각했던 것 같아. 따라서 서버의 .mdb 파일 (Access)의 경우 (서버가 문자 그대로 파일을 호스팅하는 것 외에는 아무것도 실행하지 않음),이 시나리오에서 클라이언트는 전체 파일을 다운로드합니까? 감사합니다 –

+0

나는 대답은 아니오라고 생각합니다. Access 파일은 페이지 단위로 구성되어 있으므로 표 (또는 양식) 정의를 읽거나 색인의 일부 또는 데이터 일부를 검색 할 때 MDB 파일의 일부만을 임의로 액세스해야합니다. – pascal

+0

아 좋아요. 나는 이것이 적절한 데이터베이스가 아닌 다른 무엇으로도 달성 될 수 없다고 생각하고 있습니까? 나는 내가 묻는 진정한 질문은 내가 CSV에 접속할 수 있는지 아닌지에 관한 질문이다. –