ÀûÀýÇÑ DBMS ¼±ÅÃ

   Á¶È¸ 3478   Ãßõ 0    

 현재 약 5억건 정도의 데이터를 가지고 있는 테이블이 있습니다.
현재는 MariaDB innoDB를 사용중입니다.
파티션은 아직 사용하고 있지 않고요, 고려중입니다. (파티션을 사용할 지, DBMS를 교체할 지..)

테이블 구조는 아주 단순합니다.

필드구분자 시각 행번호 열0 열1  ... 열498 열499
12010-01-01 9:00018.318.31 ... 18.4118.4
12010-01-01 9:00118.2918.3 ... 18.418.41
 ...  ...  ...  ...  ...  ...  ...  ... 
12010-01-01 9:0049818.918.89 ... 18.8518.86
12010-01-01 9:0049918.8818.87 ... 18.8418.83
 ...  ...  ...  ...  ...  ...  ...  ... 
22010-01-01 9:00018.2918.3 ... 18.418.39
22010-01-01 9:00118.2818.29 ... 18.3918.4
 ...  ...  ...  ...  ...  ...  ...  ... 
22010-01-01 9:0049818.8918.88 ... 18.8418.85
22010-01-01 9:0049918.8718.86 ... 18.8318.82
 ...  ...  ...  ...  ...  ...  ...  ... 


특정 지역의 지도가 있다면.. 하나의 세트가 열500개 * 행500개로 이루어진 격자 데이터입니다.
'필드구분자'는 데이터 종류입니다. '기온', '습도' 등등이 됩니다. (1이면 기온, 2이면 습도 등등)

그러니까, 특정 지역의 지도를 500개*500개로 나눈 격자에, 특정 시각에 해당하는 데이터가 주욱 기록되어 있는 구조입니다.

현재, '필드구분자', '시각', '행번호'에 대해서 PK를 잡아 놓은 상태입니다.


데이터를 기록하는 것은, 특정 시점에 한 번에 기록합니다.
예를 들어, 2019년 데이터가 정리되면, 2019년 데이터 수천만건을 한 번에 기록하겠지요.
이 시간이 오래 걸리는 것은 크게 문제가 되지 않습니다. 1년에 한 번 있는 일이니까요.

데이터를 업데이트 하는 경우는 없습니다. 업데이트 한다는 것은 무엇인가 잘못되었다는 것인데..
이렇게 되면, 아마 대량으로 삭제하고, 대량으로 추가하게 되지 않을까 합니다.

문제는 데이터를 조회하는 것입니다. 대부분의 결과셋은 다음과 같은 구조로 조회합니다.
특정 지역의 좌표를 정합니다. (예: 열5, 행20)
그리고 이런 데이터를 2010년 1년치를 뽑아내는 것이죠.
그러니까, 주된 연산은 '피벗' 입니다.

일시기온습도
2010-01-01 9:0018.3138.8
2010-01-01 10:0018.3238.81
2010-12-31 22:0017.4536.5
2010-12-31 23:0017.4436.45


이런 상황인데요.. 조회 속도가 느려서, 이것을 개선하고 싶은 것입니다.

어떻게 하면 좋겠습니까?

1. 현재의 MariaDB를 그대로 사용합니다. 파티션을 잡으면 그럭저럭 괜찮을 것입니다.
2. NoSQL, MongoDB와 같은 RDB가 아닌 것을 사용하는 것이 적합해 보입니다.
3. 기타 다른 해결책

어떤 것이 가장 낫겠습니까?


아, 서버 하드웨어는 빵빵합니다.
메모리 128G에 400G SSD 6개를 RAID5 해서 사용중입니다.

ªÀº±Û Àϼö·Ï ½ÅÁßÇÏ°Ô.
Á¤È®ÇÑ Å×ÀÌºí±¸Á¶¿Í Äõ¸®³»¿ëÀÌ ¾øÀ¸´Ï ¹¹¶ó ¸»Çϱ⠾î·Æ½À´Ï´Ù.

µ¥ÀÌÅÍ°¡ ÀԷµɶ§ À妽º°¡ Á¦´ë·Î °É·ÁÀÖÁö ¾Ê°Å³ª µð½ºÅ© ¹®Á¦À̰ųª
µ¥ÀÌÅͺ£À̽ºÀÇ ¼³Á¤¹®Á¦À̰ųª ..

