본문 바로가기

2018/09

[SQL] 전체 텍스트 검색 일반적으로 텍스트 검색시 사용하는 쿼리로 Like검색을 들 수 있습니다. Select * From [Sales].[OrderLines] Where [Description] Like '%car%'; 그런데 위와 같은 방식은 테이블스캔작업이 발생되기에 행(Row)이 많으면 원하는 내용을 찾는데 오랜 시간이 소모될 것입니다. 물론 인덱스를 타게 할 수도 있으나 car%와 같은 방법으로 해야만 해서 내용 중간에 'car'가 있는 데이터는 찾을 수 없고 더군다나 무작위의 문자열을 다루는 열(Column)에는 특별한 경우가 아닌이상 인덱스를 걸어놓지 않습니다. 결국 신문기사 검색과 같은 텍스트검색을 위해서는 Like이외에 다른 방법이 필요하게 됐고 보통의 인덱스처럼 열(Column)에 인덱스를 적용하는 것이 아니라.. 더보기
[C#] 네트워크 - UDP UDP는 간단하게 서버와 클라이언트가 데이터를 송수신할 수 있지만 일단 데이터를 보내면 상대측이 잘 받았는지 확인할 도리가 없고 심지어 여러건의 데이터를 나누어 보내면 순서대로 받을 수 있을지 조차 장담할 수 없습니다. 따라서 신뢰성이 너무 약해 잘 쓰지 않는 통신방식입니다. 지금은 간단하게 C#으로 UDP통신이 가능한 서버와 클라이언트 프로그램을 구현해 보고자 합니다. 통신 방식은 클라이언트가 서버에 특정 데이터를 보내면 서버는 이 데이터를 받아 앞에 'server : ' 라는 문자열을 추가한뒤 다시 클라이언트에 보내는 방식입니다. static void Main(string[] args) { Thread t = new Thread(myMethod); t.IsBackground = true; t.Star.. 더보기
트랜잭션 (Transaction) MS SQL Server에서 데이터베이스(DB)를 생성하면 실제 데이터베이스파일이 만들어 지는데 일부로 변경한 경우가 아니라면 아래와 같은 위치에 파일이 생성될것입니다. C:\Program Files\Microsoft SQL Server\MSSQL12.MSSQLSERVER\MSSQL\DATA 실제 위와 같은 위치로 들어가면 확장자가 mdf인 파일과 ldf인 파일을 확인해 볼 수 있는데, 예를 들어 abc라는 데이터베이스를 생성했다면 abc.mdf와 abc_log.ldf파일이 존재함을 알 수 있습니다. 여기서 mdf는 실제 데이터가 들어가 있는 파일이며 ldf가 트랜잭션로그파일입니다. 이들 파일은 일반적으로는 한개만 존재할 경우가 많지만 필요에 따라 여러개로 나뉘어질 수 있는데 만약 데이터파일이 나뉘어진거.. 더보기
[C#] async / await 특정 메서드의 비동기 호출을 시도할때는 대부분 작업을 진행하는 메서드부분과 작업을 완료하고 호출되는 메서드를 스레드로 분리하면서 이루어집니다. 하지만 async / await 를 사용하면 비동기호출시 완료처리를 위해 추가했던 별도의 메서드를 분리할 필요가 없어집니다. using (FileStream fs = new FileStream(@"C:\\test.txt", FileMode.Open, FileAccess.Read, FileShare.Read)) { byte[] b = new byte[fs.Length]; fs.Read(b, 0, b.Length); string s = Encoding.UTF8.GetString(b); } 이 예제는 FileStream을 통해 파일 내용을 읽어들이는 동기식 방법입니다... 더보기