XML을 DB에 넣고 web에서 보고자 합니다..

horangs의 이미지

리눅스 서버에서 A라는 프로그램을 수행하고 나면 결과로 xml 파일이 생성됩니다.
여러 사람들의 결과를 실시간으로 web에서 확인할 수 있도록 하는 환경을 구축하려 합니다.
MS-SQL 서버가 있는데, 제가 DB나.. web 구현은 잘 알지 못해서요..

우선은 XML을 DB에 넣는 과정을 해결해보고 싶은데..

DB에 넣으면 web으로 보여주는 것은 php나 등등 쉽게 표나 그래프로 나타내줄 수 있지 않을까..
싶습니다.

리눅스 서버에서 A라는 프로그램의 구동은 bash shell 스크립트로 수행이 되는데....
DB에 어떻게 넣는지 모르겠습니다......ㅠㅠ

DB는 정말 하나도 몰라서요.

도와주세여.

unsouled의 이미지

꼭 DB 가 필요한 상황인가요?

그냥 해당 XML 파일을 WEB 서버의 Document Root 쪽에 넣어주기만 하면 되는 상황인 것 같은데요.

lateau의 이미지

DB에서 xml 데이터만 필요한 거라면 굳이 RDBMS 까지 쓸 필요가 있나라는 생각이 듭니다.
어차피 xml도 key-value로 짝 지어져있기에 KVS를 이용하는게 시각적으로도 더 편리할 거란 생각이 드네요.

DB의 경우는 일단 SQL을 조금 아셔야하고 그외에 구동방식이나 관리방식은 종류에 따라 조금씩 차이가 납니다.
사용방법이 필요하시면 매뉴얼을 찾아보셔야할 것 같네요. 워낙 내용이 방대한지라.

--
I think to myself...what a emerging world.

horangs의 이미지

unsouled님 // web서버의 document root 에 넣어주면 된다는게 잘 이해가 안되요.. 관련 지식이 전무해서 --;; web서버에 xml파일을 복사해서 넣어주고 php나 jsp등으로 구현하여 web브라우저로 나타내면 되겠다는 말씀이신가요?
lateau님 // KVS가 뭐죠? ㅠㅠ 검색해도 나오지 않는군요.. 근데 아무래도 DB에 넣어서 하는게 편하지 않을까 싶은데.. 문제는 넣는다는게 어떻게 넣는건지 모르겠어요....펄 스크립트로 어떤 구문들을 짜면 될 것도 같은데.....

chadr의 이미지

디비에 넣으면 편한 이유를 생각 해보셔야합니다. 단순히 편할거 같은데.... 라고 생각하시면 방향을 잘못 짚으신것 같습니다.

위에 분들도 말씀하신 듯이 디비는 단순히 데이터 저장 용도입니다. 필드로 구분이 되고 각종 제약조건을 지정 할 수 있으며

내부에서 지원하는 몇가지 함수로 간단한 통계 계산도 가능합니다.

생성된 xml 데이터를 한곳에서만 쓰는게 아닌 검색도 가능하고 web이 아닌 다른 서비스에서도 사용을 해야한다면
디비를 쓰는게 타당성이 있습니다. 하지만 단순히 web에서만 사용하신다면 디비에 넣는것과 안넣은 것이 어떤 차이점이
있는지 정확히 정의해 볼 필요가 있습니다.
-------------------------------------------------------------------------------
It's better to appear stupid and ask question than to be silent and remain stupid.

-------------------------------------------------------------------------------
It's better to appear stupid and ask question than to be silent and remain stupid.

unsouled의 이미지

네. 저는 xml 을 만들어주는 서버와 웹 서버가 같은 서버라고 생각했는데요. 아닌가요?

다시 읽어보니 좀 애매하군요. 서버는 리눅스 서버인데 DB 가 MS-SQL 이라니.. 환경과 상황을 정확히 해 주셔야 더 확실한 답을 할 수 있을 것 같습니다.

제가 이해한 대로라면, 일단 index.html 이 들어가는 디렉토리(DocumentRoot)에 xml 파일을 위치시키고,

php, jsp 등의 서버 사이드에서 XML 파서를 이용하여 XML 파일을 직접 파싱해서 데이터를 얻어 표나 그래프로 표현하면 될 것 같습니다.

DB 에 넣는 것보다 훨씬 간단한 작업일 것 같습니다.

lateau의 이미지

