[UCA수퍼컴아카데미] 2024 총선거 선거개표방송용 DB 다루기--(2)
2024년 총선거가 끝난지 얼마되지않았다.
AWS 클라우드의 선거데이터를 수신해서 MS-SQL서버로 저장하도록 만든 총선거 DB 수신 SW를 통해서 살펴보자. 닷넷 베이스의 C# 언어를 기초로 개발되었다.
AWS 클라우드 데이터베이스를 끌어다 보는 미리보기를 하는 모습이다.
새로운 정당인 개혁신당 이준석 후보가 출마한 동탄지역 경기 화성을을 기준으로 한다.
이 AWS선거데이터 수신 소프트웨어는 전국을 기준 지역 단위로 수신이 가능하다.
서울, 경기, 대구만 수신하게 하였다.
5~30초 처럼 원하는대로 클라우드로부터 데이터를 자동 수신하게 할 수도 있다. [V] DB Update 항목이 세팅되어있으면 또다른 원격 MS-SQL서버로 데이터를 자동 저장한다.
지역별로 선거데이터 수신이 잘되는지 로그를 저장한다.
아래와 같이 중앙선관위로부터 오라클 골든게이트 솔루션을 이용해 개표가 이뤄져서 개표 데이터가 변경된 선거구 데이터만 수신하는 방식으로 AWS 클라우드에 빠르게 복제된다.
네이버나 다음카카오도 총선 데이터 페이지에 활용한다.
그러면 AWS클라우드 데이터를 로컬의 MSSQL서버나 오라클 DB로 복제한뒤 방송화면 코더, 보도국 기자들의 데이터 뷰어, 안드로이드 모바일 앱등에 재사용할 수 있다.
데이터베이스 관리툴들로 해당 데이터를 확인해보자.
비주얼스튜디오2022 와 C# 언어를 위해 윈도버전의 접속드라이버 클라이언트SDK를 설치한다.
list db directory 명령으로 AWS클라우드 DB에 대한 접속을 확인 한다.
이제 데이터베이스 연결을 한다.
보통 JDBC드라이버로도 잘 붙는다.
그리드뷰로 표시했다.
select
suncode, sidoname, openrate, guname, DUKPCNT01, DUKPRATE01, DUKPCNT02, DUKPRATE02, DUKPCNT03, DUKPRATE03, DUKPCNT07, DUKPRATE07,DUKPCNT09, DUKPRATE09
from
VOTE2024
where
sidoname = '경기' OR sidoname = '서울'
처럼 경기와 서울지역 선거구에 대한 득표만 얻어온다.
개발자가 좋아하는 JSON 타입으로 저장한 자료
{
"VOTE2024": [
{
"KIND" : "1",
"SUNCODE" : "41540000",
"SIDONAME" : "경기",
"GUNAME" : "화성 을 ",
"YOOCNT" : 169135,
"TOOCNT" : 122955,
"TOORATE" : 72.7,
"TOOEND" : 1,
"TOOTIME" : "18",
"OPENCNT" : 122944,
"OPENRATE" : 99.9,
"OPENEND" : 1,
"RANK01" : "07",
"DEGREE" : "90",
"DUKPCNT00" : 684,
"DUKPCNT01" : 48578,
"DUKPCNT02" : 21826,
"DUKPCNT03" : 0,
"DUKPCNT04" : 0,
"DUKPCNT05" : 0,
"DUKPCNT06" : 0,
"DUKPCNT07" : 51856,
"DUKPCNT08" : 0,
"DUKPCNT09" : 0,
"DUKPRATE00" : 0.0,
"DUKPRATE01" : 39.7,
"DUKPRATE02" : 17.9,
"DUKPRATE03" : 0.0,
"DUKPRATE04" : 0.0,
"DUKPRATE05" : 0.0,
"DUKPRATE06" : 0.0,
"DUKPRATE07" : 42.4,
"DUKPRATE08" : 0.0,
"DUKPRATE09" : 0.0,
"SENDTIME" : "20240411083509",
"STATUS" : 0
},
]}
XML타입으로 저장
<?xml version="1.0" encoding="UTF-8"?>
<VOTE2024>
<DATA_RECORD>
<KIND>1</KIND>
<SUNCODE>41540000</SUNCODE>
<SIDONAME>경기</SIDONAME>
<GUNAME>화성 을 </GUNAME>
<YOOCNT>169,135</YOOCNT>
<TOOCNT>122,955</TOOCNT>
<TOORATE>72.7</TOORATE>
<TOOEND>1</TOOEND>
<TOOTIME>18</TOOTIME>
<OPENCNT>122,944</OPENCNT>
<OPENRATE>99.9</OPENRATE>
<OPENEND>1</OPENEND>
<RANK01>07</RANK01>
<DEGREE>90</DEGREE>
<DUKPCNT00>684</DUKPCNT00>
<DUKPCNT01>48,578</DUKPCNT01>
<DUKPCNT02>21,826</DUKPCNT02>
<DUKPCNT03>0</DUKPCNT03>
<DUKPCNT04>0</DUKPCNT04>
<DUKPCNT05>0</DUKPCNT05>
<DUKPCNT06>0</DUKPCNT06>
<DUKPCNT07>51,856</DUKPCNT07>
<DUKPCNT08>0</DUKPCNT08>
<DUKPCNT09>0</DUKPCNT09>
<DUKPRATE00>0</DUKPRATE00>
<DUKPRATE01>39.7</DUKPRATE01>
<DUKPRATE02>17.9</DUKPRATE02>
<DUKPRATE03>0</DUKPRATE03>
<DUKPRATE04>0</DUKPRATE04>
<DUKPRATE05>0</DUKPRATE05>
<DUKPRATE06>0</DUKPRATE06>
<DUKPRATE07>42.4</DUKPRATE07>
<DUKPRATE08>0</DUKPRATE08>
<DUKPRATE09>0</DUKPRATE09>
<SENDTIME>20240411083509</SENDTIME>
<STATUS>0</STATUS>
</DATA_RECORD>
php용으로 만든 자료구조
<?php
$VOTE2024 = array(
array(
"KIND" => "1",
"SUNCODE" => "41540000",
"SIDONAME" => "경기",
"GUNAME" => "화성 을 ",
"YOOCNT" => 169135,
"TOOCNT" => 122955,
"TOORATE" => 72.7,
"TOOEND" => 1,
"TOOTIME" => "18",
"OPENCNT" => 122944,
"OPENRATE" => 99.9,
"OPENEND" => 1,
"RANK01" => "07",
"DEGREE" => "90",
"DUKPCNT00" => 684,
"DUKPCNT01" => 48578,
"DUKPCNT02" => 21826,
"DUKPCNT03" => 0,
"DUKPCNT04" => 0,
"DUKPCNT05" => 0,
"DUKPCNT06" => 0,
"DUKPCNT07" => 51856,
"DUKPCNT08" => 0,
"DUKPCNT09" => 0,
"DUKPRANK00" => 0,
"DUKPRANK01" => 2,
"DUKPRANK02" => 3,
"DUKPRANK03" => 0,
"DUKPRANK04" => 0,
"DUKPRANK05" => 0,
"DUKPRANK06" => 0,
"DUKPRANK07" => 1,
"DUKPRANK08" => 0,
"DUKPRANK09" => 0,
"SENDTIME" => "20240411083509",
"STATUS" => 0
),
...
);
?>
실시간 데이터를 이용해서 방송사용 좌상단, 하단등의 개표데이터 표출 SW를 개발할 수 있다.
데이터수신, 데이터표출등에 사용된 C# 소스코드는
비제이퍼블릭 출판사의 깃허브에 모두 공개되어있다.
이 책을 참고하면 개발이 가능하다.
UCA수퍼컴아카데미
ulsancoding.com