数据存储和devise使用多台机器?

我需要构build一个系统来存储和维护大量(20 [TB])的时间序列数据(对于许多不同的仪器),以便支持以下要求:

(1) fast appends of new data, as new data comes in
(2) fast retrievals of existing (already stored) data

每台仪器有10,000个仪器和1000个数据字段(每1分钟更新一次)以保存。 一旦数据写入磁盘,它将保持不变(没有并发写入/读取的问题)。

因为不需要任何连接(典型的查询是: give me all instruments for field 'X' on interval 'Y' ),我倾向于使用平面二进制文件来存储数据,这些文件将被命名为: fieldName.timeStamp.bin ; 这样,我就可以将所有数据存储在平面二进制文件中(对于一个巨大的服务器/商业数据库来说,不需要花费巨大的费用),而且查询速度也会很快。

由于大量的数据(大约20 [TB]),我想我需要一些逻辑来分配我的所有机器之间的文件( fieldName.timeStamp.bin )。 以下是我的想法:将有一个中央机器,所有的查询将被发送。 这个中央机器(基于请求的字段和时间戳)将查询路由到感兴趣的机器,这又将返回所请求的数据。

我的问题是:

(1) is this design scalable as I think it is? any drawbacks?

(2) is there anything I am missing here that might hurt performance?

(3) is it really the best way to send all queries to a central machine, that would in turn route the query to the right machine? or would it be best to directly access the (3) is it really the best way to send all queries to a central machine, that would in turn route the query to the right machine? or would it be best to directly access theusing NFS (3) is it really the best way to send all queries to a central machine, that would in turn route the query to the right machine? or would it be best to directly access the 正确的机器 (假设我知道它是哪一个)?

(4) is there a faster way than NFS to access the 正确的机器 to read data from it? are there other methods for sharing all the data that on the data machines with client machines? to read data from it? are there other methods for sharing all the data that on the data machines with client machines?

我所有的机器都使用Ubuntu Linux。 可以理解,将会有许多client机器访问各种data machines并从中读取(只读,不写)数据。 我的目标是尽可能快地读取数据。

您可能还想看看OpenTSDB ,这是一个基于Hadoop的系统,用于存储和检索海量时间序列数据。 我从来没有用过,但听起来很方便,至less在你的目的附近。

Tahoe Least Authority File System可以自动解决许多这些问题,特别是如果您可以使用他们的工具来检索数据。 至less,在制作我自己的系统之前,我会先看看它。 没有关于真正的带宽和延迟要求的数据,我不能说更多。

一些注意事项:

1)在这里使用中央服务器似乎没有必要。 为什么不做一个文件名的散列,并使用一个简单的sorting来决定哪个服务器来存储/获取文件? 这样,你不需要一个中央服务器来存储/写入文件。

2)鉴于你所谈论的系统的规模,我会考虑使用Lustre或者GLuster为你做文件系统的东西,而不是使用NFS。 让他们为你辛苦的工作。 两者都用于比这个大得多的系统,并有一个稳定的logging。

3)如果你决定扮演你自己的angular色,我会强调一下OpenSolaris / Nexenta和ZFS。 对于大型文件系统,ZFS的一些优势变得非常有用:

a)ZFS进行智能突袭重build。 我可以在30小时内在10x2tb raid 50驱动器设置上重build16tb的数据。 如果我使用硬件RAID卡进行同样的重build,速度要快得多。 b)ZFS不需要使用fsck,即使在ext3 / 4的分区上使用fsck也是非常痛苦的。 c)ZFS的写入I / O调度器非常强大。 您可以添加单个SSD以容纳ZIL日志/ LARC2高速caching,并获得基于SSD的存储系统的大部分收益,同时具有硬盘的大量数据保留。 d)ZFS内置了非常强大的NFSv4服务器。共享很容易configuration。 e)如果仪器读数通常返回类似的结果,ZFS已经构build了文件系统级别的重复数据删除,这对您来说可能是一个巨大的胜利。