<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Blog.RedAge.NET &#187; Database</title>
	<atom:link href="http://blog.redage.net/tag/database/feed" rel="self" type="application/rss+xml" />
	<link>http://blog.redage.net</link>
	<description>Welcome to Avalon</description>
	<lastBuildDate>Sat, 10 Apr 2010 22:18:05 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Database Migration Stroy 1</title>
		<link>http://blog.redage.net/148</link>
		<comments>http://blog.redage.net/148#comments</comments>
		<pubDate>Thu, 22 Jul 2004 18:52:38 +0000</pubDate>
		<dc:creator>RedBaron</dc:creator>
				<category><![CDATA[computer]]></category>
		<category><![CDATA[Database]]></category>
		<category><![CDATA[IT잡상]]></category>
		<category><![CDATA[MySQL]]></category>

		<guid isPermaLink="false">http://blog.redage.net/?p=148</guid>
		<description><![CDATA[DB 고민
한 청년이 RDBMS란 것에 대해 깨달아가면서 MySQL에 실망해가는 와중에 최후의 애증을 담아 MySQL을 활용해 보려고 하는 이야기.
현재까지 밝혀진 문제들..
시작은 예약어
아르바이트중인 사이트의 DB를 Import하는데 아니 그전 DB에서 export 해온 text로된 SQL 문에 예약어가 담겨져 있었다&#8230;Column Name에 버전이.
도무지 믿기지 않아서 확인해보니 Dump~~ MySQL 3.23.5x ~~ 라고 선명하게 찍혀있었다. 역시 3.23의 문제인가? 개발서버(그리고 최종적으로 운영될 서버)의 MySQL [...]]]></description>
			<content:encoded><![CDATA[<h1>DB 고민</h1>
<p>한 청년이 RDBMS란 것에 대해 깨달아가면서 MySQL에 실망해가는 와중에 최후의 애증을 담아 MySQL을 활용해 보려고 하는 이야기.</p>
<h2>현재까지 밝혀진 문제들..</h2>
<h3>시작은 예약어</h3>
<p>아르바이트중인 사이트의 DB를 Import하는데 아니 그전 DB에서 export 해온 text로된 SQL 문에 <strong>예약어</strong>가 담겨져 있었다&#8230;Column Name에 버전이.</p>
<div class="wiki">도무지 믿기지 않아서 확인해보니 Dump~~ MySQL 3.23.5x ~~ 라고 선명하게 찍혀있었다. 역시 3.23의 문제인가? 개발서버(그리고 최종적으로 운영될 서버)의 MySQL 버젼을 4.0.x 대로 마춰달라고 요청해봐야겠다. 현재 쓰고 있는 내 서버는</p>
<pre class="wiki">redbaron@xxx redbaron$ mysql --version
mysql  Ver 14.5 Distrib 4.1.2-alpha, for portbld-freebsd4.9 (i386)</pre>
<p>이다.</p></div>
<div class="wiki">
<h3>DB구조를 보니</h3>
<p><strong>MySQL적 사고</strong>가 느껴지는 구조였다. 나름대로의 정규화는 있었지만, Contents별로 다른 Schema구조를 ㅤㅆㅓㅅ다. 기능추가하거나 할때 조금 번거롭지 않았을까? 약간 심한 말로는 <strong>어차피</strong> 다 게시판이다. 그러나 Table을 나누는 기준은 정말 참고가 되었다.(가뭄속에 단비같은..)</div>
<div class="wiki">
<h3>위의 문제에 이어</h3>
<p>Contents 별로 다른 Schema 구조를 쓴것은 순전히 Hit가 높은 Table에 Index를 잘 걸어서 전체 Load를 줄여보자는 의도였고 몇몇 Table에는 Index가 여러개 나머지 몇몇 Contents들에는 index가 2-3개 정도만 걸려있었다. 물론 Index를 <strong>적절히</strong> 사용한 훌륭한 예지만.. 역시나 이것도 <strong>처리해야 될</strong>문제가 되어버렸다. 하지만 처음 만드신 분의 심정은 <strong>100번 공감</strong>이 간다.</div>
<div class="wiki">
<h2>해결해보자</h2>
<h3>일단은&#8230;</h3>
<p>분리되는 Contents가 아닌 최대한 <strong>통합</strong>할수 있는 Contents 끼리 묶어서 하나의 큰 Schema를 만들고 거기에 Indexs를 제대로 생성해주는 수 밖에 없다고 본다. <strong>약간의 속도의 희생</strong>이 있겠지만 전체적으로 유연한 유지보수를 위해 충분히 희생할 가치가 있다고 생각한다.</p>
<h3>나머지&#8230;</h3>
<p>크게 구조를 손보지 않고 그대로 가져가야 하는 DB들이 있다. 이런 경우에는 Indexs나 Select Query를 약간 손보는 수 밖에 없나? 아직 전체 Table의 수가 50개도 되지 않는 상황이므로 정규화의 여유는 충분히 있다. 사실 Table 100개를 1개의 DB가 수용가능한 Max로 늘 스스로를 세뇌하고 살고 있다. ^^</p></div>
<div class="wiki">
<h1>갈무리</h1>
<p>기존의 개발자의 어떤 <strong>형편과 처지</strong>를 눈치챌 수 있는 DB였고, 그래서 좀 씁슬했다. 이야기가 딴길로 세는것 같지만, 약간의 여유와 제대로된 프로세스(?)와 환경이 였으면 나오지 않았을 수도 있는 DB구조였고 그 개발자분이 처해잇는 형편에서 할 수 있는 가장 합리적인 DB구조 였다. 이 DB를 만드신 분의 성실함에 박수를 보내고 싶다.</div>
<p>하지만, 일단 내 손에 들어왔고, 나 또한 그 앞의 개발자 분 만큼이나 성실함으로 임할 것이므로 새로운 요구사항에 마추어서 세심하게 다시 손보고 뜯어고치고 시작할 것이다. 앞으로 이 DB를 만지면서 MySQL의 한계도 많이 만나겠고,(이미 몇번 만났다 index.html을 로드할때 게시판 수만큼 쿼리가..날라갈지도..모른다..) 이런 것들을 하나씩 해결해 나가고 싶다. 제목에 숫자를 붙인건 그런 이유에서이다.</p>
<p>잘되면 MySQL을 DSN( <a href="http://database.sarang.net/" target="_blank">http://database.sarang.net</a> )의 허정수님 만큼 쓰게 되는 거고 안되도 좋은 경험을 한 것이니 이래저래 손해없는 장사이다. 하지만 여름이고 쳐지기 쉬운 날씨니 좀 더 분발하자.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.redage.net/148/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