±âŸ Äõ¸®°¡ ´À·ÁÁö´Â ¿øÀÎÀº ´Ù¾çÇϴϱî¿ä..

Á¤½ÄÀ¸·Î µ¥ÀÌÅͺ£À̽º Àü¹®°¡¸¦ Çѹø ºÒ·¯¼­ ºñ¿ë ÁöºÒÇÏ°í Á¶¾ðÀ» ±¸ÇÏ½Ã´Â°Ô ³ª¾Æ º¸ÀÔ´Ï´Ù.
     
´À¸° °ÍÀ» ÇØ°áÇØ ´Þ¶ó´Â °Ç ¾Æ´Õ´Ï´Ù.
ÀÌ·± »óȲÀÏ ¶§, RDB°¡ ÀûÀýÇÑ ¼Ö·ç¼ÇÀÎÁö.. ¾Æ´Ï¸é ´Ù¸¥ ¼Ö·ç¼ÇÀÌ ´õ ÀûÇÕÇÑÁö ¿©Âã´Â °ÍÀÔ´Ï´Ù.
Á¦°¡ Áú¹®À» Á» ÀåȲÇÏ°Ô Àû¾î ³õÀº °Í °°³×¿ä..
          
ÀÚ²Ù ¾ê±â°¡ ¿ø·ÐÀûÀ¸·Î ¹Ýº¹µÇ´Â ±º¿ä. --;

"Å×ÀÌºí±¸Á¶, ½ÇÁ¦ Äõ¸® ³»¿ë ¹× Äõ¸® °á°ú¸¦ º¸±âÀü¿£ ¹¹¶ó ¸»Çϱâ Èûµé´Ù." ÀÔ´Ï´Ù.
±×¸®°í µ¥ÀÌÅÍÀÇ ³»¿ëÀÌ GIS ¹× ±âÈĵ¥ÀÌÅÍ ºÐ¼®°ú ¿¬°üµÇ¾î ÀÖ´Ù¸é PostgreSQLÀ» ¾²´Â°Ô ³ªÀ»°Ì´Ï´Ù.
ÁÖ¿øÀç 2020-07
µ¥ÀÌÅÍ°¡ º¯ÇÏÁö ¾ÊÀ»Å×´Ï Áß°£¿¡ Áý°è Å×À̺í ó¸®ÇÏ´Â °Íµµ ÇϳªÀÇ ¹æ¹ýÀÔ´Ï´Ù.
     
´äº¯ °í¸¿½À´Ï´Ù.
Áý°è ÀÛ¾÷Àº ¾ø°í, Çǹþ¸¸ Çϱ⠶§¹®¿¡, Áý°è Å×À̺íÀº Àǹ̰¡ ¾ø½À´Ï´Ù.
±èÁ¦¿¬ 2020-07
Á¶È¸ Äõ¸®ÇÏ¸é  ‘pÃÊ °É¸®½Ã³ª¿ä? µüÈ÷ ´À¸±¸¸ÇÑ ºÎºÐÀÌ ÀÖ´Â°Í °°Áö´Â ¾Ê¾Æ¼­¿ä ³¯Â¥¿¡ À妽º °É·ÁÀÖ³ª¿ä ³âµµ  À妽º Çʵå Çϳª ¸¸µå½Ã´Â°Íµµ ÁÁ¾Æº¸À̳׿ä 1ÃÊ À̳»·Î ³ª¿Ã°Í °°Àºµ¥¿ä
Index°¡ ¾ø´Ù´Â °¡Á¤¿¡
PKÀÇ ¼ø¼­°¡ À߸øµÈ °ÍÀ¸·Î º¸ÀÔ´Ï´Ù.
Çà¹øÈ£, ½Ã°¢, Çʵ屸ºÐÀÚ ¼øÀ¸·Î µÇ¾îÀÖ¾î¾ß
Á» »¡¶ó Áú °Í °°½À´Ï´Ù.
     
´äº¯ °í¸¿½À´Ï´Ù.
À½.. Àß ÀÌÇØ°¡ µÇÁö ¾Ê½À´Ï´Ù.
¿Ö ±×·¸°Ô »ý°¢ÇϽʴϱî?

