데이터베이스 MSSQL,SYBASE, MYSQL, Postgresql, cubrid 용량제한 대충 비교..

mssqlhttp://msdn.microsoft.com/en-us/library/ms143432.aspx











File size (data)


16 terabytes


16 terabytes


File size (log)


2 terabytes


2 terabytes

....어쨌든 크다.
내가 용량한계 걱정할필요없을만큼







Rows per table


Limited by available storage


Limited by available storage


oracle ............
모르겠다. mysql보다는 좋겠지뭐... 비싸고 라이센스 구할길이 없어서 제외... 어차피 어둠의 경로가 되긴하지만 그래도
mysql-------------------------------------------------------------------
http://forums.mysql.com/read.php?21,25724,224521#msg-224521
약간의 제한... innoDB로 하면 된다는건데..... 따로 깔아야되나 모르겠다
* 16TB of data for InnoDB table (maybe more). 
* _Default_ limit of 4G bytes or rows in MyISAM table -- See CREATE TABLE and ALTER TABLE for increasing that limit. 
* MyISAM hard limit is perhaps 2**56 bytes -- you won't hit that in my lifetime. 
* key_buffer_size (cache for MyISAM indexes) -- hard limit of 4GB (even on 64-bit machines), but you can have more than one. 
* innodb_buffer_pool_size -- more than 4GB, suspect at least 8TB. 
* 32-bit OS limits -- depends on OS -- ram-related things are limited to somewhere between 1.6GB and 3GB. 
* Number of rows -- might be 4G limit if compiled for 32-bit. 
* Various stats -- silently wrap at 4G if compiled for 32-bit. 
* File sizes -- mostly OS limit, which (today) tends to be plenty huge. 
* Query Cache -- don't know; probably not efficient to come anywhere near 4GB. 
* Number of databases/tables/files -- no hard limit, but millions will cause trouble. 
* Number of connections open at once (cf Max_connections) -- OS will stop you from opening more than RAM can handle (hundreds, maybe thousands). 
* One column of table -- 4GB (LONGTEXT, LONGBLOB) 
* InnoDB row size -- 8K? (*TEXT and *BLOB count for only 768 bytes until InnoDB "plugin") 
* Index size -- 1000? 
* VARCHAR/VARBINARY -- used to be 255, now 65535 bytes(?) 
* Number of views, stored procedures, etc -- ? 
* Length of db/table/view/sp/column names 
* Columns per table: 4K; possibly fewer if their names are lengthy. 
* Columns per table (InnoDB): 1000. 
* Index prefix: MyISAM: 1000, InnoDB: 767 
* GRANTs: Unlimited except by MyISAM table limits? 
* JOINs, including implicit ones in Views: 61 
* Integer (BIGINT): 0-2**64 (UNSIGNED) or +/- 2**63 (SIGNED) 
postgresql -------------http://www.postgresql.org/about/


























Limit Value
Maximum Database Size Unlimited
Maximum Table Size 32 TB
Maximum Row Size 1.6 TB
Maximum Field Size 1 GB
Maximum Rows per Table Unlimited
Maximum Columns per Table 250 - 1600 depending on column types
Maximum Indexes per Table Unlimited
Sybase...우리나라에서는 많이 안쓰는것같다.------------------------------------------------------
유룐가보다.제외...

더 조사할것도 없이....

cubrid----------------
일단 사용자층이 얇고 아직 버그도 꽤 많은 것 같다
리눅스보다는 윈도우에서 더 안정적으로 돌아가는 것 같고
아직 64비트환경에서 설치도 잘 안되고 안되는게 많다
(안된다는건..우분투10.10 64에 한정...)
centos나 우분투 9.04에서는 패키지도 지원된다.

결국 우분투에서 시냅틱설치가 되면서 성능도 좋은 postgresql이나 mysql로....
둘중에서 라이브러리같은거 지원 더 잘 되는것으로 선택하면 될 것 같다.

C# sql 데이타베이스 연결 문자열

