Professional Documents
Culture Documents
H CH MINH
Lp
: CNPM03
Kho
: 2008 - 2012
- 08520544
LI M U
Ngy nay vi k nguyn cng ngh bng n, thnh cng ca Internet khin
cho s lng ngi dng truy cp vo cng mt h thng ngy cng tng. in hnh
nh Facebook mt thng phc v hn 1000 t truy cp v hn 800 triu lt khch
gh thm th ta mi hnh dung c s bng n ca thng tin nh th no. gii
quyt vn bng n nh trn th chng ta m rng cc h thng my ch siu ln,
phn thnh nhiu cm t khp ni trn th gii. Nhng vi tc pht trin theo cp
s nh hin nay th vic tng s lng my ch thi vn cha . Ta cn xem xt v
nng cp cc gii php lu tr cho tng lai.
H thng my ch c s d liu i hi phi rt mnh m nu khng my ch
s b qu ti. Vi cc h thng vi s lng ln n hng triu cho n hng t th
vic hiu nng tt l vic bt buc.Cc h RDBMS hin nay th vn hiu nng
thng khng tt cho trng hp ny. Ngn ng SQL l ngn ng thng dch vi
cc rng buc trong cc bng khin cho hiu nng thc s ca h thng c s d
liu khi thc thi l kh ch vi h thng ln nh k trn. Cha k l vi h thng
ln th vn phn tn d liu, tnh ton vn d liu l vic rt quan trng. NoSQL
p ng c tt c cc yu cu ny.Vi tc nhanh do khng phi qua cc cu truy
vn SQL, c tnh sn sng, phn tn cao v n nh tuyt vi, NoSQL rt thch
hp cho cc h thng c s lng lt truy vn ln. trong kho lun ny, chng ti
s nghin cu v mt loi NoSQL kh ph bin RavenDB.
RavenDB l mt c s d liu m ngun m c h tr transactional (giao dch)
c vit cho nn tng .NET. RavenDB a ra m hnh d liu linh hot (flexible data
model) nhm p ng yu cu ca cc h thng th gii thc (real-world systems).
RavenDB cho php xy dng nhng ng dng c hiu sut cao(high-performance),
tr thp(low-latency) mt cch nhanh chng v hiu qu. RavenDB xng ng l mt
c s d liu ng tin cy.
LI CM N
Chng em xin gi li cm n su sc n thy Phm Thi Vng, gip ,
to iu kin cho nhm hon thnh tt kha lun tt nghip ny. Thy tn tnh
hng dn v a ra nhng nhn xt v cng qu gi ti ngy cng hon thin
hn. Nhng gp ca thy gip cho chng em tip cn, hiu r v gii quyt vn
d dng hn.
ng thi, chng em cng xin by t lng bit n n qu thy, c Trng i
Hc Cng Ngh Thng Tin i Hc Quc Gia Thnh Ph H Ch Minh, c bit l
cc thy, c khoa Cng ngh Phn Mm tn tnh truyn t kin thc, kinh nghim
cho chng em t nhng ngy u hc tp ti trng. S nhit tnh ca cc thy, c
gip cho chng em c kin thc nn tng vng chc cng nh kinh nghim thc tin
qu bu chng em c th hon thnh tt cc nhim v hc tp, lm vic v nghin
cu.
Bn cnh , chng em cng gi li cm n n gia nh, cc anh, ch, bn b
ng vin, gip chng em rt nhiu trong qu trnh hc tp cng nh trong cuc
sng.
MC LC
DANH
MC
CC
........1
BNG,S
DANH
MC
HNH...3
1
CC
Vn tm hiu................................................................................................5
1.2
Mc tiu ti.................................................................................................6
1.3
Ni dung bo co.............................................................................................6
2.2
NoSQL l g ?..................................................................................................8
2.3
2.3.1
u im:...................................................................................................9
2.3.2
Nhc im:...........................................................................................10
2.4
Kin trc........................................................................................................12
2.5
2.6
2.6.1
2.6.2
2.7
2.7.1
Xc nh NoSQL c ph hp..................................................................19
2.7.2
Key-Value Store.............................................................................................23
3.2
3.3
Document database........................................................................................26
3.4
Graph Database..............................................................................................27
3.5
3.6
3.6.1
Hadoop....................................................................................................31
3.6.2
Cassandra................................................................................................31
3.6.3
MongoDB...............................................................................................33
3.6.4
CouchDB................................................................................................34
4.2
4.3
L thuyt c bn RavenDB............................................................................38
4.3.1
RavenDB server......................................................................................38
4.3.2
4.3.3
4.3.4
4.3.5
4.4
4.4.1
4.4.2
4.4.3
4.4.4
4.4.5
Truy vn d liu......................................................................................48
4.4.6
4.5
4.6
M rng h thng theo chiu ngang( scaling out hay l scaling horizontally)
65
4.6.1
Replication..............................................................................................65
4.6.2
Sharding..................................................................................................66
4.6.3
Kt hp Replication v Sharding............................................................70
4.7
4.8
5.2
5.3
5.4
5.4.1
5.4.2
5.5
5.5.1
Use case..................................................................................................79
5.5.2
M t Use case........................................................................................83
5.5.3
Class diagram..........................................................................................89
5.5.4
Sequence diagram...................................................................................90
5.6
5.6.1
5.6.2
CHNG 6 KT LUN...............................................................................102
6.1
Kt qu t c..........................................................................................102
V mt l thuyt:........................................................................................102
PH LC..........................................................................................................103
7.1
7.2
Trang 1
DANH MC CC BNG, S
Bng 1.1: Hiu sut hot ng trn MySQL v Cassandra............................................4
Bng 2.1: Bng tng quan gia RDBMS v NoSQL..................................................7
Bng 3.1: Cc trin khai ca document database........................................................35
Bng 3.2: Cc trin khai ca graph database...............................................................38
Bng 5.1: M t Usecase ng nhp..........................................................................110
Bng 5.2: M t Usecase ng k.............................................................................111
Bng 5.3: M t Usecase xem Group public.............................................................111
Bng 5.4: M t Usecase tm kim............................................................................112
Bng 5.5: M t Usecase xem topic..........................................................................112
Bng 5.6: M t Usecase ng bnh lun...................................................................113
Bng 5.7: M t Usecase ng topic.........................................................................113
Bng 5.8: M t Usecase xo Topic..........................................................................114
Bng 5.9: M t Usecase to group...........................................................................115
Bng 5.10: Danh sch mn hnh................................................................................124
Bng 7.1: Lch s pht trin ca ASP.NET MVC......................................................130
Trang 2
Trang 3
DANH MC CC HNH
Hnh 2.1: V d c bn v Key/ value...........................................................................8
Hnh 2.2: S thit k h thng database Master -Slave............................................8
Hnh 2.3: So snh cch thit k gia NoSQL v RDBMS.............................................9
Hnh 2.4: V d v thit k d liu chun ho v document ca NoSQL....................14
Hnh 2.5: V d v thit k d liu chun ho v document ca NoSQL....................15
Hnh 2.6: M hnh d liu quan h cho ng dng blog n gin................................16
Hnh 3.1: Key-Vule store............................................................................................24
Hnh 3.2: Column Famies...........................................................................................26
Hnh 3.3: Super Column.............................................................................................26
Hnh 3.4: Biu din mt dng trong Column family database....................................28
Hnh 3.5: Biu din 2 tweet trong Column family database........................................28
Hnh 3.6: Biu din index th hai, lin kt users v tweets trong Column Family database. 29
Hnh 3.7: Graph database............................................................................................36
Hnh 3.8: V d v cc nt trong mt graph database..................................................36
Hnh 4.1: RavenDB.....................................................................................................43
Hnh 4.2: Kin trc client-server.................................................................................43
Hnh 4.3: RavenDB server..........................................................................................46
Hnh 4.4: Management studio.....................................................................................47
Hnh 4.5: V d v blog n gin................................................................................49
Hnh 4.5: Cu trc mt document trong document database.......................................49
Hnh 4.6: Qun l mi lin h.....................................................................................51
Hnh 4.7: V d h thng phn cp k tha.................................................................75
Hnh 4.8: Phn tn vi cc nt chuyn i d phng chuyn dng.............................98
Hnh 4.9: Phn tn vi cc nt chuyn i d phng ni b.......................................98
Hnh 4.10: Cc tp tin trong th mc gi RavenDB chnh..........................................99
Hnh 5.1: Mn hnh chnh ca chng trnh..............................................................125
Hnh 5.2: Mn hnh to mi bi vit.........................................................................125
Hnh 5.3: Mn hnh danh sch bi vit......................................................................126
Hnh 5.4: Mn hnh bi vit v tt c bnh lun.........................................................126
Hnh 5.5: Mn hnh ci t Group.............................................................................127
Trang 4
Trang 5
MySQL
~300ms
~350ms
Cassandra
0.12ms
15ms
Trang 6
Chnh s khc bit gia 2 loi c s d liu ny dn n cch thit k cng khc
nhau. a s cc lp trnh vin u quen vi m hnh quan h truyn thng, do cn
phi tm hiu k cch thit k d liu ca NoSQL t c hiu sut mong mun.
ng rng RDBMS cung cp mt m hnh tuyt vi m bo tnh ton vn
d liu. Tuy nhin, rt nhiu ngi la chn NoSQL ni rng chng khng qu cn
thit cho nhu cu ca h.
Nh vy, trong ti ny chng ti s tm hiu xem NoSQL gii quyt cc
vn trn nh th no v p dng kin thc tm hiu vo vic xy dng mt ng
dng s dng c s d liu dng NoSQL.
1.2 Mc tiu ti
Vi nhng vn nu trn, ny ny cn t c cc mc tiu nh sau:
-
1.3 Ni dung bo co
Ni dung ti c t chc thnh 6 chng:
Chng 1 Gii thiu ti: Trong chng ny s trnh by v vn cn tm hiu
trong lun vn ny, mc tiu cn t c ca lun vn.
Trang 7
Trang 8
2.2 NoSQL l g ?
NoSQL l mt xu hng c s d liu m khng dng m hnh d liu quan h
qun l d liu trong lnh vc phn mm. NoSQL c ngha l Non-Relational
(NoRel) - khng rng buc. Tuy nhin, thut ng t ph bin hn v ngy nay
ngi ta thng dch NoSQL thnh Not Only SQL - Khng ch SQL.
NoSQL c xem nh th h database k tip ca RDBMS, l mt th h c s
d liu non-relational (khng rng buc), distributed (phn tn), open source,
horizontal scalable (kh nng m rng theo chiu ngang) c th lu tr, x l t mt
lng rt nh cho ti hng petabytes d liu trong h thng c chu ti, li cao vi
nhng i hi v ti nguyn phn cng thp. hiu thm v cc khi nim ny trong
NoSQL, c th xem chi tit phn 2.5 Mt s thut ng lin quan.
Mt s c im nhn dng cho th h database mi ny bao gm:
-
Lc t do(Schema-free).
H tr m rng d dng.
API n gin.
Eventual consistency (nht qun cui) v transactions hn ch trn cc thnh
phn d liu n l.
Khng gii hn khng gian d liu
Trang 9
NoSQL storage c bit ph dng trong thi k Web 2.0 bng n, ni cc mng
dch v d liu cng ng cho php ngi dng to hng t ni dung trn web. Do ,
d liu ln rt nhanh vt qua gii hn phn cng v cn phi gii quyt bng bi
ton phn tn. Na u nm 2009, ngi ta manh nha thut ng NoSQL nh du
s trng thnh ca th h database mi: distributed (phn tn) + non-relational
(khng rng buc).
Khi lm vic vi NoSQL ta s gp mt s khc nim sau:
-
Document: thay th khi nim row trong SQL. y cng chnh l khi nim
lm nn s khc bit gia NoSQL v SQL, 1 document cha s ct (fields)
khng c nh trong khi 1 row th s ct(columns) l nh sn trc.
NoSQL
Columns
Fields
Row
Document
Table
Collection
Query: SQL
Foreign keys
Schema
Free schema
u im:
-
Hiu sut hot ng cao: NoSQL c hiu sut hot ng cao, lu tr lng
ln d liu p ng nhu cu lu tr ngy cng tng hin nay. Tuy nhin
Trang 10
Trang 11
2.3.2
Cc CSDL NoSQL hu ht s dng b nh qua a nh l v tr ghi u tin v th ngn nga c s thc thi khng n nh ca I/O. V v NoSQL lu
tr d liu thng thc y c tnh m rng phm vi theo chiu ngang
thng qua vic ngn chia, chng c kh nng tn dng c vic cung cp
mm do ca m my.
Nhc im:
Trang 12
Trang 13
Trang 14
Eventual consistency (nht qun cui): tnh nht qun ca d liu khng cn
phi m bo ngay tc khc sau mi php write. Mt h thng phn tn chp
nhn nhng nh hng theo phng thc lan truyn v sau mt khong thi
gian (khng phi ngay tc khc), thay i s i n mi im trong h thng,
tc l cui cng (eventually) d liu trn h thng s tr li trng thi nht
qun.
Trang 15
2.6.1
So snh NoSQL vi XML
C NoSQL v XML u c phng thc lu tr tng t nhau: lu dng vn bn.
XML dng lu tr d liu s dng cc th nh du. Tuy nhin s dng XML
nh mt c s d liu s c mt s thun li v kh khn nh sau:
-
Trang 16
Trang 17
Kt qu insert data
Trang 18
Kt qu truy vn data
Bng so snh sau y s cho chng ta thy s khc nhau gia NoSQL v c s d liu
quan h:
c im
Hiu sut
CSDL quan h
Km hn
SQL
Relational gia cc table
NoSQL
Cc tt
B qua SQL
B qua cc rng buc d liu
Trang 19
Kh nng m rng
Hn ch v lng.
Km do thit k m bo
s vo/ra lin tc ca d liu
H tr mt lng rt ln cc
node.
Tt vi m hnh x l l v
nhng ti u v c-ghi d
liu.
Khng cn phi shutdown c
h thng.
Vic thay i s node n
gin, khng nh hng n h
thng.
i hi thp hn v gi tr v
tnh ng nht ca phn cng
Xc nh NoSQL c ph hp
Trang 20
i vi sn phm sch c thm thng tin: tc gi, tiu , ngy xut bn.
i vi sn phm Album nhc c thm thng tin: nhc s, tn Album. Trong
mi Album c nhiu bi ht, mi bi ht c tn tn bi ht.
i vi sn phm qun Jean c thm thng tin: Model, chiu di,chiu rng.
Trang 21
Trang 22
ny. Tt c u do phn tch cho tng chng trnh sao cho hi u sut hot ng tt
nht v nghi p v vn ng.
Normalization
Customer
Id
Name
Phone
Address
Order
Id
CustomerId
OrderDate
OrderDetail
Id
OrderId
ProductId
Price
Quantity
Document
Product
Id
Name
Price
Prod
uct
Id
Name
Price
Customer
Id
Name
Phone
Address
Order
Id
CustomerId
CustomerNa
me
OrderDate
ListProducts
:
ProductId
ProductNam
e
Price
Quantity
Trang 23
Trang 24
Trang 25
database phi quan h. Cc khi nim sau y rt quan trng hiu c column
family database lm vic nh th no:
-
Trang 26
Tuple space...
Key/value save on disk: Memcachedb, Berkeley DB, Tokyo Cabinet, Redis...
Eventually Consistent Key Value Store: Amazon Dynamo, Voldemort,
Trang 27
tiu chun cng khng cn phi c tt c cc thuc tnh, kha tng t nhau. Xem v
d di y:
Document 1
{
Document 2
{
FirstName:"Bob",
FirstName:"Jonathan",
{Name:"Michael",Age:10},
{Name:"Jennifer", Age:8},
{Name:"Samantha", Age:5},
{Name:"Elena", Age:2}
]
}
C hai document trn c mt s thng tin tng t v mt s thng tin khc
nhau. Khng ging nh mt c s d liu quan h truyn thng, ni mi record(row)
c cng mt tp hp trng d liu (fields hay columns) v cc trng d liu ny
nu khng s dng th c th c lu tr rng(empty), cn trong document database
th khng c trng d liu rng trong document. H thng ny cho php thng tin
mi c thm vo m khng cn phi khai bo r rng.
Cc document c nh du trong document database thng qua mt kha duy
nht i din cho documnet . Thng thng, kha ny l mt chui n gin.
Trong mt s trng hp, chui ny c th l mt URI hoc ng dn (path). Chng
ta c th s dng kha ny ly document t c s d liu. Thng thng, c s d
liu vn lu li mt ch s (index) trong kha ca document document c th c
tm kim nhanh chng. Ngoi ra, c s d liu s cung cp mt API hoc ngn ng
truy vn cho php bn ly cc document da trn ni dung. V d, chng ta mun truy
vn ly nhng document m nhng document c tp trng d liu nht nh vi
nhng gi tr nht nh.
Cc document database ph bin l: BaseX, ArangoDB, Clusterpoint, Couchbase
Server, CouchDB, eXist, FleetDB, Jackrabbit, Lotus Notes, MarkLogic, MongoDB,
MUMPSDatabase, OrientDB, Apache Cassandra, Redis, Rocket U2, RavenDB.
Lu : hu ht XML database u l trin khai ca document database. Mt s XML
database trong danh sch cc document database ph bin l: BaseX, eXist,
MarkLogic, Sedna.
GVHD: Ths. Phm Thi Vng
Trang 28
Trang 29
trong gia nhMi quan h t bn thn n c th mang thng tin. Trong v d trn ta
ch n gin lu li li loi quan h v mc gn gi (bn b, ngi trong gia nh,
ngi yu).
Vi graph database, chng ta c th thc hin cc hot ng th. Mt thao tc
c bn nht l traversal (im giao nhau). V d nh nu ta mun bit nhng ngi
bn ca ta trong th trn cng i n ung th n gin. Nhng cn bn b gin tip
th sao, lm sao ta bit c h. S dng graph database chng ta c th nh ngha
truy vn sau:
new GraphDatabaseQuery
{
SourceNode = ayende,
MaxDepth = 3,
RelationsToFollow = new[]{"As Known As", "Family", "Friend", "Romantic", "Ex"},
Where = node => node.Location == ayende.Location,
SearchOrder = SearchOrder.BreadthFirst
}.Execute();
Trang 30
Trang 31
Trang 32
th lm vic vi hng ngn node khc nhau v hng petabyte d liu. Hadoop ly
c pht trin da trn tng t cc cng b ca Google v m hnh MapReduce
v h thng file phn tn Google File System (GFS). Map/Reduce l m hnh m ng
dng s c chia nh ra thnh nhiu phn on khc nhau, v cc phn ny s c
chy song song trn nhiu node khc nhau. Thm vo , Hadoop cung cp 1 h thng
file phn tn (HDFS) cho php lu tr d liu ln trn nhiu node. C Map/Reduce v
HDFS u c thit k sao cho framework s t ng qun l c cc li, cc h
hng v phn cng ca cc node. Hadoop gip cc nh pht trin ng dng phn tn
tp trung ti a vo phn logic ca ng dng, b qua c mt s phn chi tit k
thut phn tn bn di (phn ny do Hadoop t ng qun l).
3.6.2 Cassandra
Cassandra l mt h qun tr c s d liu ngun m, c vit bng Java vi mc
tiu chnh l tr thnh Best of BigTable. Cassandra c thit k vi kh nng x l
mt khi d liu cc ln c tri ra trn rt nhiu my ch trong khi cung cp mt
dch v c tnh sn sng cao v khng hng. N l mt gii php NoSQL bc u
c pht trin bi Facebook.
Cassandra cung cp mt cu trc lu tr theo dng key/value vi kh nng iu hng
tnh nht qun. Cc kha nh x n nhiu gi tr, ci m c gp thnh cc nhm
ct. Cc nhm ct c c nh khi c s d liu Cassandra c to ra, nhng cc
ct c th c thm vo nhm bt c lc no. Hn na, cc ct c thm vo ch
lm cc kha xc nh, bi vy cc kha khc nhau c th c s lng ct khc
nhau. Gi tr t cc nhm ct cho mi mt kha c lu tr cng nhau. iu
khin cho Cassandra l mt h qun tr d liu lai gia hng ct hoc l hng bn
ghi.
Cassandra c dng tt nht khi bn ghi nhiu hn bn c, v d y l h thng
logging nhiu nh cc mng x hi, h thng ngn hng, ti chnh chng khon. Vi
tc ghi nhanh hn tc c, n thch hp cho vic phn tch d liu thi gian
thc.
Cc c im ni bt:
-
Trang 33
3.6.3 MongoDB
Mongo l mt c s d liu NoSQL ngun m, hiu nng cao, c tnh m rng
cao.c vit bng C++ . Dng cch lu tr BSON (Json c bin dch) vi giy
php AGPL.Thay v lu tr d liu theo cc bng nh cc c s d liu c in.
MongoDB lu cu trc d liu thnh cc vn bn da JSON vi m hnh ng (gi
l BSON), khin cho vic tch hp d liu cho cc ng dng tr nn d dng v nhanh
hn. Vi mc tiu l kt hp cc im mnh ca m hnh key-values (nhanh m tnh
m rng cao) vi m hnh d liu quan h (giu chc nng).
Mc tiu chnh ca Mongo l gi li cc thuc tnh thn thin ca SQL. Do cc cu
truy vn kh ging vi SQL nn MongoDB kh thch hp cho cc lp trnh vin
quen vi ngn ng truy vn SQL. MongoDB c mt khi lng tnh nng ln v hiu
nng cao. Vi cc loi d liu phong ph, nhiu truy vn v vic gim thi gian pht
trin trong vic m hnh ha cc i tng.
Trang 34
cha nh ngha.
nh ch mc: Bt c mt trng no trong MongoDB u c nh ch
mc (ging nh ch mc bn RMDBs).
M phng (nhn bn): Mongo h tr m phng Master-slave. Mt master c
th iu khin vic c v ghi. Mt slave to bn sao s liu t master v ch
c s dng cho vic c v backup (khng c quyn ghi). Slave c kh
3.6.4 CouchDB
CouchDB c vit bng Erlang vi mc tiu l to ra mt c s d liu bn vng,
chu li cao, d dng trong vic s dng. Dng cch lu tr thng thng l JSON vi
giy php Apache 2.0. Vi CouchDB th mi mt c s d liu l mt tp cc vn bn
ring bit. Mi vn bn t bo qun chnh n v t n bao gm m hnh ca n (cc
trng, loi ca mi trng). Mi mt ng dng c th thc thi rt nhiu c s d
liu, v d nh chng ta dng mt c s d liu lu thng tin ngi dng in thoi
v ci cn li l lu trn server. Trn mi vn bn(bn ghi) cn bao gm cc thng tin
Trang 35
v phin bn, khin cho vic d dng ng b cc d liu vi nhau khi c s d liu b
mt kt ni mt thi gian gia cc thit b.
CouchDB d dng MVCC (multi-Version Concurency Control ) trnh vic
deadlock c s d liu trong sut qu trnh ghi. Tc l trong khi ghi d liu, chng ta
vn c th c d liu v CouchDB sinh ra mt bn copy v chng ta c trn bn
copy . Sau khi ghi xong n s tin hnh nhp d liu gia cc thit b v xa bn
ghi c i. Dng giao thc HTTP theo RESTful vi cch thit k c kh nng chu li
cao vi vic dng views i km vi map/reduce mang li mt tc cao. Thch hp
cho rt nhiu cc thit b khc nhau nh my ch, my bn hay in thoi thng minh.
CouchDB c s dng tt nht cho cc h thng thnh thong thay i d liu nh
cc h thng CMS, cc h thng cho php trin khai nhiu trang web.
Cc c im chnh ca CouchDB:
-
Trang 36
Trang 37
Trang 38
Trang 39
Trang 40
Trang 41
Trang 42
Trang 43
EmbeddableDocumentStore
DataDirectory
H tr Silverlight
var documentStore = new DocumentStore { Url = "http://myravendb.mydomain.com/" };
documentStore.Initialize();
Trang 44
4.4.4.1
i tng Session
i tng Session c to ra t Document Store v ta dng n thc hin
thao tc ti c s d liu. Lu : khi phng thc SaveChanges() c gi th mi
thc s thc hin thao tc xung c s d liu:
using (var session = documentStore.OpenSession())
{
// S dng session thao tc vi c s d liu
var entity = new BlogComment{ Title = "Title", Content = Content };
session.Store(entity);
session.SaveChanges();
}
Trang 45
4.4.4.2
Insert document
4.4.4.3
4.4.4.4
Delete document
Trang 46
Xa da vo kha:
-
Dng DatabaseCommands:
session.Advanced.DatabaseCommands.Delete("posts/1234", null);
4.4.4.5
Trang 47
Static index
Trong khi s dng dynamic index th s d dng cho chng ta, vic s dng
static index th hu dng v hiu qu hn vi d liu thi gian thc. V th, nn s
dng static index trong hu ht cc thao tc ca chng trnh hay t nht cng chc
chn rng nhng index tm thi c to t nhng dynamic index s c ch nh l
nhng index thng dng.
Bt c khi no chng ta yu cu RavenDB truy vn d liu v c static index
thch hp tn ti, RavenDB s trc tip truy vn s dng index mt cch t ng.
Chng ta cng c th ch nh tn ca index m chng ta mun dng:
var results = session.Query<BlogPost>("MyBlogPostsIndex").ToArray();
Trang 48
Trang 49
4.4.5.2
Trang 50
Ly kt qu mi( non-stale):
-
Trang 51
"Name": "Itamar",
"Id": "customers/2345"
},
Items: [
{
"Product": {
"Id": "products/1234",
"Name": "Milk",
"Cost": 2.3
},
"Quantity": 3
}
]
}
Trang 52
{
public string Name { get; set; }
public string Address { get; set; }
public short Age { get; set; }
public string HashedPassword { get; set; }
}
y khng phi l tham chiu trc tip gia Order v Customer. Order s cha
mt DenormalizedCustomer (cha nhng thng tin cn thit t Customer khi chng ta
x l i tng Order).
Chuyn g s xy ra nu nh Customers Address thay i? Chng ta phi thc
hin mt lot cc thao tc cp nht li tt c cc Order m Customer ny thc
hin. V iu g s xy ra nu Customer ny c rt nhiu Orders hoc l a ch ca h
thng xuyn thay i? Gi cho cc thng tin c ng b l yu cu cp thit trn
my ch. iu g s xy ra nu mt qu trnh lm vic khc cn mt tp cc thuc tnh
khc ca Customer ? DenormalizedCustomer cn phi c m rng, v nh th th
mt s lng ln Customer record c nhn bn.
4.4.6.2
Trang 53
.Load("orders/1234");
// cu lnh tip theo khng yu cu truy vn ti server!
var cust = session.Load<Customer>(order.CustomerId);
Live Projections
Trang 54
Phng php kt hp
Tng kt
Khng c quy lut c th no cho vic dng tng phng php trn. Nhng
tng chung l suy ngh theo nhiu hng khc nhau, xem xt ci hay ca tng
phng php. V d nh l, trong mt ng dng thng mi in t, tt hn l chng
ta denormalized product name v product price vo trong i tng order line, bi v
bn mun chc chn l Customer s nhn thy ng Product Name v Product Price
trong lch s mua hng. Nhng Customer Name v Customer Address nn c tham
chiu thay v Denormalized trong Order. Trong nhng trng hp m denormalized
Trang 55
4.6 M rng h thng theo chiu ngang( scaling out hay l scaling
horizontally)
RavenDB h tr sn 2 gi m rng l nhn bn(Replication) v phn tn d liu
trn nhiu my ch (sharding). C hai tnh nng ny trc giao, c ngha l chng c
th c s dng kt hp vi nhau. Sharding l mt tnh nng pha my khch, c
ngha l ton b quyt nh c thc hin pha my khch. Nhn bn c thc hin
gia 2 im u, cc my ch t thc hin vic nhn bn v cng cn nhn bit cc
trng hp khi mt trong cc nt (node) b h hng v khi mt nt bo co li xung
t khi nhn bn.
4.6.1 Replication
S dng Replication s c nhng tc dng trn h thng ca chng ta:
-
Trang 56
Cc ti liu ch c lu vi ID ca Raven/Replication/Destinations v n
thng bo cho RavenDB bit nhng my cn c nhn bn. nh dng nh
sau:
{
"Destinations": [
{
"Url": "http://raven_two:8080/"
},
{
"Url": "http://raven_three:8080/"
},
]
}
4.6.2 Sharding
RavenDB h tr sn sharding. Sharding l cch phn tn d liu trn nhiu my
ch khc nhau. V th mi my ch s lu tr mt phn d liu. iu ny l cn thit
trong trng hp chng ta cn x l mt lng ln d liu. Gi s trong mt ng
dng cn x l d liu t rt nhiu cng ty trn khp th gii th mt s la chn s l
lu tr d liu ca mt cng ty trn mt mnh ca h thng (gi l shard) v vic lu
tr ny ph thuc vo v tr khu vc (Region) ca cng ty. V d, nhng cng ty nm
chu (Asia) s c lu tr trn mt mnh, nhng cng ty nm Trung
Trang 57
Trang 58
thc ca interface ny cho php chng ta truy cp mnh theo tun t hay l
song song. Gi tr mc nh l SequentialShardAccessStrategy.
ShardResolutionStrategy: mt th hin m hin thc interface
IShardResolutionStrategy. N quyt nh nhng mnh no c lin h
hon thnh thao tc c s d liu. Hin thc mc nh l lp
DefaultShardResolutionStrategy cho php chng ta bt u phn tn d liu
nhanh chng m khng cn hin thc mt IShardResolutionStrategy mi.
MergeQueryResults: mt delegate cho php chng ta quyt nh lm th no
hp nht cc truy vn t nhiu mnh khc nhau. C mt hin thc mc
nh cho vic ny s kt hp cc kt qu li v p dng phn loi hnh vi ti
thiu.
ModifyDocumentId: cho php chng ta lu tr shard id cho mt document
trong chnh document . Mc nh l:
(convention, shardId, documentId) => shardId + convention.IdentityPartsSeparator +
documentId
Trang 59
Trang 60
DateTime.Today });
session.SaveChanges();
}
Trang 61
Trang 62
30150
30000
25000
18234
20000
Milisecond
14157
15000
9768
10000
5000
0
296213
1428
1116
2537
1667
1000
5000
10000
8340
5086
25000
50000
100000
Rows/Documents
MSSQL Time
RavenDB Time
Bi
u so snh kh nng Insert d liu ca RavenDB so vi MSSQL
100000
80737
80000
Milisecond
60000
40000
20000
0
40 39
50 45
146117
1095
984
10
100
1000
10363
8119
10000
100000
Row(s)/Document(s)
MSSQL Time
RavenDB Time
Trang 63
MongoDB
CouchDB
RavenDB
Format
BSON
JSON
JSON
Metadata
No
System
System + Custom
Versioning
No
Yes
Included Plug-in
Attachments
GridFS
Yes
Yes
Map/Reduce
JavaScript + others
JavaScript
LINQ
Bulk Load
Monogoimport utility
Yes
Yes
Adhoc Query
Yes
No
No
Sharding
Available in 1.6
Yes
Yes
Durability
"crash-only" design
Transactions
No
No
Yes
Concurrency
Update in-place
MVCC (Multi-version
Concurrency Control)
Optimistic concurrency
Consistency
Strong Master /
Eventual Slave
Strong Node /
Eventual Cluster
Eventual
Replication
Master-Slave
Peer-based
Included Plug-in
Interface
Protocol
HTTP/REST
HTTP/REST
.NET API
Included
Documents
Storage
Interface
Trang 64
Other
Triggers
No
Update Validation
Yes
Security
Security
Basic
Basic
Written In
C++
Erlang
C#
cu ci t, khng yu cu cu hnh.
Thm th vin vo trong ng dng v bt u lp trnh. Vic ny cng khng
tn thi gian nhiu. i vi nhng ai tng lp trnh trn .NET th vic lp
trnh vi RavenDB v cng n gin. RavenDB h tr c php LINQ
Trang 65
Trang 66
Trang 67
Trang 68
Trang 69
Clients MiddelEast
Client 1
Client 2
Client n
Clients American
Client 2
Client 1
Client n
Client 2
Client n
Web server
Model
View
Controller
Database server
Server Asia
Trang 70
Uses
Trang 71
Use case
Trang 72
Trang 73
Core
Implement
Domain
Uses
Service
Interface
Uses
Injects
Uses
Web
Controller
S 5.8: Use case ca Manager
View
UnityContain
Model
Trang 74
Trang 75
5.5.2
M t Use case
Usecase
M t
iu kin tin
quyt
Lung x l chnh
ng nhp
Cho php ngi dng ng nhp h thng.
c ti khon ng nhp vo h thng.
Sau khi ngi dng nhp tn ng nhp v mt khu vo form ng
nhp v bm Login, h thng m ho mt khu theo chun MD5
ri kim tra tn ng nhp v mt khu c tn ti trong c s d
liu, sau thng bo kt qu.
Kt qu sau khi
hon tt Usecase
ng k
Cho php ngi dng ng k mt ti khon ca h thng.
Kt qu sau khi
hon tt Usecase
Lung x l khc/
xung c s d liu.
Nu ng k thnh thng: thng bo vic ng k thnh cng.
Ngc li: thng bo li v yu cu nhp li thng tin.
ngoi l
nhp tn khc.
Trang 76
Usecase
M t
iu kin tin
quyt
Lung x l chnh
Kt qu sau khi
hon tt Usecase
Tm kim
Cho php ngi dng tm kim thng tin nhm.
Bit tn, thng tin m t ca t nht 1 nhm.
Sau khi ngi dng nhp t tm kim v bm nt Search, h thng
thc hin tm kim theo tn (tm kim gn ng), tm kim theo m
t (description) ca cc nhm v hin th kt qu tm kim ln.
Kt qu sau khi
hon tt Usecase
Trang 77
Usecase
M t
Xem topic
Hin th ni dung ca mt bi ng (topic) v cc bnh lun ca bi
iu kin tin
ng ny
Nu khng l group public th cn ng nhp h thng
quyt
Lung x l chnh
Kt qu sau khi
hon tt Usecase
Lung x l khc/ Nu ngi dng cha ng nhp hoc cha tham gia nhm ny v
group khng phi group public th h thng khng hin th ni dung
ngoi l
bi ng, ng thi yu cu ngi dng tham gia nhm.
Bng 5.5: M t Usecase xem topic
Trang 78
Usecase
M t
iu kin tin
quyt
Lung x l chnh
ng bnh lun
Cho php ngi dng ng bnh lun trong mt bi ng.
Ngi dng phi ang ng nhp v tham gia nhm.
Sau khi ngi dng nhp bnh lun v bm Post, h thng thc
hin lu bnh lun xung c s d liu ng thi cp nhp li giao
din web.
Kt qu sau khi
hon tt Usecase
Lung x l khc/ Khi ngi dng cha tham gia nhm, vic ng bnh lun b ngng li
v mt thng bo yu cu ngi dng tham gia vo nhm trc khi
ngoi l
ng bnh lun.
Bng 5.6: M t Usecase ng bnh lun
Usecase
M t
iu kin tin
ng Topic
To mi mt bi ng (topic) cho mt group.
Ngi dng cn ng nhp vo h thng v tham gia group.
quyt
Lung x l chnh Ngi dng nhp y thng tin ca topic vo form v nhn Post,
h thng thc hin lu cc thng tin sau xung c s d liu:
+ Thng tin ca Topic.
+ Thm thng tin ca Topic m ngi dng va nhp vo nhm.
Sau chuyn v trang ch.
Kt qu sau khi
hon tt Usecase
Lung x l khc/ Khi ngi dng cha tham gia nhm, vic ng topic b ngng li v
mt thng bo yu cu ngi dng tham gia vo nhm trc khi ng
ngoi l
topic.
Bng 5.7: M t Usecase ng topic
Usecase
M t
iu kin tin
Xo Topic
Cho php ngi c quyn manager v owner xo cc Topic.
ng nhp vo h thng vi quyn manager hoc owner.
Trang 79
quyt
Lung x l chnh
Kt qu sau khi
hon tt Usecase
xo ln lt di c s d liu nh sau:
+ Xo Topic c ID tng ng.
+ Xo Topic trong danh sch Topic ca nhm.
Sau thng bo xo thnh cng s c hin th.
Xo thnh cng cc Topic c chn. Trn mn hnh cc nhm c
chn b mt i.
Lung x l khc/
ngoi l
Bng 5.8: M t Usecase xo Topic
Usecase
M t
iu kin tin
To Group
To mt nhm (group) mi.
Ngi dng cn ng nhp vo h thng.
quyt
Lung x l chnh Ngi dng nhp y thng tin ca nhm vo form v nhn
Create, h thng thc hin lu cc thng tin sau xung c s d
liu.
+ Thng tin nhm m ngi dng va nhp.
+ Thm thng tin nhm vo danh sch nhm ca ngi to vi quyn
l Owner.
+ Thm thng tin quan h gia nhm v ngi to vi quyn l
Kt qu sau khi
hon tt Usecase
Owner.
Sau chuyn v trang chi tit ca nhm.
Trang chi tit ca nhm c hin th, cha c topic no trong ny.
Ngi va to chnh l ngi s hu nhm (Owner) v c quyn cao
nht.
Lung x l khc/
ngoi l
Bng 5.9: M t Usecase to group
Trang 80
5.5.3
Class diagram
Trang 81
5.5.4
Sequence diagram
Trang 82
Trang 83
Trang 84
Trang 85
Trang 86
Trang 87
Trang 88
5.5.4.4
Tm kim
Tn mn hnh
Chc nng
Mn hnh to mi bi vit
Mn hnh ci t group
Trang 89
ca group
Bng 5.10: Danh sch mn hnh
5.6.2 M t giao din ngi dng
5.6.2.1
5.6.2.2
Mn hnh to mi bi vit
Hnh 5.2: Mn hnh to mi bi vit
Trang 90
5.6.2.3
5.6.2.4
5.6.2.5
Mn hnh ci t Group
Trang 91
Trang 92
6 CHNG 6 KT LUN
6.1 Kt qu t c
-
V mt l thuyt:
Tng hp v phn tch kh chi tit v c s d liu NoSQL cng vi
nhng ng dng thc tin ca n. Qua ti liu ny, ngi c c c
ci nhn bao qut v NoSQL v c th ng dng n vo cc h thng cn
lu tr rt nhiu d liu.
Trnh by v phn tch nhng loi khc nhau ca NoSQL bao gm: keyvalue store, column families, document database v graph database.
Tm hiu v tnh nng, c im v nhng li ch ca mt s loi
document database ph bin l: MongoDB, CouchDB, RavenDB.
o su kin thc v RavenDB v cc trin khai mt ng dng s dng
RavenDB .
Trang 93
7 PH LC
7.1 Tnh nng y ca RavenDB
- Safe by default: RavenDB m bo an ton cho vic truy cp d liu. Khng
tiu tn ti nguyn mng v h thng. Xy dng ng dng vi RavenDB, tc
chy chng trnh nhanh v ng tin cy.
- Transactional: H tr y ACID transactions (Atomicity, Consistency,
Isolation, Durability) ngay c nhng node khc nhau trong h thng.
- Scalable: H tr Sharding, Replication, Multi-Tenancy. Scaling out (m rng
theo chiu ngang) tng i d dng.
Build-in Sharding: phn tn d liu trn nhiu server khc nhau qun
l vic load d liu tt hn.
Buil-in Replication: nhn bn d liu trn nhiu server tng tnh sn
sng v ly d liu nhanh chng.
Mix replication and sharding: C th s dng kt hp c 2 tnh nng
Replication v Sharding
Trang 94
Trang 95
Trang 96
Vi nt v m hnh MVC:
Models: Cc i tng Models l mt phn ca ng dng, cc i tng
ny thit lp logic ca phn d liu ca ng dng. Thng thng, cc
i tng model ly v lu trng thi ca model trong CSDL. V d
nh, mt i tng Product s ly d liu t CSDL, thao tc trn d liu
v s cp nht d liu tr li vo bng Products SQL Server.
Trong cc ng dng nh, model thng l ch l mt khi nim nhm
phn bit hn l c ci t thc th, v d, nu ng dng ch c d
liu t CSDL v gi chng n view, ng dng khng cn phi c tng
Trang 97
Trang 98
Nht
qun
cui
cng
ti
SQL
Vit
Blog
(http://www.sqlviet.com/blog/)
Ting Anh:
1. Ayende Rahien (Oren Eini), RavenDB Documentation - http://ravendb.net/docs
(trang tham kho chnh)
2. Ayende Rahien (Oren Eini), RavenDB Mythology Documentation Release 1.0,
November 29, 2010
3. Eelco Plugge, Peter Membrey and Tim Hawkins, The Definitive Guide to
MongoDB The NoSQL Database for Cloud and Desktop Computing.
4. Adam Freeman and Joseph C.Rattz, Jr. Pro LINQ Language Intergrated Query
In C# 2010. Apress, 2010.
5. NoSQL resources - http://nosql-database.org/
6. NoSQL in the Enterprise - http://www.infoq.com/articles/nosql-in-theenterprise
7. NoSQL wiki - http://en.wikipedia.org/wiki/NoSQL
8. Blog hay v RavenDB: Ayende's Blog (http://ayende.com/blog), Phillip
Haydon's
Blog
(http://www.philliphaydon.com/),
Gregor
Suttie's
Blog
(http://gregorsuttie.com/)
9. So snh RavenDB vi CouchDB v MongDB
(http://weblogs.asp.net/britchie/archive/2010/08/17/document-databasescompared-mongodb-couchdb-and-ravendb.aspx)