µ¥ÀÌÅ͸¦ »Ì¾Æ³¾ ¶§, Çʵ屸ºÐÀÚ·Î ¸ÕÀú ÇÊÅ͸µÀÌ µË´Ï´Ù. ±× ´ÙÀ½ÀÌ ³¯Â¥ÀÌ°í¿ä. ±× ´ÙÀ½ÀÌ Çà¹øÈ£°¡ µË´Ï´Ù.
ÀÌ·¸°Ô µÇ¾îµµ Çà¹øÈ£ ½Ã°¢ Çʵ屸ºÐÀÚ ¼øÀ¸·Î µÇ´Â °ÍÀÌ ´õ ºü¸¦±î¿ä?
          
´ëºÎºÐÀÇ °á°ú¼ÂÀº ´ÙÀ½°ú °°Àº ±¸Á¶·Î Á¶È¸ÇÕ´Ï´Ù.
ƯÁ¤ Áö¿ªÀÇ ÁÂÇ¥¸¦ Á¤ÇÕ´Ï´Ù. (¿¹: ¿­5, Çà20)

ÀÌ·¸°Ô ¸»¾¸Çϼż­
Çà¹øÈ£´Â 1°³ Çʵ屸ºÐÀÚ´Â ¿©·¯°³ Á¶È¸ µÇ´Â °ÍÀ¸·Î º¸¿©¼­
¸¶¸®¾ÆDBÀÇ Index¸¦ Å»¶§ ¹üÀ§ Á¶°ÇÀÌ ºÙÀ¸¸é
ÇÏÀ§ Ä÷³Àº Index¸¦ ŸÁö ¾Ê½À´Ï´Ù.
(Á¦°¡ ¾Ë°í ÀÖ´Â Áö½Ä - ¹öÀü ¾÷ µÇ¸é¼­ ¹Ù²î¾úÀ» ¼ö ÀÖ½À´Ï´Ù.)
±×¸®°í SSD¸¦ RAID-5·Î ¹­¾î ³õÀº°Ç ¸Å¿ì À§ÇèÇØ º¸ÀÔ´Ï´Ù.

SSD¸¦ RAID·Î Çسù´Ù°¡ ±ú¸ÔÀº ºÐµéÀÌ ¼öµÎ·è ÇÑÁö¶ó..
±×¸®°í 1³â¿¡ 1¹ø Insert°í
ÁÖ ¾÷¹«°¡ ÇǹþµÈ SELECT¶ó°í Çϸé
ÇǹþµÈ ÇüÅÂÀÇ Å×À̺íÀ» ¸¸µé°í
Insert½Ã ÀÓ½ÃÅ×À̺íÀ» ÀÌ¿ëÇØ
ÇǹþÇØ InsertÇÏ°í
select´Â ´Ü¼øÇÏ°Ô ÇÏ´Â ¹æ¹ýÀÌ ´õ È¿À²ÀûÀ¸·Î º¸ÀÔ´Ï´Ù.
(¾÷¹«¸¦ ¸ð¸£°í ÇÏ´Â Á¶¾ðÀ̶ó ±×³É Âü°í¸¸ Çϼ¼¿ä.)
     
´äº¯ °í¸¿½À´Ï´Ù.
±×¸®°í ±× ¹Ý´ëÀÔ´Ï´Ù.

