JavaScript DataBase


DB서버를 사용하지 않고 JavaScript로도 DataBase를 만들 수 있습니다. JavaScript는 사용자 브라우저의 CACHE에 저장할 정보를 모두 출력하고 이 CACHE에 있는 정보를 검색합니다. 즉, 사용자 client의 환경에 모든것이 좌우됩니다. 사용자 PC가 느린 컴에서는 그만큼 느리고 빠른 컴에서는 빠릅니다. 각 사용자의 환경이 어떤지는 무수히 많은 경우가 있을 수 있습니다. 486에 메모리 8메가인 컴에서 부터 구경도 못해본 수퍼컴까지 있을수가 있을겁니다.

JavaScript DataBase는 이러한 환경의 사용자 브라우저에서 작동합니다. 사용자의 컴 뿐만이 아니라 브라우저의 CACHE 설정에도 영향을 받을 수 있습니다. nn의 경우 기본적인 브라우저 CACHE가 1M으로 지정되어 있습니다. ie의 경우 좀더 많이 지정되어 있을겁니다. 브라우저의 cache의 양을 넘어가는 data는 사용할 수 없습니다. cache에 어떤 정보가 저장이 되는지 각 저장한 정보에 따라서 얼마만큼의 크기가 되는지는 정확히 모르겠습니다. CACHE의 양과 저장정보의 양과의 관계를 아직까지는 잘 모르겠습니다. (이 부분에 아시는 분 메일을 꼭 보내주세요.)

그러므로 좋지않은 상황인 486, 8메가, 브라우저 기본 cache에서 만든 JavaScript DataBase를 돌려보고 특별한 이상과 속도가 일반적인 CGI에 비하여 차이가 나지 않으면 사용해도 된다고 생각합니다.

하지만, clide side JavaScript는 사용자의 브라우저 위에서 실행이 됩니다. 인터넷의 사용자의 환경은 그야말로 가지각색입니다. "한글"을 지원하는 OS인지 JavaScript를 지원하는지 지원하면 JavaScript1.1을 지원하는 브라우저인지 JavaScript를 꺼놓지는 안했는지.. 기타등등.. 그러므로 여러가지 환경에서 많이 시험해 보고 신중하게 사용해야 합니다. 안그러면 error box DB가 될 수 있습니다. :)


JavaScript로 DB를 구축할 때 주로 배열을 사용합니다. 배열을 만들고 저장할 정보를 배열에 일일이 저장합니다. 그리고 폼에서 입력한 문자를 저장한 배열에서 검색을 합니다. 이게 다 입니다.


DB = new Array();
DB[0] = "저장할 정보 1"
DB[1] = "저장할 정보 2"
DB[2] = "저장할 정보 3"
:
:
DB[99] = "저장할 정보 100"


100개의 정보를 DB라는 배열에 모두 저장했습니다. 이들을 저장하는 방식도 여러가지가 있지만, 위의 것이 가장 기본적인 것입니다. 그리고 이들 정보를 폼에 입력한 문자로 검색을 합니다.

[CODE]function search(폼 입력값) { for(var i=0; i < DB.length; i++) { if(DB[i].indexOf(폼 입력값) != -1) { alert("폼 입력값이 DB에 저장이 되어 있습니다.") } } } <form> <input type="text" name="inputWord"> <input type="button" value="검색" omClick="search(this.form.inputWord.value)"> </form>[/CODE]


배열 DB에 저장한 정보에서 폼 inputWord에 입력한 문자열을 찾는 함수입니다.
페이지에 출력하기 위해서 위의 alert() 함수를 document.write()로 페이지에 써주면 됩니다.
검색된 정보를 페이지에 출력할 때, 폼의 submit로 현재의 페이지에 출력을 하면 잘못된 경우가 ie4에서 나왔습니다.
폼의 submit로 폼의 내용을 보내면 "한글처리"에서 문제가 일어납니다.
폼의 submit는 영어 알파벳 외에는 특수문자로 봐서 자동으로 encode 되어 보내집니다.
한글도 encode됩니다.
그래서 위의 굵은 글자에서 검색어로 입력한 문자열이 있나 없나 검사하기 전에 unescape()로 다시 변환하여 검사를 해야합니다.
unescape()로 변환하여서 위의 굵은 글자들로 검색하니 nn4는 밑의 alert() 가 나왔는데, ie4는 나오지 않았습니다.
위의 encode, unescape를 신경쓸 필요가 없는 방법이 있습니다.
폼의 submit를 사용하지 말고 프레임을 만들고 프레임 페이지 간에 문자열을 검사하면 됩니다.
그러면 위의 문제들을 신경쓸 필요가 없습니다.

출처 : http://user.chollian.net/~spacekan

+ Recent posts