자유게시판

제목 Javascript로 움직이는 SQL이 쓸모가 있을까요?
글쓴이 letsgolee 작성시각 2014/06/21 21:27:21
댓글 : 7 추천 : 0 스크랩 : 0 조회수 : 12340   RSS
javascript로 돌아가는 SQL을 찾다가 JavascriptSQL(JSSQL)을 발견했는데 실행속도가 느려 소스를 보니 eval을 사용하여 expression 처리를 하더라구요. eval은 너무 시간을 잡아 먹기 때문에 eval을 사용하지 않는 걸 찾아보니 비슷한 것은 있어도(NDDB, taffy) 완벽하게 SQL 언어를 지원하는 것은 없다보니 한번 만들어볼까 생각을 하게 됐습니다. 그러다  lexer / parser에 관심을 갖고 찾아보다가  http://ariya.ofilabs.com/2011/08/math-evaluator-in-javascript-part1.html 여기서 렉서, 파서에 대한 개념을 알게 되었습니다.

그리고 내친 김에 며칠간 작업하여 select, create, update, insert, delete 문 및 서브 쿼리를 분석해주는 파서를 완성했습니다. 여기서 실제 적용하는데는 어렵지 않은 상황이구요. 간단한 공학 계산기는 테스트로 만들어 보았고 잘 작동하고 있습니다. 함수를 등록해주는 프로그램을 만들어 놓아 등록만하면 어떤 공식도 그냥 풀 수 있습니다... 그래서 조금 더 박차를 가해 SQL언어로 돌아가는 JSON기반 데이터베이스를 만들려 생각하고 있는데 이게 쓸모가 있을까 궁금하기도 합니다. 

이쪽 방면에서 일하는게 아니고 단지 독학으로 프로그래밍을 공부하고 있는거라 이 쪽 생태를 잘 알지 못합니다. 동생이 웹디자이너로 일하고 있기는 하지만... 혼자 생각으로는 요즘 모바일 환경으로 바뀌어 가고 있기 때문에 웹상에서 돌아가는 데이터베이스도 상당히 메리트가 있을거라 생각하는데 실제 그런지 모르겠습니다. 그냥 앱인 경우는 sqlite가 인기가 있는것은 알고 있습니다.

의견이 있으면 알려주시면 고맙겠습니다.
 다음글 글이 auto-wrap이 되지 않고 다 overflow... (3)
 이전글 소방방재청 재난 문자?? (3)

댓글

darkninja / 2014/06/21 23:25:44 / 추천 0
원론적인 의견입니다.
sqlite 는 가볍고 범용으로 쓸수가 있습니다. 히트하면 대박이라는거죠 ㅋ
js 기반이라면 js 가 지원 되지않는 환경에서는 무용지물입니다.
짧은 시간내에 결과가 나온다면 아무런 문제가 없겠죠
그래도 만들어 보는건 찬성입니다.
a 를 만들었으면 b 를 만드는것도 가능할테니까요!
letsgolee / 2014/06/21 23:56:23 / 추천 0
javascript는 당연히 js가 되지 않는다면 의미가 없죠. 그런데 이런 생각을 해봅니다. 많은 경우 데이터베이스 연동으로 인하여 서버와 접속하여 데이터를 계속 ajax로 받아와 작업을 합니다. 그런데 전체 데이터베이스 크기가 크지 않다면 통채로 내려보내어 웹페이지를 닫지 않는 가운데서는 javascript로 계속 작업하도록 할 수 있습니다. 그렇게 되면 서버와 통신을 하지 않아도 됩니다. 즉 동기화가 그다지 필요하지 않은 데이터들을 연동할 때에는 큰 이득이 되지 않을까 싶은 겁니다. 앱에서는 당연히 js보다는 자체 디비를 사용하는 것이 유익이기 때문에 그건 생각하고 있지 않습니다.

그리고 파서까지 작성한 코드가 압축하지 않은 상태에서 약 54키로바이트 정도 됩니다. 따라서 다 짜여도 압축하지 않은 상태에서 100킬로바이트가 되지 않을 듯합니다. jquery가 압축한 것이 95키로바이트 정도 된다면 상당히 가볍지 않을까 싶습니다.
darkninja / 2014/06/22 07:02:00 / 추천 0
위에서
짧은 시간내에 결과가 나온다면 <= 이 말은 프로그램 성능이 아니라
만들어낸 소스코드 자체를 의미하였습니다.
세월은 빨리 흐르고 시간은 단가가 비싸기 때문에
무한정 삽질을 할수는 없겠죠
물론 능력이 있는 분은 예외입니다!
 
한대승(불의회상) / 2014/06/23 10:31:28 / 추천 0
네.. 쓸모가 많을것 같습니다.
html5에서 웹SQL을 지원하거나 local storage를 지원하기 시작하는것 보면 쓸모가 많다고 생각하는 사람이 많았던 모양 입니다.

local storage 지원 부라우져 : http://caniuse.com/#feat=namevalue-storage
WebSQL 지원 부라우져 : http://caniuse.com/#feat=sql-storage

하지만 전체적으로 사용하기에는 지원부라우져들이 들쭉날쭉하니 통합된 라이브러리가 있으면 좋겠네요.
보안 문제가 조금 걸리기는 하군요.

 
letsgolee / 2014/06/23 14:39:38 / 추천 0
네 :-) 보안은 포기해야겠죠?. 의견 감사합니다. 
kaido / 2014/06/26 17:55:51 / 추천 0
분담의 문제가 아닐까 싶습니다.

딱히 중요하지 않은 데이터는 로컬과 js를 이용하고

중요한 키 데이터만 서버에 보관.

로컬과 서버의 데이터만 잘 분리해서 컨트롤만 가능 하다면

서버의 부담율이 줄어드니깐요.

확실히 보안이 문제긴 하지만, js 기반이란것은 여러가지 특혜가 있다고 생각합니다.

대표적으로 js를 사용만 가능한 환경이면 플랫폼을 자유롭게 넘나들수 있는 장점이 있죠.


그러나 아직 현실은 이상향일뿐.
letsgolee / 2014/06/26 18:02:32 / 추천 0
제가 본게 바로 그점입니다. 서버에서 모든 것을 커버하기에는 너무 무리가 갑니다. 예전에 RSA를 만들면서 BigInteger를 테스트했는데 생각외로 이게 서버에서 완전히 느리더라구요. 그런데 js에서는 날아다닙니다. 그 때부터 서버가 아니라 왠만하면 클라이언트에서 처리하도록 해야 한다는 것을 실감했습니다. 어찌보면 분산의 원리도 이와 비슷하겠지만요.

또한 현실은 이상향이 아닙니다. 현재 파서는 이미 완성상태이고 실행하는 것은 create table과 create index까지 작업했습니다. 현재 짠 코드만 3000줄이 넘습니다...