Çà ¼ö°¡ ³Ê¹« ¸¹¾Æ¼­ ÇǹþµÈ µ¥ÀÌÅÍ·Î º¸°üÁßÀÌ°í¿ä..
µ¥ÀÌÅ͸¦ »Ì¾Æ³¾ ¶§´Â ¾ðÇǹþÀ» ÇÏ´Â °ÍÀÔ´Ï´Ù. ^^
¼úÀÌ 2020-07
1³âÄ¡ »Ì¾Æ³»´Â°Å´Â °ÅÀÌ Ç®½ºÄµ Ÿ´Â°Çµ¥ À妽º Àß ¾ÈÅ»°Ì´Ï´Ù. Áß¿äÇÑ ¼­ºñ½º°¡ ¾Æ´Ï¶ó¸é ±×³É ½áµµ »ó°ü¾øÁö¸¸ ¼­ºñ½º°¡ Áß¿äÇÏ°í Ç®½ºÄµÀ¸·Î ¶¯°Ü¿À´Âµ¥ ¹®Á¦°¡ ¹ß»ýÇÑ´Ù¸é DB¸¦ ¹Ù²ã¾ß ÇÏ°ÚÁÒ. ÁÁÀº ¼Ö·ç¼ÇÀº MSSQL AlwaysONÀ» ±¸¼ºÇÏ¸é º¹Á¦µÈ ¼­¹ö¿¡¼­ ±¸Áö Ç®½ºÄµ ÇÒÇÊ¿ä ¾øÀÌ 1³âÄ¡ µ¥ÀÌÅ͸¦ »Ì¾Æ¼­ ¿øÇÏ´Â Åë°è¸¦ ³»µç ¹»ÇÏµç ¹èÄ¡·Î °É¾îµÎ¸é º°°ÆÁ¤Àº ¾ÈÇÒ°Å °°½À´Ï´Ù.
Àú »óȲÀº Å©°Ô ¹Ù²Ü°Ô ¾Æ´Ï¸é SSD·Î ¹Ù²Ù¶ó°í ÇÏ°í ½Í³×¿ä.
     
±èÁ¦¿¬ 2020-07
8760°Ç  »Ì´Âµ¥ Ç®½ºÄµÀ» Ÿ³ª¿ä À妽º¸¸ Àâ¾ÆÁÖ¸é µÇÁö ¾ÊÀ»±î¿ä ÀÌ¹Ì ssd ¶ó°í ½á³õÀ¸™q½À´Ï´Ù
          
¼úÀÌ 2020-07
±Û¿¡´Â ¸î¾ï°ÇÀ̶ó´Âµ¥¿ä? 8õ°ÇÀº À妽º ¾ø¾îµµ ±Ý¹æ ¶å´Ï´Ù.
º¸´Ï±î Çà·Ä º¯È¯ÀÌ µé¾î°¡¸é ÇÔ¼ö°¡ »ç¿ëµÉ°Å°í ÇÔ¼ö »ç¿ë½Ã À妽º ¾ÈŸ´Â °æ¿ì°¡ ¸¹½À´Ï´Ù.
µÑ°´Â º¯È¯Çؼ­ Àӽ÷Πµé¾î°¡¾ßµÉ ÀÓ½ÃÅ×ÀÌºí¿¡ ´ëÇÑ ¼³Á¤ÀÌ ¾ø½À´Ï´Ù. MSSQLó·³ ¿ÃÄÚ¾î ¸ÖƼ¾²·¹µùÀÌ µÇ´ÂÁö ¸ð¸£°Ú³×¿ä.
À­±Û¸¸ º¸¸é ¼ø¼öÇÑ Á¶È¸°¡ ¾Æ´Ï°í Çѹø º¯È¯À» °ÅÄ¡´Â ´Ü°è°¡ Àֱ⠶§¹®¿¡ ´À·ÁÁú¸¸ ÇÏ°Ú´Ù?¶ó´Â »ý°¢ÀÌ µå³×¿ä.
ÆÄƼ¼ÇÅ×À̺í Àâ¾Æµµ À§¿¡ ´ëÇÑ ³»¿ë¿¡ µµ¿ò ¾ÈµÉ°Ì´Ï´Ù.
     
Áß¿äÇÑ ¼­ºñ½º´Â ¾Æ´Õ´Ï´Ù.
ÀÌ ¼­¹ö´Â Àú µ¥ÀÌÅ͸¦ º¸°üÇÏ°í, ÇÊ¿äÇÒ ¶§ Á¶È¸ÇÒ ¿ëµµ·Î¸¸ »ç¿ëÇÏ´Â °ÍÀÔ´Ï´Ù.

MSSQL AlwaysONÀº °³³äÀûÀ¸·Î¸¸ ¾Ë°í Àִµ¥.. 'º¹Á¦µÈ ¼­¹ö¿¡¼­ Ç®½ºÄµ ÇÒÇÊ¿ä ¾øÀÌ 1³âÄ¡ µ¥ÀÌÅ͸¦ »Ì¾Æ¼­' ¶ó°í ¸»¾¸Çϼ̴µ¥..
ÀÌ°ÍÀº º¹Á¦µÈ ¼­¹öµé¿¡¼­ °¢ 1³âÄ¡ µ¥ÀÌÅ͸¦ »Ì¾Æ¿À´Ï, ±×¸¸Å­ ¼­¹ö ºÎÇÏ°¡ ÁÙ°Ô µÈ´Ù´Â ¸»¾¸À̽Ű¡¿ä?
          
