in mongodb v2.4 

BSON Document Size

The maximum BSON document size is 16 megabytes.

The maximum document size helps ensure that a single document cannot use excessive amount of RAM or, during transmission, excessive amount of bandwidth. To store documents larger than the maximum size, MongoDB provides the GridFS API. Seemongofiles and the documentation for your driver for more information about GridFS.











MongoDB 도큐먼트의 BSON 크기 확인하기

2013/05/16 23:54 by Outsider in Database/NoSQL

간단한 개인 프로젝트를 하면서 MongoDB를 사용했는데 데이터를 조회하던 중 다음과 같은 connection closed due to parseError 오류가 발생한다.

1
2
3
4
5
6
7
8
Thu May 16 2013 19:53:18 GMT+0900 (KST) - error: Error: connection closed due to parseError
  at [object Object].Server.connect (/example/node_modules/mongodb/lib/mongodb/connection/server.js:645:45)
  at [object Object].EventEmitter.emit (events.js:126:20)
  at [object Object]._connect (/example/node_modules/mongodb/lib/mongodb/connection/connection_pool.js:181:15)
  at [object Object].EventEmitter.emit (events.js:99:17)
  at Socket.exports.Connection.createDataHandler (/example/node_modules/mongodb/lib/mongodb/connection/connection.js:357:20)
  at Socket.EventEmitter.emit (events.js:96:17)
  at TCP.onread (net.js:397:14)


오류 메시지만 보면 파싱오류가 발생한 것데 왜 파싱오류가 발생했는지는 추측하기가 쉽지 않다. 이건 소스를 보면 확인할 수 있는데 해당 부분인 connection.js의 소스는 다음과 같다.

1
2
3
4
5
6
7
8
9
10
if(sizeOfMessage < 0 || sizeOfMessage > self.maxBsonSize) {
  var errorObject = {err:"socketHandler", trace:'', bin:self.buffer, parseState:{
    sizeOfMessage: sizeOfMessage,
    bytesRead: self.bytesRead,
    stubBuffer: self.stubBuffer}};
  if(self.logger != null && self.logger.doError) self.logger.error("parseError", errorObject);
  // We got a parse Error fire it off then keep going
  self.emit("parseError", errorObject, self);
  return;
}


메시지가 없거나 최대 BSON 사이즈보다 작은 경우에 오류가 발생한건데 이 경우에는 BSON 사이즈가 최대 크기를 넘어선 경우이다. MongoDB는 BSON(Binary JSON)이라는 데이터형식을 사용하는데 현재 MongoDB의 최대 사이즈는 16MB이다.  과거에는 4MB였는데 1.7.4버전부터인가 16MB로 올라갔고 차후에는 32MB로 올릴 예정인 것으로 알고 있다. 이 값은 참고로 수정할 수 없는 값이므로 MongoDB의 제약사항 중 하나고 MongoDB에서 하나의 도규먼트(RDB라면 하나의 Row)의 최대 크기가 16MB라는 의미이다. 임시적인 프로젝트라서 귀차니즘에 하나의 컬렉션에 데이터를 임베딩해서 넣으면서 16MB가 넘을 일은 없을꺼라고 생각했지만 아마도 넘은듯 하다.(사실 정말 16MB가 넘은지 좀 의심스럽기는 하지만 데이터가 많아서 정확히 확인하지는 못했다.)


BSON 사이즈 확인
MongoDB 쉘에서는 BSON의 크기를 확인할 수 있는 Object.bsonsize()라는 함수를 제공하고 있고 있다.

1
2
3
4
> Object.bsonsize({})
5
> Object.bsonsize({name:'outsider', url:'http://blog.outsider.ne.kr'})
60


bsonsize()에 객체를 넘겨보면 BSON의 크기를 계산해 볼 수 있다. 위와 같이 객체를 직접 넣는대신 query를 넣어서 확인할 수도 있다.

1
2
> Object.bsonsize(db.test.findOne())
988923


위와 같이 findOne() 쿼리를 사용해서 디비에 담긴 특정 도큐먼트의 크기를 확인해 볼 수 있는데 여기서 주의할 점은 findOne()만 되고 find()로는 제대로 확인이 되지 않는다. 여기서 나오는 크기는 바이트크기이므로 988923은 988KB정도가 되는 것이다. BSON 사이즈제한이 의심되는 도큐먼트가 있다면 이 함수를 사용해서 확인해 볼 수 있다.



출처 - http://blog.outsider.ne.kr/941












'DB > MongoDB' 카테고리의 다른 글

mongodb - binary data(type) 저장  (0) 2013.06.18
mongodb - BSON(Binary JSON)  (0) 2013.06.18
mongodb - GridFS save/read file 예제  (1) 2013.06.10
mongodb - install mongodb on centos, fedora  (0) 2013.06.04
mongodb - connection pool  (0) 2013.05.26
Posted by linuxism
,

 

project site - http://remmina.sourceforge.net/index.shtml

 

Features

Remmina project comes with two separated packages.

Remmina main program:

  • A pure GTK+ 2.0 application!
  • Maintain a list of connection profiles, organized by groups
  • Make quick connections by directly putting in the server address
  • Remote desktops with higher resolutions are scrollable/scalable in both window and fullscreen mode
  • Viewport fullscreen mode: remote desktop automatically scrolls when the mouse moves over the screen edge.
  • Floating toolbar in fullscreen mode, allows you to switch between modes, toggle keyboard grabbing, minimize, etc.
  • Tabbed interface, optionally managed by groups
  • Tray icon, allows you to quickly access configured connection profiles

