%PDF-1.3
%âãÏÓ
2 0 obj
<<
/Length 9988
>>
stream
BT
/TT2 1 Tf
14 0 0 14 150.625 641.25 Tm
0 g
/GS1 gs
0.0001 Tc
0 Tw
[(LIBTP:)-487.3(Portable,)-254(Modular)-246.3(Transactions)-256.2(for)-258.8(UNIX)]TJ
/TT4 1 Tf
11 0 0 11 457.625 646.75 Tm
0 Tc
(1)Tj
/TT6 1 Tf
12 0 0 12 272.75 617.25 Tm
[(Margo)-246.6(Seltzer)]TJ
-0.1146 -1 TD
[(Michael)-265.3(Olson)]TJ
-3.8646 -1 TD
[(University)-261.6(of)-253.4(California,)-259.6(Berkeley)]TJ
/TT2 1 Tf
4.9687 -3 TD
(Abstract)Tj
/TT4 1 Tf
10 0 0 10 94.375 541.875 Tm
[(Transactions)-428.1(provide)-407.8(a)-406.2(useful)-406.2(programming)-406.6(paradigm)-411.1(for)-409(maintaining)-398.1(logical)-403.8(consistency,)-409.5(arbitrating)-410(con-)]TJ
-2.5 -1.125 TD
[(current)-331(access,)-333.8(and)-318.7(managing)-306.6(recovery.)-577.4(In)-304.5(traditional)-302.6(UNIX)-313(systems,)-295.5(the)-303.3(only)-297.2(easy)-310.6(way)-309(of)-304.5(using)-295.5(transactions)-311.1(is)-295.5(to)]TJ
T*
[(purchase)-458.8(a)-443.7(database)-445.1(system.)-672.2(Such)-425(systems)-420.5(are)-441.8(often)-432.8(slow,)-423.3(costly,)-423.8(and)-431.2(may)-428.3(not)-422.2(provide)-432.8(the)-428.3(exact)-440.6(functionality)]TJ
T*
[(desired.)-524.8(This)-259.7(paper)-266.8(presents)-260.6(the)-253.3(design,)-251.7(implementation,)-248.6(and)-256.2(performance)-285.3(of)-254.5(LIBTP,)-247.2(a)-256.1(simple,)-246(non-proprietary)-274.6(tran-)]TJ
T*
[(saction)-342.5(library)-347(using)-320.5(the)-328.3(4.4BSD)-317.2(database)-345.1(access)-346.3(routines)-328.3(\()]TJ
/TT2 1 Tf
24.3125 0 TD
(db)Tj
/TT4 1 Tf
1.1 0 TD
[(\(3\)\).)-588.5(On)-327.8(a)-331.2(conventional)-335(transaction)-337.8(processing)-335.6(style)]TJ
-25.4125 -1.125 TD
[(benchmark,)-357.6(its)-330.2(performance)-372.8(is)-333(approximately)-349.1(85%)-342(that)-338(of)-342(the)-328.3(database)-345.1(access)-346.3(routines)-328.3(without)-319.3(transaction)-337.8(protec-)]TJ
T*
[(tion,)-319.3(200%)-329.5(that)-325.5(of)-329.5(using)]TJ
/TT2 1 Tf
10.2625 0 TD
(fsync)Tj
/TT4 1 Tf
2.225 0 TD
[(\(2\))-334(to)-309.7(commit)-307.3(modi)]TJ
/TT7 1 Tf
8.0057 0 TD
(Þ)Tj
/TT4 1 Tf
0.5562 0 TD
[(cations)-305.7(to)-309.7(disk,)-308(and)-318.6(125%)-317(that)-313(of)-317(a)-318.7(commercial)-330.3(relational)-324.1(data-)]TJ
-21.0493 -1.125 TD
[(base)-260.6(system.)]TJ
/TT2 1 Tf
0 -2.325 TD
[(1.)-500(Introduction)]TJ
/TT4 1 Tf
2.5 -1.5375 TD
[(Transactions)-278.1(are)-279.3(used)-267(in)-259.7(database)-282.6(systems)-258(to)-259.7(enable)-278.1(concurrent)-274.6(users)-257.3(to)-247.2(apply)-253.3(multi-operation)-254.3(updates)-257.8(without)]TJ
-2.5 -1.125 TD
[(violating)-294.8(the)-303.3(integrity)-299.3(of)-304.5(the)-303.3(database.)-320.1(They)-307.8(provide)-295.3(the)-290.8(properties)-301.5(of)-292(atomicity,)-285.6(consistency,)-297(isolation,)-280.7(and)-293.7(durabil-)]TJ
T*
[(ity.)-519.3(By)-270.5(atomicity,)-273.1(we)-284(mean)-284.5(that)-275.5(the)-278.3(set)-276.7(of)-279.5(updates)-270.3(comprising)-263(a)-268.7(transaction)-275.3(must)-255.2(be)-268.7(applied)-269.1(as)-267(a)-268.7(single)-261.3(unit;)-504(that)-263(is,)]TJ
T*
[(they)-265.8(must)-255.2(either)-273.6(all)-263(be)-268.7(applied)-269.1(to)-259.7(the)-265.8(database)-282.6(or)-267(all)-263(be)-268.6(absent.)-520.3(Consistency)-261.3(requires)-279.3(that)-263(a)-268.7(transaction)-275.3(take)-272(the)-265.8(data-)]TJ
T*
[(base)-348.1(from)-343.7(one)-343.7(logically)-338.5(consistent)-325.5(state)-330(to)-322.2(another.)-589(The)-332.8(property)-337.3(of)-329.5(isolation)-318.2(requires)-341.8(that)-325.5(concurrent)-349.6(transactions)]TJ
T*
[(yield)-438(results)-439.2(which)-443.7(are)-441.8(indistinguishable)-417(from)-431.2(the)-428.3(results)-426.7(which)-431.2(would)-425(be)-431.2(obtained)-431.6(by)-425(running)-426.7(the)-428.3(transactions)]TJ
T*
[(sequentially.)-505.5(Finally,)-241.5(durability)-249.3(requires)-266.8(that)-250.5(once)-262.3(transactions)-261.1(have)-262.3(been)-262.3(committed,)-248.1(their)-255(results)-251.7(must)-242.7(be)-256.1(preserved)]TJ
T*
[(across)-263.5(system)-247.2(failures)-264([TPCB90].)]TJ
2.5 -1.5375 TD
[(Although)-284.7(these)-295.3(properties)-301.5(are)-304.3(most)-280.2(frequently)-303.1(discussed)-292(in)-284.7(the)-290.8(context)-294.1(of)-292(databases,)-306(they)-278.3(are)-291.8(useful)-281.2(program-)]TJ
-2.5 -1.125 TD
[(ming)-381.8(paradigms)-384.5(for)-384(more)-382.8(general)-395.1(purpose)-384(applications.)-630.5(There)-393.5(are)-391.8(several)-393.5(different)-395.1(situations)-366.5(where)-394.6(transactions)]TJ
T*
[(can)-262.3(be)-256.2(used)-254.5(to)-247.2(replace)-276.3(current)-268.5(ad-hoc)-266.8(mechanisms.)]TJ
2.5 -1.5375 TD
[(One)-271.5(situation)-255.7(is)-258(when)-271.5(multiple)]TJ
/TT7 1 Tf
12.5875 0 TD
(Þ)Tj
/TT4 1 Tf
0.5562 0 TD
[(les)-258(or)-267(parts)-268.7(of)]TJ
/TT7 1 Tf
5.7813 0 TD
(Þ)Tj
/TT4 1 Tf
0.5562 0 TD
[(les)-245.5(need)-262.3(to)-247.2(be)-256.2(updated)-259.5(in)-247.2(an)-256.2(atomic)-253.8(fashion.)-506.2(For)-248.3(example,)-262.8(the)]TJ
-21.9811 -1.125 TD
[(traditional)-290.1(UNIX)]TJ
/TT7 1 Tf
7.2 0 TD
(Þ)Tj
/TT4 1 Tf
0.5562 0 TD
[(le)-284.7(system)-284.7(uses)-277.8(ordering)-287.3(constraints)-280(to)-272.2(achieve)-296.8(recoverability)-297.3(in)-272.2(the)-278.3(face)-298(of)-279.5(crashes.)-544.6(When)-287.3(a)-281.2(new)]TJ
/TT7 1 Tf
-7.7562 -1.125 TD
(Þ)Tj
/TT4 1 Tf
0.5562 0 TD
[(le)-259.7(is)-258(created,)-288.8(its)-255.2(inode)-265.8(is)-258(written)-255(to)-247.2(disk)-245.5(before)-271.3(the)-253.3(new)]TJ
/TT7 1 Tf
22.1938 0 TD
(Þ)Tj
/TT4 1 Tf
0.5562 0 TD
[(le)-247.2(is)-245.5(added)-262.3(to)-247.2(the)-253.3(directory)-265.6(structure.)-514(This)-247.2(guarantees)-274.6(that,)]TJ
-23.3062 -1.125 TD
[(if)-289.2(the)-290.8(system)-284.7(crashes)-307.1(between)-306(the)-290.8(two)-287.5(I/O’s,)-294.8(the)-290.8(directory)-303.1(does)]TJ
25.8125 0 TD
[(not)-272.2(contain)-281.6(a)]TJ
5.5 0 TD
0.0039 Tc
[(reference)-270(to)-268.3(an)]TJ
6.3125 0 TD
0 Tc
[(invalid)-272.7(inode.)-528.3(In)-279.5(actu-)]TJ
-37.625 -1.125 TD
[(ality,)-297.7(the)-303.3(desired)-312.3(effect)-312.1(is)-283(that)-288(these)-295.3(two)-287.5(updates)-295.3(have)-299.8(the)-290.8(transactional)-303.6(property)-299.8(of)-292(atomicity)-285.6(\(either)-303.1(both)-284.7(writes)-293.7(are)]TJ
T*
[(visible)-271(or)-279.5(neither)-286.1(is\).)-525(Rather)-272(than)-265.8(building)-254(special)-273.6(purpose)-271.5(recovery)-289.9(mechanisms)-269.1(into)-256.8(the)]TJ
/TT7 1 Tf
36.1875 0 TD
(Þ)Tj
/TT4 1 Tf
0.5562 0 TD
[(le)-259.7(system)-259.7(or)-267(related)-279.8(tools)]TJ
-36.7437 -1.125 TD
(\()Tj
/TT6 1 Tf
0.3375 0 TD
(e.g.)Tj
/TT2 1 Tf
1.8 0 TD
(fsck)Tj
/TT4 1 Tf
1.725 0 TD
[(\(8\)\),)-363.5(one)-356.2(could)-353.3(use)-354.5(general)-370.1(purpose)-346.5(transaction)-350.3(recovery)-364.9(protocols)-340.8(after)-356(system)-334.7(failure.)-603.1(Any)-340.3(application)]TJ
-3.8625 -1.125 TD
[(that)-375.5(needs)-385.6(to)-372.2(keep)-387.3(multiple,)-367(related)]TJ
/TT7 1 Tf
15.025 0 TD
(Þ)Tj
/TT4 1 Tf
0.5562 0 TD
[(les)-370.5(\(or)-384(directories\))-396.8(consistent)-375.5(should)-358(do)-362.5(so)-360.8(using)-358(transactions.)-623.6(Source)-373.1(code)]TJ
-15.5812 -1.125 TD
[(control)-292.5(systems,)-283(such)-292(as)-292(RCS)-272.4(and)-293.6(SCCS,)-266.2(should)-283(use)-292(transaction)-300.3(semantics)-294.1(to)-284.7(allow)-290.8(the)-290.8(‘‘checking)-312.1(in’’)-293.7(of)-279.5(groups)-277.8(of)]TJ
T*
(related)Tj
/TT7 1 Tf
3.075 0 TD
(Þ)Tj
/TT4 1 Tf
0.5562 0 TD
0.0005 Tc
[(les.)-582.5(In)-341.5(this)-329.7(way,)-346(if)-326.2(the)-327.8(‘‘check-in’’)-323.5(fails,)-327.8(the)-327.8(transaction)-337.3(may)-327.8(be)-330.7(aborted,)-338.5(backing)-334(out)-321.7(the)-327.8(partial)-332.8(‘‘check-)]TJ
-3.6312 -1.125 TD
0 Tc
[(in’’)-256.2(leaving)-256.6(the)-253.3(source)-265.1(repository)-257.8(in)-247.2(a)-256.2(consistent)-250.5(state.)]TJ
2.5 -1.5375 TD
[(A)-365.3(second)-373.1(situation)-355.7(where)-382.1(transactions)-373.6(can)-374.8(be)-368.7(used)-367(to)-359.7(replace)-388.8(current)-381(ad-hoc)-379.3(mechanisms)-369.1(is)-345.5(in)-347.2(applications)]TJ
-2.5 -1.125 TD
[(where)-319.6(concurrent)-324.6(updates)-307.8(to)-297.2(a)-306.2(shared)]TJ
/TT7 1 Tf
15.475 0 TD
(Þ)Tj
/TT4 1 Tf
0.5562 0 TD
[(le)-297.2(are)-316.8(desired,)-312.3(but)-297.2(there)-314(is)-295.5(logical)-303.8(consistency)-297(of)-292(the)-290.8(data)-297(which)-293.7(needs)-298.1(to)-284.7(be)]TJ
-16.0312 -1.125 TD
[(preserved.)-525.8(For)-248.3(example,)-262.8(when)-259(the)-253.3(password)]TJ
/TT7 1 Tf
18.1375 0 TD
(Þ)Tj
/TT4 1 Tf
0.5562 0 TD
[(le)-247.2(is)-245.5(updated,)]TJ
/TT7 1 Tf
5.5563 0 TD
(Þ)Tj
/TT4 1 Tf
0.5562 0 TD
[(le)-247.2(locking)-250.5(is)-245.5(used)-254.5(to)-247.2(disallow)-248.8(concurrent)-274.6(access.)-521.3(Tran-)]TJ
-24.8062 -1.125 TD
[(saction)-280(semantics)-281.6(on)-275(the)-278.3(password)]TJ
/TT7 1 Tf
14.175 0 TD
(Þ)Tj
/TT4 1 Tf
0.5562 0 TD
[(les)-270.5(would)-275(allow)-278.3(concurrent)-299.6(updates,)-282.8(while)-278.3(preserving)-279.3(the)-265.8(logical)-266.3(consistency)-272(of)]TJ
-14.7311 -1.125 TD
[(the)-353.3(password)-360.2(database.)-620.1(Similarly,)-340.3(UNIX)-350.5(utilities)-325(which)-343.6(rewrite)]TJ
/TT7 1 Tf
26.4875 0 TD
(Þ)Tj
/TT4 1 Tf
0.5562 0 TD
[(les)-333(face)-360.4(a)-343.7(potential)-338.5(race)-360.5(condition)-335.2(between)-356(their)]TJ
-27.0436 -1.125 TD
[(rewriting)-284.5(a)]TJ
/TT7 1 Tf
4.675 0 TD
(Þ)Tj
/TT4 1 Tf
0.5562 0 TD
[(le)-272.2(and)-281.2(another)-276.5(process)-276(reading)-276.5(the)]TJ
/TT7 1 Tf
14.0313 0 TD
(Þ)Tj
/TT4 1 Tf
0.5562 0 TD
[(le.)-509.7(For)-260.8(example,)-275.3(the)-265.8(compiler)-270.8(\(more)-274.8(precisely,)-278.1(the)-265.8(assembler\))-281(may)]TJ
/T1 1 Tf
8 0 0 8 69.375 99.375 Tm
(
|