¼úÀÌ 2020-07
»óȲº¸´Ï±î ÇÊ¿ä ¾øÀ»°Å °°¾Æ¿ä.
Å©°Ô º¸¸é Çѹø º¯È¯À» °ÅÄ¡°í º¯È¯µÇ´Â µ¥ÀÌÅ͸¦ ÀÓ½ÃÀûÀ¸·Î ÀúÀåµÇ´Â ´Ü°è°¡ ¿À·¡°É¸®´Â°Å °°½À´Ï´Ù. ÀÌ·±°Ç ¿£ÁøÀÇ ¼º´É¿¡ Á¿ìµÉ¼öµµ ÀÖÀ»°Å °°¾Æ¿ä.
À§ »óȲÀº º°µµ·Î ÇØ´ç µ¥ÀÌÅ͸¦ ´Ù¸¥ÂÊÀ¸·Î º¯È¯µÈ µ¥ÀÌÅÍ·Î ¸¶À̱׷¹ÀÌ¼Ç ÇÏ´Â°Ô ´õ ºü¸£Áö ¾ÊÀ»±î ½Í³×¿ä. ¹èÄ¡·Î ¶È°°Àº µ¥ÀÌÅ͸¦ º¯È¯Çϸ鼭  ¶§·Á³Ö´Â°ÅÁÒ.
               
´äº¯ °í¸¿½À´Ï´Ù.
ÀüÇüÀûÀÎ RDBÇüÅÂÀÇ µ¥ÀÌÅÍ°¡ ¾Æ´Ï¶ó¼­.. ¿ÀÈ÷·Á °í¹ÎµË´Ï´Ù. ^^
mysql ÀÌ ÇØ´ç Å×ÀÌºí ±¸Á¶¸é ²Ï ´À¸®°Ô ÀÛµ¿ÇÕ´Ï´Ù.
Çà - ¿­1¿­2¿­3¿­4¿­5¿­6¿­....¿­499¿­500 ±¸Á¶¿¡¼­
Çà - ¿­ - °ª
±¸Á¶·Î º¯°æÇÏ¸é »ó´çÈ÷ »¡¶óÁý´Ï´Ù.

¿¹¸¦µé¸é ¾Æ·¡¿Í °°Àº Çü½ÄÀÌ°ÚÁÒ.

create table huge_data_table (
  category int
  , logdate datetime
  , row int
  , col1 double
  , col2 double
  ...
  , col500 double
);

->

create table huge_rowdata_table (
    category int
, logdate datetime
, row int
, col int
, data_value double
);

µ¥ÀÌÅÍ ¾çÀÌ ¼ö½Ê¾ï°Ç ÀÌ»óÀ¸·Î ¸¹¾ÆÁø´Ù¸é logdate ·Î ÆÄƼ¼Å´× ÇÏ½Ã¸é µÉµí ÇÕ´Ï´Ù. (À妽º Å©±â Àß °è»êÇغ¸¼Å¾ß...)
     
³×, ±× ¸»¾¸ÀÌ ¸Â´Ù°í º¾´Ï´Ù.
±×·±µ¥, ±×·¸°Ô ÇÏ¸é ¼ö½Ê¾ï ÇàÀ¸·Î µÇ±â ¶§¹®¿¡, ±×·¸°Ô ÇÏÁö ¾ÊÀº °ÍÀä..
±×·¡µµ Çà-¿­-°ª Çü½ÄÀ¸·Î ÇÏ´Â °ÍÀÌ ¸Â°Ú½À´Ï±î?
(Å×½ºÆ®¸¦ ÇØ º¸·ÁÇصµ ¿ö³« ½Ã°£ÀÌ ¸¹ÀÌ °É¸®´Â ÀÛ¾÷À̶ó.. ¤Ð.¤Ð)
          
