BoltDB is now bbolt

xuanbao · · 555 次点击    
这是一个分享于 的资源,其中的信息可能已经有所发展或是发生改变。
<p><strong>UPDATE 2</strong></p> <p>Based on a few more comments, here is an updated version:</p> <ul> <li>The author of BoltDB <a href="https://github.com/boltdb/bolt/commit/fa5367d20c994db73282594be0146ab221657943">declared BoltDB as complete</a> and will not maintain the project anymore.</li> <li>BoltDB may or may not receive further bug fixes from now on. There is no clear statement on this at this moment. I suppose this is up to the BoltDB community now.</li> <li>CoreOS have <a href="https://github.com/coreos/bbolt">forked BoltDB</a> with the intention to add new functionality without breaking the API.</li> <li>However, it appears that some of the planned changes have the potential of affecting the existing user base adversely.</li> <li>The author advises that users who want a stable database may want to stay with BoltDB, and users who look for new functionality may want to have a look at CoreOS&#39;s fork <code>bbolt</code>.</li> <li>The title unfortunately seems to indicate that BoltDB has been renamed to bbolt. What I meant to say is that BoltDB has been handed over to the bbolt project, which, as it seems, is also not true. I cannot change the title, so we have to live with that. I apologize if the title creates unnecessary confusion.</li> </ul> <p><strong>Please ignore everything below this line, but be aware that many of the comments below refer to the original version of this post and the first update.</strong></p> <hr/> <p><a href="https://github.com/boltdb/bolt/commit/fa5367d20c994db73282594be0146ab221657943">This</a> might be of interest to BoltDB users. </p> <p>TL;DR: <a href="https://github.com/boltdb/bolt">BoltDB</a> is not maintained anymore, but a fork called <a href="https://github.com/coreos/bbolt">bbolt</a> continues to be maintained by CoreOS.</p> <p>(Now if someone could just tell me what the first &#34;b&#34; in &#34;bbolt&#34; means...?!? Ben&#39;s Bolt? Be bold?) ;)</p> <p>UPDATE to clarify the situations based on the comments (special thanks to <a href="/u/benbjohnson">/u/benbjohnson</a> and <a href="/u/natefinch">/u/natefinch</a>):</p> <ul> <li>BoltDB has not been renamed to bbolt, as the title misleadingly might suggest. BoltDB still exists under its own name and URL. </li> <li>bbolt is a disruptive fork of BoltDB that does not intend to maintain backwards compatibility. </li> <li>Users who want stability may stay with BoltDB that continues to receive bug fixes; it only gets no new features (which can be a good thing).</li> </ul> <hr/>**评论:**<br/><br/>benbjohnson: <pre><p>To give some background, CoreOS requested some substantial changes to BoltDB that I wasn&#39;t willing to support long term. Bolt is also used by a lot of people and I didn&#39;t want to push features that would adversely affect the existing user base.</p> <p>BoltDB still exists and works the same as it always has. In my opinion, if you want a database that is stable and has broad usage then the original BoltDB is probably still the best option. If you need the additional features provided by <code>bbolt</code> then you should use the fork.</p></pre>siwu: <pre><p>BoltDB is the on-device datastore for our mobile app (Zenly). We love it. Thank you for the work!</p></pre>natefinch: <pre><p><sup><sup>^</sup></sup> Creator of BoltDB in case any didn&#39;t know :)</p></pre>xiang90: <pre><p>Thank you for all the hard work on BoltDB. It is amazing.</p> <p>I work on both etcd and <code>bbolt</code>. Here are some of my thoughts on the fork.</p> <p><code>bbolt</code> is the datastore for etcd. The primary goal of etcd project is stability and reliability. So we absolutely want <code>bbolt</code> to be as stable as possible. On the other hand, we also hope <code>bbolt</code> to be flexible enough to serve different kinds of workload better. That means more configuration knobs and subtle optimizations. The new features/enhancement we added are mostly gated by feature options. The options are not enabled by default until we feel confident about it.</p> <p>With all that, we fully understand that adding features might introduce instabilities and unexpected results. So we will be careful to identify potential problems, and be responsible to fix problems the new features introduce. We want to help build a better BoltDB for more kinds of workloads.</p></pre>recurrency: <pre><p>curious: what changes?</p></pre>ChristophBerger: <pre><p>Thanks for the feedback, this is very interesting to know. So the fork is not a smooth continuation but rather quite disruptive. </p></pre>natefinch: <pre><p>I think this title and description are extremely misleading. </p> <p>The title implies that BoltDB has changed names. It has not.</p> <p>The description implies that unfixed bugs are being left to rot in BoltDB. That is also not true.</p> <p>What is true is that BoltDB is not getting new features. BoltDB is a complete project. It&#39;s stable and well-tested. The lack of new features is a good thing, similar to the lack of new features in Go. It means your stuff won&#39;t break because someone wanted a new shiny.</p> <p>Yes, if there are new features that you want, go check out bbolt. If you want what BoltDB provides in a battle-tested DB, use BoltDB.</p></pre>ChristophBerger: <pre><blockquote> <p>The title implies that BoltDB has changed names.</p> </blockquote> <p>I did not want to imply that, apologies if this impression arises. The title should indicate a handover from <code>boltdb/bolt</code> to <code>coreos/bbolt</code>, which was how I interpreted the announcement. Unfortunately, as you all know, Reddit won&#39;t let me change the title.</p> <blockquote> <p>The description implies that unfixed bugs are being left to rot in BoltDB.</p> </blockquote> <p>This is indeed what I understand from the announcement. Plus, the <code>bbolt</code> readme calls <code>boltdb/bolt</code> &#34;moribund&#34;, which further added to my impression that even bug fixes will stop. Thanks for clarifying that this is not the case.</p> <p>EDIT: Updated the original post accordingly.<br/> EDIT2: Added more clarification.<br/> EDIT3: Typo.</p></pre>natefinch: <pre><p>I&#39;m not the maintainer, but I looked at the history, and some changes have gone in semi-recently, so I assume it&#39;s not entirely unmaintained. I would think that bugfixes would still be considered, but that&#39;s not up to me.</p></pre>ChristophBerger: <pre><p>I know, <a href="/u/benbjohnson" rel="nofollow">/u/benbjohnson</a> is... or rather, was the maintainer. Your previous comment sounds quite confident about the continuation of bug fixing, and so I assumed you are involved in the projects somehow. </p> <p>So all we can say right now is that current and new bugs in BoltDB may or may not get fixed, and nobody knows for sure - am I right?</p></pre>natefinch: <pre><p>I think that&#39;s true of any codebase, to be honest :) But yes, I don&#39;t know for sure.</p></pre>cameronjerrellnewton: <pre><p>I think your comment is also a little misleading. There will always be bugs that arise, no matter how &#34;complete&#34; something may be. There&#39;s gnu software that was &#34;completed&#34; over 20 years ago that receive bug fixes every week.</p> <p>bbolt&#39;s stated purpose:</p> <blockquote> <p>the goal is improved reliability and stability. bbolt includes bug fixes, performance enhancements, and features not found in Bolt while preserving backwards compatibility with the Bolt API.</p> </blockquote> <p>So no, it&#39;s just not those wanting a new shiny.</p></pre>natefinch: <pre><p>You&#39;re right, my apologies. I am not the maintainer, so I can&#39;t say for sure. From looking at commit history, some changes are making it in. I didn&#39;t mean to imply that there are no bugs left.</p></pre>hobbified: <pre><p>The extra B is for BYOBB.</p></pre>mwholt: <pre><p>BoltDB for life</p></pre>jmank88: <pre><p>I believe the update is still incorrect regarding backwards compatibility.</p> <p>From <a href="https://github.com/coreos/bbolt" rel="nofollow">https://github.com/coreos/bbolt</a> readme:</p> <blockquote> <p>and features not found in Bolt <strong>while preserving backwards compatibility with the Bolt API</strong>.</p> </blockquote></pre>ChristophBerger: <pre><p>This is what the <code>bbolt</code> readme says, but as <a href="/u/benbjohnson" rel="nofollow">/u/benbjohnson</a> said in another comment,</p> <blockquote> <p>CoreOS requested some <strong>substantial changes</strong> to BoltDB that I wasn&#39;t willing to support long term. Bolt is also used by a lot of people and I didn&#39;t want to push features that would <strong>adversely affect the existing user base.</strong></p> </blockquote> <p>which is a very clear sign to me that the <code>bbolt</code> project may introduce changes that have the potential to break existing BoltDB client software. This does not necessarily mean API changes. The API may stay the same but subtle changes to the behavior beneath may still break functionality that is not covered by the API definitions.</p></pre>natefinch: <pre><p>Yep. API stability does not necessarily mean behavior won&#39;t change. By definition, if they&#39;re fixing bugs, the behavior will change (though hopefully for the better).</p></pre>daenney: <pre><p>Dgraph&#39;s <a href="https://github.com/dgraph-io/badger" rel="nofollow">badger</a> might also be interesting for people.</p></pre>benbjohnson: <pre><p>Badger does not support transactions so it&#39;s in a different boat than BoltDB. If you don&#39;t need transactions then Bolt is probably overkill.</p></pre>tscs37: <pre><p>Transactions aren&#39;t <em>hard</em> if you only need a simple lock on trees.</p> <p>The only thing you need to make transactions simple are atomic writes and reads.</p></pre>rbetts: <pre><p>(And, pedantically, durability and the ability to rollback at least consistency violations.)</p></pre>tscs37: <pre><p>Well you can kinda cheat yourself into durability if you can do atomic writes as long as you are guaranteed that they operate serializable, ie if you have the writes A B and C and you crash, you will have them in that order and not writes A and C but not B.</p> <p>Once you have atomic, serialized writes, you can make durability and rollback and transactions on top of that.</p> <p>There isn&#39;t terribly that much you need to get ACID.</p></pre>rbetts: <pre><p>I like your explanation - a journal, a tree, and a lock gets you a long way :-)</p></pre>tscs37: <pre><p>Tbh, the way you say it, it sounds like the premise of some really weird fantasy book in Alice in Wonderland Style.</p></pre>

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

555 次点击  
加入收藏 微博
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传