데이터 정합 빨리하는 방법 부탁드립니다.

kyeongchan의 이미지

A 서버에는 전체회원을 가지고 있고
B 서버에는 특정 서비스(b)에 대한 회원 리스트를 가지고 있습니다.

일정시점에 한번씩
A 와 B 서버간 특정서비스(b)의 회원리스트를 정합하는 작업이 있습니다.

A 서버에서 b서비스의 회원 리스트를
회원번호|회원구분|기타... (실제 구분자는 없구요..)
10자리,4자리,3자리
이런식으로 TXT 파일을 만들어서 보내줍니다...
list.txt
12345678900030101010101
12345678910030101010101

B서버에서도 b서비스의 회원 리스트를 준비합니다.
12345678900030101010101
12345678910030101010101

이제 정합 작업이 들어가야 하는데...
회원번호는 오름차순으로 정렬된 상태입니다.
회원번호,회원구분 이 맞아야 합니다...

대부분의 경우는 맞을 거라고 생각이 되나 중간에 한두개 정도
더하거나 빼지고 회원구분이 안맞고 이럴거라고 예상이 됩니다.

이 리스트는 약 30만건 정도 되구요...

작업을 어떻게 해야지
A에는 있고 B에는 없는 리스트와
A에는 없고 B에는 있는 리스트
A,B에 모두 있고 회원구분이 안맞는 리스트를
뽑을 수 있을까요...

감사합니다...

happyjun의 이미지

자료를 DB에 넣으시고 작업하시는게 좋을 듯 합니다.

----------------------------------------
http://moim.at
http://mkhq.co.kr

kyeongchan의 이미지

happyjun wrote:
자료를 DB에 넣으시고 작업하시는게 좋을 듯 합니다.

텍스트 파일 처리가 더 빠를것 같아서 그랬는데...
DB에 넣으면 어떻게 처리를 해야 할까요?
프로그램을 또 별도로 짜야할까요?
어렵네요....

감사합니다...

익명 사용자의 이미지

양쪽다 정렬된 상태라면 양쪽 파일에서 한줄씩 읽으면서 같으면 같은 것 리스트에 쓰고, 한쪽이 작으면 작은쪽을 그쪽에만 있는 리스트에 추가하고 그쪽만 다음줄을 읽고.. 반복

이런거 정보처리기사 실기시험 보면 많이 나오는 문제 아니었나요 ^^;

익명 사용자의 이미지

cat A_list.txt > AB_list.txt
cat B_list.txt >>AB_list.txt
이렇게 파일을 합친후에....
정렬후 중복을 걸러내는 방법은 어떨까 합니다.
sort -u AB_list.txt > AB_list.sort

속도는 어느게 빠를질 모르겠네요.
한번만이라면 이게 더 나을것 같습니다.

ㅡ,.ㅡ;;의 이미지

정렬이 안되었다면 좀 문제인데.. 정렬되어있으니..
가장 빠르게 하려면 두파일을 읽어서 라인단위 읽으면서
위에 어느님이 말했듯이 비교해가면서 분류하는게 가장빠르겠구요.

(A > B) ? =>B를 b파일에 쓰고 한라인을더읽는다 
(A< B) ? =>A를 a파일에 쓰고 한라인을 더읽는다
그렇지 않으면 ab 파일에 쓰고 각각 한라인씩을 더읽는다
위를 반복한다.

DB가 있다면 넣었다 빼는것도 방법..

두파일 합한후에 정렬은 정렬에서 시간이 많이 걸립니다.


----------------------------------------------------------------------------

htna의 이미지

DB에 넣었다가 빼게되면, 느려지지않을까요 ?
제가 DB 프로그램을 해 본적이 없어서. 뭐라 말하긴 뭣하지만..
이미 sorting된 정보를 보내준다고하니,
그 정보만을 이용해서 처리하는게 더 낫지 않을까 생각하네요...

WOW Wow!!!
Computer Science is no more about computers than astronomy is about telescopes.
-- E. W. Dijkstra

choissi의 이미지