¼ö½Ê¾ï ÇàÀÌ Å×À̺í 1°³¿¡ ÀûÀçµÇ´Â°ÍÀÌ ºÎ´ãÀ̽öó¸é ¹öƼÄà ÆÄƼ¼Å´×À» Çϼż­ col 1°³~¸î°³´ç 1Å×ÀÌºí ±¸¼ºÇϽô°Ô.¾î¶°½Å°¡¿ä?
À§¿Í °°Àº ½Ã³ª¸®¿À¶ó¸é Àú¶ó¸é Å×À̺í 500°³ ¸¸µé°Í °°½À´Ï´Ù.
½ÇÁ¦·Î ´ÜÀÏÄ÷³ Á¶È¸(Å°-º§·ù ŸÀÔ)ÀÇ °æ¿ì ÀÌ·¸°Ô ¸ðµ¨¸µ ÇÏ´Â °æ¿ì°¡ ÀÖ½À´Ï´Ù.
               
´äº¯ °í¸¿½À´Ï´Ù.
±× ºÎºÐÀº »ì¦ »ý°¢¸¸ ÇØ º¸°í ³Ñ¾î°¬¾ú´Âµ¥, Á» ´õ ±¸Ã¼ÀûÀ¸·Î »ý°¢ÇØ ºÁ¾ß°Ú½À´Ï´Ù..
À§¿¡ ±èÁ¦¿¬´Ô ÀÇ°ßó·³ ³âµµÇʵå (¿¹: year, °ª ÇüÅ´ 2010 )¸¦ Ãß°¡ÇÏ°í, ÇØ´ç Çʵ忡 À妽º¸¦ °É¾î¼­ Á¶È¸ Äõ¸®¿¡ ³âµµ¸¦ °É°í Á¶È¸ÇÏ´Â ¹æ½ÄÀ¸·Î »ÌÀ¸½Ã¸é ÇÏ·ç 24½Ã°£x365ÀÏx2±¸ºÐ Çؼ­ 17520°Ç Á¤µµ¾¿ Àß Á¶È¸µÇÁö ¾ÊÀ»±î¿ä..
À±°Ç 2020-07
±»ÀÌ DBMS¸¦ »ç¿ëÇØ¾ß Çϳª¿ä?
rdbmsµç noSQLÀ̵ç SQL ±¸¹®À» ÀÌ¿ëÇؼ­ »ç¿ëÇϱâ ÆíÇÏ°í À¥À̶û ¿¬µ¿Çϱ⿡ ÆíÇÏ´Ù´Â ÀåÁ¡ÀÌ ÀÖ°ÚÁö¸¸
Àú·± ÇüÅÂÀÇ ´ë·®ÀÇ data¸¦ ó¸®Çϱ⿡ DB¸¦ »ç¿ëÇϴ°ÍÀº  ´À/¸³/´Ï/´Ù.
Â÷¶ó¸® HDF Æ÷¸ËÀ¸·Î µ¥ÀÌÅ͸¦ ÀúÀåÇÏ°í ÀоîµéÀÌ´Â°Ô ÈξÀ ¼º´É»ó ÀÌÁ¡ÀÌ ¸¹À» °Í °°½À´Ï´Ù.
±×³É ¸¶À½ ÆíÇÏ°Ô ÀÇ°ßÀ» ³»¸é ½Ã°è¿­ db¸¦ ¾²¸é ¾î¶³±î »ý°¢ÇÕ´Ï´Ù.


QnA
Á¦¸ñPage 945/5686
2014-05   4987430   Á¤ÀºÁØ1
2015-12   1523400   ¹é¸Þ°¡
2020-10   2669   ´ÏÆ÷
2010-12   7588   ÃÖ¿ø½ÃÀÍ
2013-09   10024   ¹Ì³î»ç¶û
2015-01   4312   ½½·çÇÁ
2018-06   3416   Sikieiki
2023-11   1399   Àü¼³¼ÓÀǹ̡¦
2016-03   6178   2FluF
2022-04   1746   ûÃá
2018-06   4104   7755
2017-03   13754   AKMU
2011-01   8291   ±èÁ¤Áß
2016-04   8167   ³ª¿ì¸¶Å©
2018-06   3739   turtlmac
2022-04   2092   2CPUÃÖÁÖÈñ
2017-03   5335   Àü»êoa
2020-10   2986   »ê¸²ÀÎ
2016-04   6538   ³ë¾Æµð
2020-11   3906   Áý±¸¼®
2022-04   3067   ocarina
2015-02   4066   ¼Ò¿µ¼­¹ö