데이터베이스 구축의 의미

왜 AX의 첫 세팅이 데이터베이스인가

구축 순서 일곱 단계는 AX의 첫 세팅은 데이터베이스 구축에 이미 정리돼 있습니다. 이 글은 그 노드를 이어받아, 왜 데이터베이스가 첫 자리에 오는지를 개념 쪽에서 쓰고, 그 뒤 현장에서 실측한 함정을 덧붙였습니다.

1. 쌍둥이의 재료이기 때문입니다

AX는 조직을 데이터로 본뜬 쌍둥이를 만들고 거기에 AI를 붙이는 일이라고 품앗이는 봅니다. 데이터베이스는 그 쌍둥이를 이루는 바탕 자료가 모이는 곳입니다. 앞 노드의 표현대로 AI는 조직의 자료를 읽을 수 있어야 일을 하고, 자료가 읽을 수 없는 곳에 있으면 아무리 좋은 AI를 들여와도 일반론밖에 못 합니다.

그래서 현장 AX에서 데이터베이스는 여러 앱 가운데 하나가 아니라, 그 위에 모든 것이 올라가는 바닥입니다. 근태 화면, 가격표 인쇄, 집계 화면, 업무 AI 방이 전부 같은 바닥을 씁니다.

2. 흩어진 자료를 사람 단위로 잇는 일

데이터베이스 구축은 자료를 한곳에 쌓는 것으로 끝나지 않습니다. 핵심은 따로 놀던 자료를 사람 한 명 단위로 잇는 것이라고 품앗이는 봅니다.

한 의료복지사협 현장 기록에 따르면, 의료기관 이용 기록과 조합원 명부와 소모임 활동 기록이 각각 다른 프로그램과 파일에 있었습니다. 이것을 사람 단위로 이어 보자 처음으로 이런 것이 보였습니다.

  • 출자·조합비 활동이 있는 조합원은 그렇지 않은 조합원보다 의료기관에 더 자주 온다. 사회적 활동이 경제적 이용으로 돌아오는 환류가 믿음이 아니라 이미 작게 돌고 있다는 근거였다
  • 소모임 명단에 있는 사람 대부분이 고객 명부에도 있는데, 실제로 1년 안에 의료기관에 온 사람은 그 절반에 못 미쳤다. 「연계가 안 된다」는 말의 실체가 이 숫자였다
  • 출자 건수가 몇 해째 줄고 있었다. 환류는 도는데 그 입구가 좁아지고 있었다

이 조직은 AX 핵심과제를 「사업소 이용 데이터와 조합활동 데이터를 사람 한 명 단위로 이어, 사회적 활동이 출자·이용·돌봄으로 돌아오는 순환을 조합이 보고 키울 수 있게 한다」로 정했습니다. 데이터베이스는 그 순환을 보는 눈입니다.

잇는 끈은 고유번호입니다. 그 현장에서 두 명부를 잇는 끈은 조합원번호 하나뿐이었고, 번호가 손으로 적혀 있어 일부만 이어져 있었습니다. 나머지를 이름과 생년월일로 이으면 동명이인·가족·탈퇴자가 섞입니다. 이것을 어떻게 다룰지는 품앗이가 아니라 조직이 정할 규칙이라 이사회 결정 사항으로 올렸습니다. 이름으로 이으면 숫자가 부풀어 오른다는 것은 앞 노드의 사례가 이미 보여 줬습니다.

처음부터 짓는 현장에서는 이 끈을 데이터베이스가 매기게 할 수 있습니다. 한 영농형 태양광 협동조합 연합회 현장에서는 발전사업자·조직홍보활동가·협력 시공업체마다 데이터베이스가 번호를 매기게 했고, 발전소 위수탁 계약이 그 번호로 사람과 발전소와 시공업체를 잇습니다. 발전소 주소는 시도·시군구·읍면동으로 나눠 담아, 계약을 맺을 때 그 읍면동을 맡은 승인 업체가 후보로 뜨게 했습니다.

3. 유일본부터 확보합니다

현장에 들어가 처음 하는 일은 자료를 옮기는 것이 아니라 사본을 만드는 것이라는 것이 현장에서 얻은 판단입니다. 품앗이가 들어간 현장 여러 곳에서 조직 핵심 자료의 백업이 한 번도 없었습니다.

  • 한 의료복지사협의 조합원·고객 관리 자료는 10년 가까이 외부 호스팅 위에만 있었고 사본이 없었습니다
  • 한 로컬푸드 협동조합의 매장 판매 데이터베이스는 5년 넘게 돈 낡은 디스크 한 장에 백업 0건으로 올라가 있었습니다

화면 엑셀 내려받기는 백업이 아닙니다. 현장 기록에 따르면 관리자 화면이 내주는 것은 화면에 띄우는 칸뿐이고, 데이터베이스가 실제로 들고 있는 칸과 다릅니다. 한 홈페이지 신청 자료에서는 폼에 20칸이 있는데 내려받기에는 7칸만 나왔습니다. 유일본이면 데이터베이스 덤프가 정공법입니다. 다만 회계 프로그램처럼 장부가 업체 쪽에 있어 덤프를 뜰 수 없을 때는 화면 엑셀이 유일한 출구이고, 그때는 그것을 자동으로 거둬 오게 걸어 둡니다.

