在BigTable/GFS和Cassandra术语中,SSTable的定义是什么?什么是SSTable?
回答
排序字符串表(从谷歌借用)是键/值字符串对一文件中,通过键
排序感谢又一优秀SO Cassandra回答!顺便说一句,你见过这个问题:http://stackoverflow.com/questions/2573106/what-are-the-alternative-ways-to-model-mm-relations-in-cassandra – knorv 2010-04-05 19:15:15
它通常是不可变的? – 2015-07-01 21:40:41
是的,sstables是不可变的设计 - 这是一个很棒的功能 – Schildmeijer 2015-07-03 17:19:52
“一个的SSTable提供了从键值,其中键和值是一个持久的,有序的不可变的映射任意字节字符串,提供操作来查找与指定键相关的值,并遍历指定键范围内的所有键/值对;在内部,每个SSTable包含一系列块(通常每个块的大小为64KB ,但是这是可配置的),一个块索引(存储在SSTable的末尾)用于定位块;当SSTable打开时,索引被加载到内存中。通过在内存中执行二进制搜索来找到适当的块y索引,然后从磁盘读取适当的块。任选地,一个的SSTable可以完全映射到内存中,这使我们能够不接触磁盘执行查找和扫描。”
“没有触及磁盘” - >“没有意识到磁盘被触摸”。内存映射IO是一种非常方便的技术,因为它将实际的IO委托给操作系统,假设它可以在缓存方面做得很好(特别是当几个进程共享相同的文件时)。但它有缺点,你没有控制它。如果页面不驻留在内存中,则该线程将被阻塞并且不能执行其他操作;将其与“异步IO”进行对比,您可以在IO挂起时注册回调并在同一线程中执行其他操作。 – ithkuil 2011-07-27 14:51:57
@ithkuil:你完全可以控制内存映射IO,至少可以确保某些页面在内存中或已被提交到磁盘(仍然有摆动空间的页面不保证是在内存中,但很好,可以)。这就是像mlock(),msync()和MAP_LOCKED这些奇妙的东西。你也可以通过mincore()来理解当前是什么,没有被分页。 – 2012-04-18 04:58:55
@ChristopherSmith:是的,你说得对,有办法控制它。但是,通常它用于关键性能部分(实时)或安全相关问题(如避免内存中的密码在磁盘上交换)。内存映射文件是非常有用的,因为您不必决定将它们保留在内存中的多少;否则你可以只读取内存中没有mmap的整个文件,并达到相同的效果。事实上,我只是通过cassandra代码擦亮了一下;唯一的调用是'mlockall(MCL_CURRENT);'在启动时完成。另见:http://goo.gl/AEgPM – ithkuil 2012-04-18 17:03:12
的片剂储存在SSTables的形式。
的SSTable(直接映射到GFS)被。键值基于不可变存储它存储的数据块,每个为64KB的
定义:
- 键的索引:密钥和起始位置
- 组块是存储单元在GFS,副本管理是由块
的SSTable(英格兰。 Sorted Strings Table)是键/值字符串 对的文件,按键排序。
SSTable提供了一个从键到 值的持久的,有序的不可变映射,其中键和值都是任意字节字符串。
在内部,每个SSTable包含一个块序列(通常为
每个块的大小为64KB,但这是可配置的)。
- 1. 什么使CommitLog比在Cassandra中写入SSTable更快?
- 2. SSTable多个目录
- 3. Cassandra sstable文件名格式
- 4. Cassandra控制SSTable大小
- 5. Cassandra SSTable跨节点的列系列
- 6. 如何降低cassandra升级SSTable时间
- 7. 什么“?”做?什么是__FILE__?
- 8. 什么是<NS0:什么?
- 9. 什么是setDetailItem:做什么?
- 10. 什么是PHPCI - 什么是构建?
- 11. 什么是stringWithFormat:@“%@ - 1”是什么意思?
- 12. 是什么意思:是什么意思?
- 13. 这是什么`_time_independent_equals`是什么意思?
- 14. Django:什么是`sys.path`应该是什么?
- 15. 什么是MIME?它到底是什么?
- 16. 什么是纯SVG和什么是SMIL?
- 17. 是什么??('')。?。?`是什么意思?
- 18. 什么是PPC,这是什么意思?
- 19. 究竟是什么ObjectFactory是什么,它用于什么?
- 20. 什么是JSTL?什么是JSP标签库?有什么区别?
- 21. 什么是流量?什么是`initialize`在做什么?
- 22. 什么是静态库,什么是动态库,有什么区别,什么是更好的使用,为什么?
- 23. 什么是Doctrine_Collection?
- 24. 什么是MKTeleportingUserLocation?
- 25. 什么是“
- 26. 什么是kpsexpand?
- 27. 什么是UIGobblerGestureRecognizer?
- 28. 什么是golang
- 29. 什么是oracledbconsoleorcl?
- 30. 什么是textViewResourceId?
这是一个伟大的介绍后,以SSTables: http://www.igvita.com/2012/02/06/sstable-and-log-structured-storage-leveldb/ – 2016-12-26 13:11:36