6만건 이하면 엑셀에서 불러오기로 하면 컬러풀하게~ if/else 매크로로 처리할텐데 6만건이 넘으니까, 액세스나 mysql로 임포트 하신 다음에 쿼리로 하는게 편하겠네요

넣은 방법은 mysql기준으로 프로그램 안짜셔도 명령어로 벌크 로딩으 가능합니다. 그리고 20~30건 소팅이야 인덱스 잡아주면 금방입니다. 파일 불러다가 소팅하고 이렇게 저렇게 하는거보다 이방법이 빠를껍니다. 데이터 검증하기도 좋구요.

울랄라~ 호기심 천국~!!
http://www.ezdoum.com

익명 사용자의 이미지

choissi wrote:
6만건 이하면 엑셀에서 불러오기로 하면 컬러풀하게~ if/else 매크로로 처리할텐데 6만건이 넘으니까, 액세스나 mysql로 임포트 하신 다음에 쿼리로 하는게 편하겠네요

넣은 방법은 mysql기준으로 프로그램 안짜셔도 명령어로 벌크 로딩으 가능합니다. 그리고 20~30건 소팅이야 인덱스 잡아주면 금방입니다. 파일 불러다가 소팅하고 이렇게 저렇게 하는거보다 이방법이 빠를껍니다. 데이터 검증하기도 좋구요.

단순히 회원번호별로 취합만 하면 이게 가장 좋아 보이는 방법같습니다.
그러나... 문제는
같은 번호의 회원이 '회원타입'이 다를수가 있다는데 문제가 있습니다.
디비에 중복체크해서 때려넣으면 중간에 회원타입이 다른 회원은 분명 두건이 들어갈텐데 이럴경우 난감해 지는군요..
그리고 중요한 문제는
A에는 있고 B에는 없는 회원,
B에는 있고 A에는 없는 회원,
A,B 모두 있으나 회원타입이 다른 회원을
모아서 A에게 리포팅을 해줘야 한다는것입니다...

결국... 파일을 읽어서 해결할 수 밖에 없지 않나 생각이 들구요...

쉘 스크립트로 금방 해결 될거 같았는데..

여러 고귀한 의견을 들어보니...
프로그램을 짜야겠다는 생각이 듭니다..

doldori의 이미지

C++의 set과 set_difference, set_intersection이 딱이겠군요.

oldbell의 이미지

Anonymous wrote:
choissi wrote:
6만건 이하면 엑셀에서 불러오기로 하면 컬러풀하게~ if/else 매크로로 처리할텐데 6만건이 넘으니까, 액세스나 mysql로 임포트 하신 다음에 쿼리로 하는게 편하겠네요

넣은 방법은 mysql기준으로 프로그램 안짜셔도 명령어로 벌크 로딩으 가능합니다. 그리고 20~30건 소팅이야 인덱스 잡아주면 금방입니다. 파일 불러다가 소팅하고 이렇게 저렇게 하는거보다 이방법이 빠를껍니다. 데이터 검증하기도 좋구요.

단순히 회원번호별로 취합만 하면 이게 가장 좋아 보이는 방법같습니다.
그러나... 문제는
같은 번호의 회원이 '회원타입'이 다를수가 있다는데 문제가 있습니다.
디비에 중복체크해서 때려넣으면 중간에 회원타입이 다른 회원은 분명 두건이 들어갈텐데 이럴경우 난감해 지는군요..
그리고 중요한 문제는
A에는 있고 B에는 없는 회원,
B에는 있고 A에는 없는 회원,
A,B 모두 있으나 회원타입이 다른 회원을
모아서 A에게 리포팅을 해줘야 한다는것입니다...

결국... 파일을 읽어서 해결할 수 밖에 없지 않나 생각이 들구요...

쉘 스크립트로 금방 해결 될거 같았는데..

여러 고귀한 의견을 들어보니...
프로그램을 짜야겠다는 생각이 듭니다..

같은 회원번호에 타입이 다른 경우에도 DB Query 로 간단히 찾을 수 있습니다.

인생의 무게를 느껴라. 아는 만큼 보이는게다.

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.