Remmina plugins: RDP, VNC, NX, XDMCP, SSH, Telepathy

 

* 설치

# yum install remmina

 

* SSH를 통해서 linux 원격 접속 하기(Implement XDMCP session over SSH)

xdmcp 플러그인 설치

# yum install

remmina-plugins-xdmcp
start program를 아래와 같이 gnome-session 으로 설정 후 접속





Setting Fedora server

 

 

'System > Linux' 카테고리의 다른 글

linux - watch and grep  (0) 2013.07.12
linux - Running Additional Programs at Boot Time  (0) 2013.07.02
linux - 공유 라이브러리 등록 및 출력  (0) 2013.06.10
linux - RPM(RPM Package Manager)  (0) 2013.06.07
linux - vino-server control  (0) 2013.05.20
Posted by linuxism
,

openid - 개념

Security/Common 2013. 6. 15. 10:06


오픈아이디(OpenID)가 무엇인가요?

블로그 관리help 2012/01/10 11:41

OpenID는 하나의 ID로 가입 절차 없이도 OpenID를 지원하는 여러 사이트에서 로그인을 할 수 있는 분산형 인증 공개 표준 기술을 말합니다. OpenID 공식 웹사이트에서 OpenID를 다음과 같이 설명하고 있습니다.

OpenID 는 사용자 중심 identity 를 위한 분산형 공개 표준 기술 입니다.150

OpenID 는 웹사이트처럼 하나의 URI (URL 또는 주소)로 누구나 인터넷상에서 자신을 식별하게 해줍니다. URI 는 웹 아키텍쳐의 가장 핵심이기 때문에, 사용자 중심 identity 를 위한 단단한 토대를 제공합니다.

OpenID 기술의 첫번째 부분은 인증(authentication - URI 의 소유자임을 증명하는것) 입니다. 오늘날 웹사이트들은 로긴하기 위해 사용자이름과 암호를 요구하는데, 사실 많은 사람이 같은 암호를 거의 모든곳에 사용하고 있습니다. OpenID 인증(see specs)에서는, 당신의 이름은 당신의 URI 주소이고 당신의 암호(또는 다른 인증서)는 당신의 OpenID 제공서버(당신이 직접 운영하거나 제 3 자가 제공하는) 에만 안전하게 보관됩니다.

당신은 하나의 OpenID 로 OpenID 를 지원하는 모든 웹사이트들에 복잡한 가입 절차 없이 로긴할 수 있습니다.


자 세히 설명드리면 회원님이 특정 웹사이트를 이용하기 위해 가입을 하면 그 웹사이트에서만 로그인을 하여 서비스를 이용할 수 있습니다. 요컨데 해당 웹사이트에서의 로그인 인증은 그 웹사이트로 한정됩니다. OpenID는 로그인 인증을 제공하는 서비스를 하나의 웹사이트로 한정하지 않고 OpenID 인증 사이트에만 가입을 하시면 OpenID를 지원하는 다른 사이트에서도 로그인이 가능합니다.

웹사이트에 가입하지 않아도 로그인 가능

이해를 돕기 위해 그림으로 그려봤습니다.
422
위의 그림처럼 각 사이트를 이용하기 위해서는 Site A,B,C 모두 각각 가입을 하여 아이디를 만들어야 합니다. 그리고 Site A의 id인 egloos1으로는 Site B,C에 로그인 할 수 없습니다.
427
하지만 MyID.net이나 MyOpenID.net과 같이 OpenID 인증 사이트 중 한 곳에만 가입을 하면, 일일이 가입하지 않아도 Site A,B 처럼 OpenID 인증을 지원해주는 사이트에서는 내가 원하는 아이디인 이글루주소를 공통적으로 사용하여 로그인이 가능합니다. 물론 OpenID 인증을 지원하지 않는 Site C에서는 불가능 하지만요.

내이글루 주소를 로그인 아이디로 사용

위 의 그림에도 있듯이 OpenID는 URL을 사용합니다. 개인의 홈페이지나 블로그 주소를 사용할 수 있습니다. 특히 블로그 주소는 웹 상에서 나의 아이덴터티(identity)를 잘 드러낼 수 있는 정보입니다. 이글루스 내에서만이 아니라 다른 사이트에서도 내이글루 주소를 로그인 할 수 있다면 다른 사이트에서도 이글루스 내에서의 아이덴터티를 유지할 수 있습니다.

이글루스에서는 2007년 3월 7일부터 내이글루의 주소를 OpenID로 사용할 수 있는 설정을 제공합니다. 내이글루 주소를 오픈아이디(OpenID)로 사용하고 싶으신 분은 "이글루관리 > 선택기능관리 > OpenID" 로 가셔서 인증 정보를 입력하시기 바랍니다.

더 자세한 정보는 아래의 관련 사이트에 방문해 보시기 바랍니다.


출처 - http://help.egloos.com/m/7800




'Security > Common' 카테고리의 다른 글

shiro - 쿠키(Cookie) 인증 처리  (0) 2013.12.31
SAML 이해  (0) 2013.12.29
SOCKet Secure (SOCKS)  (0) 2013.04.02
crytography - key  (0) 2012.12.24
naver login process  (0) 2012.12.23
Posted by linuxism
,