ASP.NET의 DB 데이터 캐싱 (Data Caching) - ADO.NET, 오라클

홈 > 공유팁! > 프로그램 관련
프로그램 관련

ASP.NET의 DB 데이터 캐싱 (Data Caching) - ADO.NET, 오라클

꽁스짱 0 1184

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.OleDb" %>

<%@ 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)  {

            OleDbConnection myConnection = new OleDbConnection(

                  "Provider=MSDAORA;data source=onj;user id=scott;password=tiger");


            OleDbDataAdapter adapter = new OleDbDataAdapter(

            "select empno, ename, sal, deptno from emp where deptno = 20", myConnection);


            DataSet ds = new DataSet();    //데이터셋 생성

            adapter.Fill(ds);   //데이터셋 채우기

            Source = new DataView(ds.Tables[0]); //데이터뷰 생성

                        

            


            //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 = "데이터셋이 오라클서버 데이터로 생성되었음";

        }

        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="700px" BackColor="#CCCCFF" 

         BorderColor="Black" CellPadding="3" Font-Size="8pt" HeaderStyle-BackColor="#aaaadd" Height="153px"

Font-Names="Verdana" PageSize="5">

<HeaderStyle BackColor="#AAAADD"></HeaderStyle>

</ASP:DataGrid>

    </form>

</body>

</html>


 

[실행 결과]

처음에 실행 시에는 데이터셋이 오라클서버 데이터로 생성되었음이 출력되는 반면에 그 다음 부터는 데이터셋이 캐시에서 검색되었음으로 출력된다즉 캐시에서 가지고 온다는 것이다.

 

0 Comments
제목