Key-Value Store의 약칭입니다.
Key-Value로 짝지어져 있는 것들(mapping class라던지)을 저장하거나 빼낼 때 RDBMS보다 단순하다는 점에서 꽤 편리합니다. xml도 key-value로 짝지어져 있으니 같은 사고방식으로 DB까지 만질 수 있다는 점에서 KVS를 추천드렸던 겁니다.

DB에 값을 집어넣기 위해서는 펄 스크립트로 구문을 짜는 것도 방법이지만 일단은 SQL에 대한 이해가 필요합니다. 그렇다고 정말 어려운 것도 아니니 개론서나 매뉴얼을 읽어보시는게 도움이 될 것 같습니다. 간략하게 이야기하면 DB에 값을 집어넣기 위해서는 '약속된 방법'을 사용할 필요가 있습니다. 즉, 질의응답(query)을 통해야만 DB가 값을 넣어주기도 뽑아주기도 하는 것이죠.

SELECT / INSERT 부터 찾아보시면 될 것 같네요.

--
I think to myself...what a emerging world.

horangs의 이미지

네.. 좀 달라요.. XML이 있는 곳은 리눅스 서버고.. MS-SQL은 윈도우서버죠.. 또 다른 웹서버도 있긴 합니다.

디비화 하는 게 좋겠다고 생각한 것이.. 단순히 XML을 웹에다 보여주는 게 아닌.. 여러 XML 파일 중 특정 필드가 같은 이름을 가진 것을 검색하여 또 다른 어떤 필드를 값을 합하여 표로 나타내줘야 하고.. 하는 등의
검색과 약간의 산술이 있어야 합니다.

제가 궁금한 것은.. 워낙 초보다 보니 일단 db에 넣는다고 했을때... bash shell 스크립트로 프로그램이 종료되면.. 마지막에 생성된 xml 파일 내용(정보)을 db에 넣어라.. 이렇게 해야하는데...또 다른 서버에 어떻게 정보가 잘 들어가지게 하나..입니다.. 개념이 안잡혀서요.. 인터넷 어디에도 검색해도 그러니까 정확히 어떻게 db에 넣는다는 건지 실예제 같은게 없는거 같드라구요..

lateau의 이미지

>> 제가 궁금한 것은.. 워낙 초보다 보니 일단 db에 넣는다고 했을때... bash shell 스크립트로 프로그램이 종료되면.. 마지막에 생성된 xml 파일 내용(정보)을 db에 넣어라.. 이렇게 해야하는데...또 다른 서버에 어떻게 정보가 잘 들어가지게 하나..입니다.. 개념이 안잡혀서요.. 인터넷 어디에도 검색해도 그러니까 정확히 어떻게 db에 넣는다는 건지 실예제 같은게 없는거 같드라구요..

실예제가 없다니요... 많아요. :)
그럼 DB에 넣는다는 이야기를 설명드리면,

1. 연다
2. 넣는다/뺀다
3. 닫는다

로 간략하게 말씀드릴 수 있습니다.

1. 연다: DB에 대한 커넥션을 발급하는 것을 의미합니다. MS-SQL이 실행되면(버젼에 따라 다를 수 있지만) 'sqlserver' 비슷한 프로세스가 생성되는 걸 볼 수 있을 거에요. task manager(태스크 관리자? 윈도우키 + t하면 뜨는 그거;;)에서 확인해보시면 보입니다. 이 상태가 되면 DB Server가 정해진 port로의 접속을 허락하게 됩니다. 이 때 접속하는 곳은 client가 되겠죠... horangs님이 작성하신 프로그램 또한 가장 먼저 해야할 것이 이 커넥션을 발급받는 겁니다. 작성하신 프로그램을 client로 생각하시면 되겠고, server 쪽에서 요구하는 정보(아이디나 패스워드)가 기술된 내용이 필요할 수 있겠네요.

2. 넣는다/뺀다: Query를 날려서 데이터를 넣거나 빼는 실질적인 부분입니다. PL이나 사용하시는 라이브러리에 따라서 틀리겠지만, 대다수 Query를 직접 날리거나(INSERT INTO table ...) 함수/메소드화된 형태로 질의응답을 할 수 있습니다. 자세히 기억은 안나지만 Seasar2라는 java프레임워크에선 obj.select(new SimpleQuery("")).get(); 이런 형태의 메소드로 질의응답을 할 수 있습니다. 또한 원하시는 '들어갔는지'를 확인시켜주기 위해 Boolean 타입으로 결과를 돌려주거나 Exception을 발생시켜 질의응답 결과를 알려주기도 합니다.

