NoSQL架构实践(一)——以NoSQL为辅
原文地址:http://www.infoq.com/cn/news/2011/02/nosql-architecture-practice/
(一)NoSQL作为镜像
<code class="hljs objectivec has-numbering" style="display: block; padding: 0px; color: inherit; box-sizing: border-box; font-family: 'Source Code Pro',monospace;font-size:undefined; white-space: pre; border-radius: 0px; word-wrap: normal; background: transparent;"><span class="hljs-comment" style="color: rgb(136,0); box-sizing: border-box;">//写入数据的示例伪代码 </span> <span class="hljs-comment" style="color: rgb(136,0); box-sizing: border-box;">//data为我们要存储的数据对象 </span> <span class="hljs-keyword" style="color: rgb(0,136); box-sizing: border-box;">bool</span> status=<span class="hljs-literal" style="color: rgb(0,102,102); box-sizing: border-box;">false</span>; DB<span class="hljs-variable" style="color: rgb(102,102); box-sizing: border-box;">.startTransaction</span>();<span class="hljs-comment" style="color: rgb(136,0); box-sizing: border-box;">//开始事务 </span> <span class="hljs-keyword" style="color: rgb(0,136); box-sizing: border-box;">id</span>=DB<span class="hljs-variable" style="color: rgb(102,102); box-sizing: border-box;">.Insert</span>(data);<span class="hljs-comment" style="color: rgb(136,0); box-sizing: border-box;">//写入MySQL数据库 </span> <span class="hljs-keyword" style="color: rgb(0,136); box-sizing: border-box;">if</span>(<span class="hljs-keyword" style="color: rgb(0,136); box-sizing: border-box;">id</span>><span class="hljs-number" style="color: rgb(0,102); box-sizing: border-box;">0</span>){ status=NoSQL<span class="hljs-variable" style="color: rgb(102,102); box-sizing: border-box;">.Add</span>(<span class="hljs-keyword" style="color: rgb(0,136); box-sizing: border-box;">id</span>,data);<span class="hljs-comment" style="color: rgb(136,0); box-sizing: border-box;">//以写入MySQL产生的自增id为主键写入NoSQL数据库 </span> } <span class="hljs-keyword" style="color: rgb(0,102); box-sizing: border-box;">0</span> && status==<span class="hljs-literal" style="color: rgb(0,102); box-sizing: border-box;">true</span>){ DB<span class="hljs-variable" style="color: rgb(102,102); box-sizing: border-box;">.commit</span>();<span class="hljs-comment" style="color: rgb(136,0); box-sizing: border-box;">//提交事务 </span> }<span class="hljs-keyword" style="color: rgb(0,136); box-sizing: border-box;">else</span>{ DB<span class="hljs-variable" style="color: rgb(102,102); box-sizing: border-box;">.rollback</span>();<span class="hljs-comment" style="color: rgb(136,0); box-sizing: border-box;">//不成功,进行回滚 </span> }</code><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right-width: 1px; border-right-style: solid; border-right-color: rgb(221,238);"><li style="box-sizing: border-box; padding: 0px 5px;">1</li><li style="box-sizing: border-box; padding: 0px 5px;">2</li><li style="box-sizing: border-box; padding: 0px 5px;">3</li><li style="box-sizing: border-box; padding: 0px 5px;">4</li><li style="box-sizing: border-box; padding: 0px 5px;">5</li><li style="box-sizing: border-box; padding: 0px 5px;">6</li><li style="box-sizing: border-box; padding: 0px 5px;">7</li><li style="box-sizing: border-box; padding: 0px 5px;">8</li><li style="box-sizing: border-box; padding: 0px 5px;">9</li><li style="box-sizing: border-box; padding: 0px 5px;">10</li><li style="box-sizing: border-box; padding: 0px 5px;">11</li><li style="box-sizing: border-box; padding: 0px 5px;">12</li><li style="box-sizing: border-box; padding: 0px 5px;">13</li></ul>
(二)MySQL和NoSQL组合
<code class="hljs lasso has-numbering" style="display: block; padding: 0px; color: inherit; box-sizing: border-box; font-family: 'Source Code Pro',0); box-sizing: border-box;">//写入数据的示例伪代码 </span> <span class="hljs-comment" style="color: rgb(136,0); box-sizing: border-box;">//data为我们要存储的数据对象 </span> <span class="hljs-built_in" style="color: rgb(102,102); box-sizing: border-box;">data</span><span class="hljs-built_in" style="color: rgb(102,102); box-sizing: border-box;">.</span>title<span class="hljs-subst" style="color: rgb(0,0); box-sizing: border-box;">=</span>”title”; <span class="hljs-built_in" style="color: rgb(102,102); box-sizing: border-box;">.</span>name<span class="hljs-subst" style="color: rgb(0,0); box-sizing: border-box;">=</span>”name”; <span class="hljs-built_in" style="color: rgb(102,102); box-sizing: border-box;">.</span>time<span class="hljs-subst" style="color: rgb(0,0); box-sizing: border-box;">=</span>”<span class="hljs-number" style="color: rgb(0,102); box-sizing: border-box;">2009</span><span class="hljs-subst" style="color: rgb(0,0); box-sizing: border-box;">-</span><span class="hljs-number" style="color: rgb(0,102); box-sizing: border-box;">12</span><span class="hljs-subst" style="color: rgb(0,102); box-sizing: border-box;">01</span> <span class="hljs-number" style="color: rgb(0,102); box-sizing: border-box;">10</span>:<span class="hljs-number" style="color: rgb(0,102); box-sizing: border-box;">01</span>”; <span class="hljs-built_in" style="color: rgb(102,102); box-sizing: border-box;">.</span>from<span class="hljs-subst" style="color: rgb(0,102); box-sizing: border-box;">1</span>”; bool status<span class="hljs-subst" style="color: rgb(0,0); box-sizing: border-box;">=</span><span class="hljs-literal" style="color: rgb(0,102); box-sizing: border-box;">false</span>; DB<span class="hljs-built_in" style="color: rgb(102,102); box-sizing: border-box;">.</span>startTransaction();<span class="hljs-comment" style="color: rgb(136,0); box-sizing: border-box;">//开始事务 </span> id<span class="hljs-subst" style="color: rgb(0,0); box-sizing: border-box;">=</span>DB<span class="hljs-built_in" style="color: rgb(102,102); box-sizing: border-box;">.</span>Insert(“INSERT <span class="hljs-keyword" style="color: rgb(0,136); box-sizing: border-box;">INTO</span> table (from) VALUES(<span class="hljs-built_in" style="color: rgb(102,102); box-sizing: border-box;">.</span>from)”);<span class="hljs-comment" style="color: rgb(136,0); box-sizing: border-box;">//写入MySQL数据库,只写from需要where查询的字段 </span> <span class="hljs-keyword" style="color: rgb(0,136); box-sizing: border-box;">if</span>(id<span class="hljs-subst" style="color: rgb(0,0); box-sizing: border-box;">></span><span class="hljs-number" style="color: rgb(0,102); box-sizing: border-box;">0</span>){ status<span class="hljs-subst" style="color: rgb(0,0); box-sizing: border-box;">=</span>NoSQL<span class="hljs-built_in" style="color: rgb(102,102); box-sizing: border-box;">.</span>Add(id,<span class="hljs-built_in" style="color: rgb(102,102); box-sizing: border-box;">data</span>);<span class="hljs-comment" style="color: rgb(136,102); box-sizing: border-box;">0</span> <span class="hljs-subst" style="color: rgb(0,0); box-sizing: border-box;">&&</span> status<span class="hljs-subst" style="color: rgb(0,0); box-sizing: border-box;">==</span><span class="hljs-literal" style="color: rgb(0,102); box-sizing: border-box;">true</span>){ DB<span class="hljs-built_in" style="color: rgb(102,102); box-sizing: border-box;">.</span>commit();<span class="hljs-comment" style="color: rgb(136,136); box-sizing: border-box;">else</span>{ DB<span class="hljs-built_in" style="color: rgb(102,102); box-sizing: border-box;">.</span>rollback();<span class="hljs-comment" style="color: rgb(136,238);"><li style="box-sizing: border-box; padding: 0px 5px;">1</li><li style="box-sizing: border-box; padding: 0px 5px;">2</li><li style="box-sizing: border-box; padding: 0px 5px;">3</li><li style="box-sizing: border-box; padding: 0px 5px;">4</li><li style="box-sizing: border-box; padding: 0px 5px;">5</li><li style="box-sizing: border-box; padding: 0px 5px;">6</li><li style="box-sizing: border-box; padding: 0px 5px;">7</li><li style="box-sizing: border-box; padding: 0px 5px;">8</li><li style="box-sizing: border-box; padding: 0px 5px;">9</li><li style="box-sizing: border-box; padding: 0px 5px;">10</li><li style="box-sizing: border-box; padding: 0px 5px;">11</li><li style="box-sizing: border-box; padding: 0px 5px;">12</li><li style="box-sizing: border-box; padding: 0px 5px;">13</li><li style="box-sizing: border-box; padding: 0px 5px;">14</li><li style="box-sizing: border-box; padding: 0px 5px;">15</li><li style="box-sizing: border-box; padding: 0px 5px;">16</li><li style="box-sizing: border-box; padding: 0px 5px;">17</li><li style="box-sizing: border-box; padding: 0px 5px;">18</li></ul>
总结
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |