2014년 11월 18일 화요일

[강좌#9] 데이터 캐싱 (Data Caching)[닷넷C#교육/ADO.NET강좌/ASP.NET교육잘하는곳/C#,ASP.NET교육추천/닷넷실무교육/.NET,C#/ADO.NET교육/닷넷학원/ASP.NET실무교육]

ASP.NET의 DB 데이터 캐싱 (Data Caching) 
데이터 캐싱 이란 응용 프로그램이 처음 시작 할 때는 데이터 베이스에 질의해서 가지고 오지만 그 이후 응용 프로그램이 종료 할 때까지는 캐시에 저장된 아이템을 검색하여 사용하는 방법 이다. 

ASP.NET은 HTTP 요구를 통해 임의의 객체를 저장하고 검색하기 위해 페이지에서 사용 가능한 캐시 엔진을 제공 하는 것이다. ASP.NET의 캐싱은 각 응용 프로그램에서만 사용되고 메모리에 객체를 저장 한다. 캐싱의 생명 주기는 응용 프로그램의 생명 주기와 동일 하다. 즉 응용 프로그램이 재시동 되면 캐시는 재 생성 된다. 

캐시에 아이템을 재배치 하는 것은 아래와 같은 방법을 사용 한다. 

Cache[“myCache”] = myDataView 

데이터를 검색하는 것은 아래와 같은 방법으로 한다. 

myDataView = Cache[“myCache”]; 
if (myDataView != null) { 
        DisplayData(myDataView); 


아래의 예제는 페이지가 처음 실행되면 데이터베이스에서 질의 하여 데이터를 가지고 온 후 쿼리된 뷰를 캐시에 저장 하였다가 그 다음부터 응용 프로그램은 생명 주기 동안에는 캐시에 저장된 뷰를 캐싱하여 데이터베이스에 대한 연결 없이도 캐시 아이템을 검색 하여 컨트롤에 데이터를 표시 할 수 있게 된다. 

----------------- 
실습하기 
----------------- 

1.        VS.NET 새 프로젝트를 생성 한다. DataCaching 이라고 이름을 주자. 
2.        DataCaching.aspx 파일을 만들어 아래의 코드를 붙여 넣자. 


<%@ Import Namespace="System.Data.SqlClient" %> 
<%@ Import Namespace="System.Data" %> 
<HTML> 
        <script language="C#" runat="server"> 

    void Page_Load(Object Src, EventArgs E) { 

      DataView Source; 

      // 캐시에서 아이템MyDataSet을 체크하여 
      // 만일 없으면,MyDataSet을 만들어 캐시에 추가한다. 

      Source = (DataView)Cache["MyDataSet"]; //캐시에서 아이템 체크하기 

      if (Source == null) { 
      
        SqlConnection myConnection = new SqlConnection( 
              "data source=localhost; initial catalog=dentalDB;" + 
              "persist security info=True;user id=sa;password=osstem"); 
        SqlDataAdapter myCommand = new SqlDataAdapter( 
        "select scode, sname1, sname2, sbun, skum from HSuga where gbn1 = 1", myConnection); 

        DataSet ds = new DataSet();    //데이터셋 생성 
        myCommand.Fill(ds, "HSuga");  //데이터셋 채우기 

        Source = new DataView(ds.Tables["HSuga"]); //데이터뷰 생성 
        //Cache["MyDataSet"] = Source;              //뷰를 캐시에 저장한다. 
        
        // 매개변수는 다음과 같습니다. 
        // key  : 항목을 참조하는 데 사용되는 캐시 키입니다. 
                // value : 캐시에 추가되는 항목입니다. 
                // dependencies : 항목에 대한 파일 또는 캐시 키 종속성입니다. 종속성이 변경되면 해당 개체는 사용할 수 없게 되어 캐시에서 제거됩니다. 종속성이 없는 경우 이 매개 변수에는 null 참조(Visual Basic의 Nothing)가 포함됩니다. 
                // absoluteExpiration : 추가된 개체가 만료되고 캐시에서 제거되는 시간입니다. 
                // slidingExpiration : 추가된 개체에 마지막으로 액세스한 시간과 해당 개체가 만료되는 시간 사이의 간격입니다. 이 값이 20분인 경우 해당 개체에 마지막으로 액세스한 후 20분이 경과되면 개체가 만료되고 캐시에서 제거됩니다. 
                // priority : CacheItemPriority 열거형으로 표현되는, 개체에 대한 상대 비용입니다. 캐시에서는 개체를 제거할 때 이 값을 사용합니다. 비용이 저렴한 개체가 비용이 많이 드는 개체보다 캐시에서 먼저 제거됩니다. 
                // onRemoveCallback  : 대리자가 제공된 경우에는 캐시에서 개체가 제거될 때 이 대리자가 호출됩니다. 캐시에서 개체가 삭제될 때 이 대리자를 사용하여 응용 프로그램에 알릴 수 있습니다.                
                
                //아래의 경우 60초가 지나면 캐시는 지워 진다. 
        Cache.Add("MyDataSet", Source,  null, DateTime.Now.AddSeconds(60), TimeSpan.Zero, CacheItemPriority.High, null); 

        CacheMsg.Text = "데이터셋이 SQL서버 데이터로 생성되었음"; 
      } 
      else { 
        CacheMsg.Text = "데이터셋이 캐시에서 검색되었음"; 
      } 

      MyDataGrid.DataSource=Source; 
      MyDataGrid.DataBind(); 
    } 

        </script> 
        <body> 
                <form method="get" runat="server" ID="Form1"> 
                        <h3> 
                                <font face="Verdana">데이터 캐싱</font> 
                        </h3> 
                        <i> 
                                <asp:label id="CacheMsg" runat="server" /> 
                        </i> 
                        <br> 
                        <ASP:DataGrid id="MyDataGrid" runat="server" Width="500" BackColor="#ccccff" BorderColor="black" ShowFooter="false" CellPadding="3" CellSpacing="0" Font-Name="Verdana" Font-Size="8pt" HeaderStyle-BackColor="#aaaad" /> 
                </form> 
        </body> 
</HTML> 


[실행 결과] 
처음에 실행 시에는 “데이터셋이 SQL서버 데이터로 생성되었음”이 출력되는 반면에 그 다음 부터는 “데이터셋이 캐시에서 검색되었음”으로 출력된다. 즉 캐시에서 가지고 온다는 것이다.

 [100%환급,개발자전문]빅데이터/SQL/자바/스프링/안드로이드/닷…오라클자바…12-272520
 [채용확정무료교육]오라클자바개발잘하는신입뽑기2개월과정,교육…오라클자바…12-111849
53 [평일100%환급7건]Spring,자바&JSP,안드로이드,웹퍼블리싱,C#닷… 오라클자바…03-151657
52 [주말]C#,ASP.NET마스터 오라클자바…01-311746
51 [기업100%환급,평일주간]SQL기초에서스키마오브젝트,PLSQL,힌트… 오라클자바…01-312516
50 [평일주간야간,주말]C기본&자료구조,알고리즘 오라클자바…01-311391
49 [평일주간,평일야간,주말]Spring,MyBatis,Hibernate개발자과정-… 오라클자바…01-191691
48 [평일야간,주말]안드로이드개발자과정(Android기초실무) 오라클자바…01-111579
47 [평일야간,주말주간야간]JAVA,Network&JSP&Spring,MyBatis,Hiber… 오라클자바…01-032094
46 [100%환급,개발자전문]빅데이터/SQL/자바/스프링/안드로이드/닷… 오라클자바…12-272520
45 [평일주간]NoSQL,MongoDB,빅데이터기초과정 오라클자바…12-191808
44 [평일주간야간, 주말]웹퍼블리싱 마스터(HTML5,CSS3,jQUERY,AJAX… 오라클자바…12-141791
43 [채용확정무료교육]오라클자바개발잘하는신입뽑기2개월과정,교육… 오라클자바…12-111849
42 [평일주간]빅데이터하둡기초과정(BigData Hadoop) 오라클자바…12-091451
41 [평일야간]닷넷(C#,Network,ADO.NET,ASP.NET)마스터 오라클자바…12-011674
40 [기업100%환급]오라클&자바웹스프링신입과정3주(SQL,JAVA,JSP,Se… 오라클자바…12-011849
39 [평일야간,주말]SQL기초에서실무까지(SQL기초,PLSQL,힌트,튜닝) 오라클자바…12-011320

댓글 없음:

댓글 쓰기