「처음」이라는 말도 실측합니다. 로컬푸드 협동조합 현장에서 품앗이는 「처음으로 백업을 떴다」를 추측으로 쓰지 않으려고, 데이터베이스가 스스로 적는 백업 이력표가 0건에서 1건으로 늘어나는 것을 확인했습니다. 같은 현장에서 「BackUp」이라는 이름의 폴더에 최근 날짜 파일이 있었는데, 열어 보니 하루치 판매 추출 파일 묶음이었습니다. 폴더 이름만 보고 「백업이 돌고 있다」고 적었다면 틀렸을 것입니다.

운영 중인 시스템은 멈추지 않고 뜹니다. 매장 판매 데이터베이스는 영업 중 온라인 백업으로 떴고 매장 멈춤은 0분이었습니다. 남의 운영 서버를 읽을 때는 야간에, 순차로, 간격을 두고 읽습니다.

4. 현장에서 실측한 함정

민감정보는 열 이름으로 안 보입니다. 작업 기록에 따르면 한 의료복지사협 고객 명부의 분류 열은 이름만 봐서는 내용을 알 수 없었고, 코드표를 읽고서야 장애·희귀난치·취약계층 분류 같은 민감정보라는 것을 알았습니다. 그 열은 명부에서 떼어 따로 두었습니다. 개인정보 점검이 서버와 데이터베이스보다 앞에 오는 이유입니다.

같은 이름의 두 숫자를 섞지 않습니다. 한 로컬푸드 협동조합의 매장 프로그램에 등록된 「조합원」은 포인트·적립에 등록된 고객을 포함한 인원이었고, 총회자료집의 법정 조합원과 다른 칸이었습니다. 보고서는 두 숫자를 섞어 쓰면 안 된다고 따로 적었습니다.

고유키 없는 표는 조용히 불어납니다. 한 의료복지사협 데이터베이스를 새 기계로 옮기는 과정에서 복원이 여러 번 반복 실행됐는데, 고유키가 있는 표는 충돌로 막혀 행수가 그대로였습니다. 고유키가 없는 표 넷은 아무 저항 없이 다섯 배로 쌓였습니다. 이관 검증은 고유키가 있는 표 넷을 표본으로 골라 전부 통과했고, 하필 오염된 표가 표본 밖이었습니다. 증분 동기를 붙이는 다음 단계에서야 중복 오류로 드러났고, 정본에서 그 표들을 통째로 다시 채워 고쳤습니다. 표본 검증은 전수를 대신하지 못한다는 것이 이 일로 얻은 교훈입니다.

덤프는 권한을 옮기지 않습니다. 이관 기록에 따르면 소유자와 권한을 빼고 뜬 덤프에는 권한이 하나도 없습니다. 롤의 비밀번호, 표 권한, 롤 사이의 멤버십을 따로 옮겨야 했고, 멤버십을 빠뜨려 한 업무 AI가 명부를 못 읽는 일이 생겼습니다. 권한은 양쪽에서 같은 질의로 찍어 대조하되, 읽히는 칸뿐 아니라 거부되는 칸도 같게 거부되는지 봅니다. 읽히는 것만 맞추면 권한이 넓어진 것을 놓칩니다.

이상한 봉우리는 입력 사고일 수 있습니다. 집계 화면을 만드는 동안 한 달 매출에 유난히 큰 봉우리가 보였는데, 사업이 아니라 몇 줄의 입력 사고였습니다. 화면의 잣대는 기존 관리화면과 같게 맞췄습니다.

빈 칸은 빈 채로 보여 줍니다. 돌봄 이용 기록처럼 아직 외부 프로그램 안에 있어 이어지지 않은 칸은 숨기지 않습니다. 무엇이 비어 있는지가 다음 작업 목록이 됩니다.

5. 넣는 것보다 맞추는 것

앞 노드가 밝힌 대로 적재보다 검증이 중요합니다. 품앗이가 현장에서 쓰는 판정은 이렇습니다.

  • 옮긴 뒤 표 개수와 칸 수를 전수 대조하고, 한 칸이라도 어긋나면 실패로 처리한다
  • 옮긴 파일은 양쪽 지문을 대조한다
  • 매장 서버에는 읽기만 하고 설정과 프로그램은 건드리지 않는다
  • 카드번호처럼 쓸 일 없는 민감 칸은 가린 채 옮긴다
  • 데이터베이스가 서버 바깥에서 접속 불가로 닫혀 있는지 실제로 접속해 본다
  • 백업은 되살려 행수를 맞춰 봐야 백업이다. 덤프 파일이 있다는 것은 판정이 아니다

관련 노드


작성: 품앗이 · 2026-10-15 · 의료복지사협·로컬푸드 협동조합·영농형 태양광 협동조합 연합회 현장 실측 기준