답변

0

기본적으로 XML로 데이터베이스를 백업하고 싶습니다.이 백업을 서버에서 처리하는 대신 응용 프로그램에서 처리하는 것을 원하지 않습니다.

컨텍스트에서 해고 된 이벤트를 처리 한 다음 데이터를 저장한다고 생각합니다. 여기

가있다 : 나는 xml 파일 크기가 너무 성장 (단순 짧은 데이터 유형의 100-300 작은 개체의 기록과 같이 개최합니다) 일치하지 expext으로

, 내가는 XML DB에 대해 동 기적으로 작업하기로 결정 강력한 형식의 DTA 세트의 부분 클래스 : 심지어 단지 표시를 얻을 수있는 빠른 perfoance 테스트를했다, 그래서 당신은 당신의 자신을 귀찮게하는 경우 BTW

Imports System.Xml 
Partial NotInheritable Class XmlDatabas : Inherits Data.DataSet 
    Private ReadOnly XmlFileName As String = _ 
      My.Application.Info.DirectoryPath & "\Data.xml" 

    Private Sub SeawaveData_Initialized(sender As Object, e EventArgs) _ 
       Handles Me.Initialized 
     If Not IO.File.Exists(XmlFileName) Then WriteXml(XmlFileName) 
     ReadXml() 
    End Sub 

    Public Shadows Sub AcceptChanges() 
     MyBase.AcceptChanges() 
     WriteXml() 
    End Sub 

    Public Overloads Sub ReadXml() 
     ReadXml(XmlFileName) 
    End Sub 

는 (의존하지 않는, 다시 매우 추상적 테스트, 테스트입니다 만약 당신이 더 큰 파일의 XmlDb을 만들려고한다면!). 또한이 파일은 xml 파일에서 외부 변경 사항을 테스트하지 않으며 ASP.NET에서 우승 응용 프로그램에 적합하거나 다중 요청을 허용하려는 경우 기존 응용 프로그램의 변경 사항을 확인하는 방법을 고려해야한다고 생각하십시오. , 또는 커밋 변경 큐가있는 DAL DLL을 만들 수 있습니다.

Module Program 
    Sub Main() 
     Using ds As New XmlDb 
      Dim longString = "" 
      For index As Integer = 1 To 250 
       longString &= "aaaaaaaaaaaaaaaaaaaaaaaaa" 
      Next 
      Dim step1 = Now 
      For index As Integer = 1 To Short.MaxValue 
       ds.Account.AddAccountRow(index.ToString, longString, True, True, _ 
        longString, "", "", longString, longString, longString, _ 
        longString, longString, longString, longString, longString, _ 
        longString) 
      Next 
      Dim step2 = Now 
      ds.AcceptChanges() 
      Dim step3 = Now 
      Console.WriteLine("step 1 took: {0:T}", step2 - step1) 
      Console.WriteLine("step 2 took: {0:T}", step3 - step2) 
      Console.WriteLine("entire operation took: {0:T}", step3 - step1) 
     End Using 
     Stop 
    End Sub 
End Module 
    Public Overloads Sub WriteXml() 
     WriteXml(XmlFileName) 
    End Sub 
End Class 

Results: 
step 1 took: 00:00:01.3390000 
step 2 took: 00:00:23.5280000 
entire operation took: 00:00:24.8670000 

24.8 초, 큰 아? xml 파일의 크기를 알려주십시오. 2062857146 바이트는 1967.2938785553입니다. MB

+0

그러나 ObjectContext는 데이터베이스가 아닙니다. 그리고 그것을 비 직렬화할까요? –

+0

당신 말이 맞아요, 무슨 말 할까, 좋은 생각 있어요? 어쩌면 SavingChanges 이벤트에서 테이블 이름, 행 ID, db에 대한 각 커밋의 시간 간격을 저장하고 서버가 다운되었을 때 paralelly로 x 행 DB에 해당 행을 추가하는 예약 된 윈 - 서비스를 갖습니다. 문제. 나는 기본적으로 두 개의 DB와 함께 객체 컨텍스트를 작동시키는 방법을 찾는다 : sql과 xml, 둘 다 동기화된다. 서버가 xml로 간 다음 sql과 xml을 동기화한다. – Shimmy

0

ObjectContext는 DataSet과 다릅니다. 그것을 직렬화하는 것에 대해 이야기하는 것은 이치에 맞지 않습니다.

+0

저는 알고 있습니다. 그러므로 누가 그와 같은 것들을 구현했는지 묻습니다. 그렇지 않으면 내가 그럴 것입니다. – Shimmy

+0

당신은 무엇을 직렬화할까요? –

+0

anything, string, objects everything – Shimmy

관련 문제