SqlConnection myConnection = new SqlConnection ("Data Source=localhost;Initial Catalog=AutoLot;Integrated Security=True;Pooling=False
");

SqlCommand myCommand = new SqlCommand("INSERT INTO [hello] ([hello]) VALUES (@hello)", myConnection);

SqlParameter helloParam = myCommand.Parameters.Add("@hello", SqlDbType.VarChar );

helloParam.Value = MyTextBox.Text;

myConnection.Open();

myCommand.ExecuteNonQuery();

ReplyQuote

이것때문에 한참 고생하다가 겨우... 찾았다
visual studio 2010 의 서버 익스플로러에서 데이타 커넥션 메뉴에 db를 띄워놓고
클릭하면 오른쪽 아래 속성창에

이런식으로 나온다.저 부분을 커넥션 스트링에다가 그냥 대입하면 된다.
문자열을 어떻게 넣어야될지 몰라서 고생했다면... 이렇게 하는것도 좋을듯... 한참고생했네

/**처음에 썼다가 안되서 이것저것 덕지덕지 붙여가지고 소스가 너무 더러워졌다. 엄청난 노가다 소스를 제작했다가 실패한부분
                ////SQL입력,.. 입력할게 너무 많아서 이걸로 못해먹겠다 해결방법은 스트링에 반복문 합체하기로 해서 입력하면 될듯하다.
                string cnStr ="Data Source=localhost;Initial Catalog=AutoLot;Integrated Security=True;Pooling=False";
                string connectionString =//"Source=localhost;Initial Catalog=StockPrice;Persist Security Info=True;User ID=아이디;Password=비번";
                    "Data Source=MSSQLSERVER; Integrated Security=SSPI;Initial Catalog=StockPrice;connection timeout=5";
                    /** "user id=아이디;" +
                                       "password=비밀번호;
server=localhost;" +
                                       "Trusted_Connection=yes;" +
                                       "database=StockPrice; " +
                                       "connection timeout=5";**/
                // Create a connection string via the builder object.
                /**
                SqlConnectionStringBuilder cnStrBuilder = new SqlConnectionStringBuilder();
                cnStrBuilder.InitialCatalog = "StockPrice";
                cnStrBuilder.DataSource = "localhost";
                cnStrBuilder.ConnectTimeout = 10;
                cnStrBuilder.IntegratedSecurity = true;
                **/
                string connectionString = "Data Source=localhost;Initial Catalog=AutoLot;Integrated Security=True;Pooling=False";
                SqlConnection sqlCn = new SqlConnection();

                sqlCn = new SqlConnection();
                sqlCn.ConnectionString = connectionString;
                //sqlCn.ConnectionString = cnStrBuilder.ConnectionString;
                sqlCn.Open();

                // Format and execute SQL statement.
                string sql = string.Format("Insert Into FutureHoga" +
                  "(date, hotime, sametime, futcode, offerho1, offerho2, offerho3, offerho4, offerho5, bidho1, bidho2, bidho3, bidho4, bidho5, offerrem1, offerrem2, offerrem3, offerrem4, offerrem5, bidrem1, bidrem2, bidrem3, bidrem4, bidrem5, offercnt1,offercnt2,offercnt3,offercnt4,offercnt5, bidcnt1,bidcnt2,bidcnt3,bidcnt4,bidcnt5,totofferrem,totofferrem,totoffercnt,totobidcnt" +
                  "('{0}', '{1}', '{2}', '{3}', '{4}', '{5}', '{6}', '{7}', '{8}', '{9}', '{10}', '{11}', '{12}', '{13}', '{14}', '{15}', '{16}', '{17}', '{18}', '{19}', '{20}', '{21}', '{22}', '{23}', '{24}', '{25}', '{26}', '{27}', '{28}', '{29}', '{30}', '{31}', '{32}', '{33}', '{34}', '{35}', '{36}', '{37}', '{38}')",
                  DateTime.Now.Date,
                  m_RealFH0[i].GetFieldData("OutBlock", "hotime"),
                                     (sametime++),
                                     m_RealFH0[i].GetFieldData("OutBlock", "futcode"),
                                     m_RealFH0[i].GetFieldData("OutBlock", "offerho1"),
                                     m_RealFH0[i].GetFieldData("OutBlock", "offerho2"),
                                     m_RealFH0[i].GetFieldData("OutBlock", "offerho3"),
                                     m_RealFH0[i].GetFieldData("OutBlock", "offerho4"),
                                     m_RealFH0[i].GetFieldData("OutBlock", "offerho5"),
                                     m_RealFH0[i].GetFieldData("OutBlock", "bidho1"),
                                     m_RealFH0[i].GetFieldData("OutBlock", "bidho2"),
                                     m_RealFH0[i].GetFieldData("OutBlock", "bidho3"),
                                     m_RealFH0[i].GetFieldData("OutBlock", "bidho4"),
                                     m_RealFH0[i].GetFieldData("OutBlock", "bidho5"),
                                     m_RealFH0[i].GetFieldData("OutBlock", "offerrem1"),
                                     m_RealFH0[i].GetFieldData("OutBlock", "offerrem2"),
                                     m_RealFH0[i].GetFieldData("OutBlock", "offerrem3"),
                                     m_RealFH0[i].GetFieldData("OutBlock", "offerrem4"),
                                     m_RealFH0[i].GetFieldData("OutBlock", "offerrem5"),
                                     m_RealFH0[i].GetFieldData("OutBlock", "bidrem1"),
                                     m_RealFH0[i].GetFieldData("OutBlock", "bidrem2"),
                                     m_RealFH0[i].GetFieldData("OutBlock", "bidrem3"),
                                     m_RealFH0[i].GetFieldData("OutBlock", "bidrem4"),
                                     m_RealFH0[i].GetFieldData("OutBlock", "bidrem5"),
                                     m_RealFH0[i].GetFieldData("OutBlock", "offercnt1"),
                                     m_RealFH0[i].GetFieldData("OutBlock", "offercnt2"),
                                     m_RealFH0[i].GetFieldData("OutBlock", "offercnt3"),
                                     m_RealFH0[i].GetFieldData("OutBlock", "offercnt4"),
                                     m_RealFH0[i].GetFieldData("OutBlock", "offercnt5"),
                                     m_RealFH0[i].GetFieldData("OutBlock", "bidcnt1"),
                                     m_RealFH0[i].GetFieldData("OutBlock", "bidcnt2"),
                                     m_RealFH0[i].GetFieldData("OutBlock", "bidcnt3"),
                                     m_RealFH0[i].GetFieldData("OutBlock", "bidcnt4"),
                                     m_RealFH0[i].GetFieldData("OutBlock", "bidcnt5"),
                                     m_RealFH0[i].GetFieldData("OutBlock", "totofferrem"),
                                     m_RealFH0[i].GetFieldData("OutBlock", "totofferrem"),
                                     m_RealFH0[i].GetFieldData("OutBlock", "totoffercnt"),
                                     m_RealFH0[i].GetFieldData("OutBlock", "totobidcnt"));

                // Execute using our connection.
                using (SqlCommand cmd = new SqlCommand(sql, this.sqlCn))
                {
                    cmd.ExecuteNonQuery();
                }
                sqlCn.Close();//SQL닫기

닷넷의 핵심언어라는 C#에 손을 대 보기로 했다 이번에야 뭘 만들게 생겨서

비전공자로 찍어먹기식으로 배워서 너무 뒤죽박죽이라 개념도 없고 참 난감한게 ...
별로 의무감도 없고 목표도 없어서 흐지부지 한 경우가 많았는데 이번에는 목표가 생겻다
증권사 API를 이용한 HTS 프로그램

그리 어려운 목표도 아니다.

시스템트레이딩 툴을 쓰면 되지 왜 만들고 있냐고 하기도 하던데... 투자 스타일에 따라서 다르다고 생각한다.
리딩투자증권, 하이투자증권, 우리투자증권 세개 증권사 사용가능하다. 이중에서 리딩만 써봤는데 수수료가 좀 쎄다.
그리고 데이터 제공이 좀 부족하고.. 내맘에 쏙 드는 수식을 사용하지 못하게 돼 있다. 그래서 API를 통해 직접 만들자는 결심을 하게 됐다.

제작 목표는 두가지
1 데이터 수집 - 2 데이터를 활용한 투자

일단 몇 가지를 준비해야한다.

첫번째 단계 증권사 선정


비교대상은 이렇게 네가지다. - 수수료 - API지원수준 - 레퍼런스 - QnA
대신증권 - 수수료가 좀 쎄다 - API와레퍼런스는 정말 좋다. 딱 보면 이해가 가니까... API구조도 간단해보인다. 수수료가 걸림돌...
QnA게시판은 무슨 컴퓨터학원 게시판인 줄 알았다. 대답도 정말 잘해주고 그쪽 직원 실력도 뛰어나다. 언어도 이것저것 다 지원해주는 것 같다. 대신증권 HTS는 자바로 만들었다고 하는 것 같든데... 자바도 지원해줄듯.. COM은 원래 자바에서도 쓸 수 있는건가 모르겠다.

이트레이드증권 - 주식 수수료가 싸다. 선물과 옵션수수료는 좀 쎄다. - 레퍼런스... 어렵다. C++전용설명서라서 먼소린지 하나도 못 알아먹겠고 초보자가 하기엔 거의 진짜 죽도록 어렵다. 그런데 난 초보자... 고행의 길에 발을 들여놓은 것 같다. QnA게시판 답변 잘 안해준다. ㅠ
아직 처음 시작하는 단계라면 거래횟수는 그냥 줄이면 되니까... 대신증권으로 옮기라고 말해주고싶다.

SK증권 - C++예제를 좋은걸 지원해준다. C#도 있다고 하는데 아직 제대로 검토를 못 해봤다. TR은 그냥 쓰지도 못하고 신청을 해야되고 뭐 복잡하다.
TR은... 증권의 메뉴를 말한다. '종목조회TR' '선물호가TR' 이런 개념이다. 필요한거 하나하나 신청해야된다. 난 원래 이런건 다 신청해놓고 한개씩 골라서 쓰는 스타일이라서...

우리투자증권 - 있다고 한다.
삼성선물 - 엑셀로 만드는걸 지원하던데... 안써봤다.
농협선물 - 홈페이지에 가보면 딱 써 있다. API지원.. 써보진 않았다. 선물회사인만큼 선물옵션 파생상품만 거래가 가능하다. API 받으려면 전화하고 해야되서 귀찮아서 안해봤다.
동양증권 - 난 잘 모르겠는데 있다고 한다
하나대투 - 잘 모르겠는데 있다고 한다
대우증권 - 잘 모르겠는데 있다고 한다

두번째 단계 데이터베이스 설계
두번째와 세번째는 병행해야되는거지만.. 굳이 나누자면 이런 것 같다.
어떤 형태로 저장할지 데이터베이스 구조는 결정했는데...
꼭 데이터베이스로 해야할까 하는 생각이 든다. 그리고 데이터베이스는 어떻게 쓰는건지... ㅠ
ADO.NET이니 OLE DB니... 뭐 하는데 이 둘중에 하나를 써야할 것 같다. DB는 아무래도 무료인 큐브리드나 mysql을 써야할 것 같다.
1초에 수십개씩 데이터가 넘어가는데... 무료DB가 버텨줄지도 걱정이다.
대략 하루 누적량이 500메가 정도일 것 같다.
이걸 file i/o로 CSV파일로 뽑아서 장마감후에 데이터를 넘기는게 나을까
... 둘다 해보고 나은걸로 해야할 것 같다.

세번째 단계 데이터 수집기 C#프로그래밍
데이터베이스에 안정적으로 돌아갈만하게 만들어야지...

네번째 단계 궁극의 단계 데이터 처리 프로그램
그냥 거래프로그램이다.
마지막이네.. .이건 오히려 쉽다.

어쨌든 시작... C#기본개념부터 공부하면서 메모를 시작하고.. 만드는 과정도 조금
c#은 아무리 봐도 제대로 돼먹은 책이 없다.
아무래도 비슷한 개념이 많은 c와 c++을 하고 c#을 하는게 쉬울 것 같다. 돼먹지 못한 책으로 개념잡으려면 힘드니까