3. 닫는다: DB에 대한 커넥션을 닫습니다. 커넥션이 닫히면 어떠한 질의응답도 불가능해집니다.

123번 과정으로 단순하게 정리해봤습니다. 결국 통신-통신-통신이 계속 이어지는게 DB server와의 대화 그 이상도 그 이하도 아닙니다. PL레벨에서 넣고 빼는 걸 원하신다면 java의 jdbc 같은 걸 살짝 구경만 해보셔도 대충 감이 올거라고 생각해요.

--
I think to myself...what a emerging world.

lazycoder의 이미지

ms-sql이라니 리눅스에서 다이렉트로 질의하려면 설정이 간단치가 않습니다만 그래도 다행인겁니다. 왜냐면 ms-sql 2005는 설치시 iis가 요구사항인데(필수는 아니지만) 설치가 되었다면 리눅스에서 iis에 post로 xml을 던져줄수 있도록 iis서버에 웹페이지를 하나 만드세요.. 그 웹페이지가 post로 넘어온 xml 데이터를 ms-sql에 저장하면되니까요.

그리고 ms-sql 2005는 xml 자료형을 지원합니다. 이 말은 xml에 대한 질의도 가능하다는거지요. xsl이 좀 더 일반적인 방법이긴 하지만 어차피 둘다 잘 모르실것 같으니 아무거나 배워서 원하는 데이터만 추려내세요. 이 데이터를 표로 보여주면 됩니다만 꼭 웹이 아니어도 된다면 엑셀로 raw 데이터만 넘겨서 표나 차트로 나타나게 하셔도.. 우선 급한 불은 끌수 있을듯 합니다.

쓰고보니 장황하게 보이는데 iis서버에 ms-sql에 insert하는 웹페이지 하나, 리눅스 쉘 스크립트에 curl로 post전송하는 한줄 추가, ms-sql의 xml 질의문 하나만 있으면 됩니다.

academic의 이미지

MS SQL Server 2005 이거나 2008이라면

Business Intelligence Development Studio 라는 GUI 툴을 이용해

전문적인 지식이 없어도 XML(파일 또는 URL)에서 원하는 값을 DB에 입력할 수 있습니다.

첨부한 이미지는 그 툴 가지고 작업하는 예입니다.

xml을 통채로 저장할 수 있는 데이터 형도 있지만, 그렇게 저장한 xml에서 원하는 데이터를 뽑아내기 위해선 또 공부를 해야하니

질문한 의도와는 거리가 있는 것 같습니다.

그나저나 이미지를 글 내용 중에 보여주려면 어떻게 해야 하나요?

첨부 파일을 클릭하지 않고도 볼 수 있도록

--
academic은 제 고등학교 때 동아리 이름입니다.
academic, 아주 가끔은 저도 이랬으면 좋겠습니다.

댓글 첨부 파일: 
첨부파일 크기
Image icon SSIS.png18.69 KB

----
academic은 제 고등학교 때 동아리 이름입니다.
academic, 아주 가끔은 저도 이랬으면 좋겠습니다.

김한성의 이미지

전에 보던 건데 구글 그래프 api 쪽에서 그렇게 구현된걸
본 기억이 있습니다.
그쪽으로 검색해 보시면 결과가 나올신듯 싶네요

Scarecrow의 이미지

원하는 작업이 어느정도인지 모르겠지만...

XPath와 SQL을 사용하여 스크립트로 작성하면 될 듯...

a287848의 이미지

XML support , 무엇보다 을 통해 SOA 아키텍쳐를 이용하는데에 가장 중요한 사항이라

저희도 SOA 기반 시스템에 XML 기반 DB 를 쓰려고 많이 찾던 중이라.

몇가지 솔루션이 있더군요.
제가 찾았던 주제는 XML support가 가능한 DB였습니다.
트랜잭션이나 Journaling 과 같은 DB의 특징을 포함하고요.

가장 Geek 스런 솔루션은 Berkeley DB xml 이더군요, 버클리 DB xml 쿼리를 통해서
XML 문이 나오고 여기에 html 헤더 까지 모두다 붙일 수 있습니다.

그외에 postgre sql 의 xml support도 괜찮은 편입니다.

Dig it.

Dig it.

댓글 달기

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
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.