검색결과 리스트
Database에 해당되는 글 2건
- 2014.08.22 [.NET] Simple.Data (1)
- 2014.01.20 DB 샤딩
닷넷 프레임워크 4.0에 도입된 Dynamic 기능을 활용해서 가볍고 동적으로 데이터(DB의)를 접근할 수 있는 컴포넌트
보통
데이터베이스의 데이터를 코드를 쉽게 접근하는 방법으로 ORM 모델을
사용하거나
mini-ORM을 사용하기도 하는데
Simple.Data를 사용하면 코드를 통해서 자동으로 DB 쿼리문이 만들어진다.
오픈소스로 GitHub를 통해서 얻을 수 있다.
https://github.com/markrendle/Simple.Data
public User FindUserByEmail(string email)
{
return Database.Open().Users.FindAllByEmail(email).FirstOrDefault();
}
이 코드는 User 테이블의 Email 필드를 키로 모든 데이터를 가져오는 것이다.
Users.FindAllByEmail은 동적코드로
위의 Database.Open().Users.FindAllByEmail(email).FirstOrDefault();
ADO.NET 코드로 표현하면 아래와 같다.
public User FindUserByEmail(string email)
{
User user = null;
using (var connection = new SqlConnection(ConfigurationManager.ConnectionStrings["Default"].ConnectionString))
using (var command = new SqlCommand("select id, email, hashed_password,
salt from users where email = @email", connection))
{
command.Parameters.Add("@email", SqlDbType.NVarChar, 50).Value = form.Email);
connection.Open();
using (var reader = command.ExecuteReader())
{
if (reader.Read())
{
user = new User { Id = reader.GetInt32(0), Email = reader.GetString(1),
Password = reader.GetString(2), salt = reader.GetString(3)};
}
}
}
return user;
}
Simple.Data를 사용하면 위의 코드가 아래의 단 한줄로 끝난다 !!!
Database.Open().Users.FindAllByEmail(email).FirstOrDefault();
지원하는 데이터베이스
ADO-based access to relational databases, with providers for:
SQL Server 2005 and later (including SQL Azure)
SQL Server Compact Edition 4.0
Oracle
MySQL 4.0 and later
SQLite
PostgreSQL
SQLAnywhere
Informix
MongoDB
OData
SimpleData에 대해서 더 자세히 알고 싶다면 아래의 문서를 참고한다.
http://simplefx.org/simpledata/docs/
MongoDB
MongoDB는 Simple.Data.MongoDB 라고 따로 분리 되어 있다.
https://github.com/craiggwilson/Simple.Data.MongoDB
주의 사항
1. 몽고디비 컬렉션의 컬럼 이름이 ID 이면 안된다.
이유는 기본으로 몽고디비는 컬렉션에 문서를 만들 때 _id 컬럼을 만드는데 우리가 ID 컬럼을 만들면 Simple.Data.MongoDB에서 이름을 부여할 때 중복된다. -_-
2. 쿼리를 하면 모든 컬럼 값을 다 가져온다. 일부만 가져올 수 없다.
Cast도 그냥 정적 클래스(혹은 구조체)에 담아주는 것이지 일부 컬럼만 가져오는 것이 아님
Sharding(샤딩)
사례-MongoDB의 샤딩
사례-MasterDB 방식의 샤딩
사례-인스타그램의 샤딩
SQL- Spider fo MySQL을 사용한 샤딩
댓글
하하 ;;;
재미있는 발상이군요