2

我想上传一个 psv 文件,其中包含每天存储的医生、位置和实践的关键统计数据。

该条目的唯一键将包括:
医师姓名、
诊所名称、
地点名称和
服务日期。

四个字段一起。

Aerospike 加载程序的配置文件示例仅显示具有单个键的版本,并且我没有看到多个条目的语法。

有人可以建议我是否可以这样做(使用加载文件中的列列出多个关键字段的配置),并告诉我这个例子。

4

3 回答 3

3

将键连接成一个字符串。为了便于阅读,请使用分隔符,如“:”。

知道 aerospike 不存储原始密钥,它存储摘要(散列)可能很有用。

于 2015-09-28T09:09:07.563 回答
0

您可以创建一个字节缓冲区并将字段转换为字节,然后将它们添加到字节缓冲区。但是在阅读时,您需要知道键的数据类型或格式才能从字节缓冲区中提取它们。

 var keyVal = new ArrayBuffer[Byte]
  for ( j<- 0 until keyIndex.length)
    {
        val field = schema(keyIndex(j))
        field.dataType match {
        case value: StringType => {
           keyVal = keyVal.+=(row(keyIndex(j)).asInstanceOf[String].toByte)
        }
        case value: IntegerType => {
           keyVal = keyVal.+=(row(keyIndex(j)).asInstanceOf[Integer].toByte)
        }
        case value: LongType => {
           keyVal = keyVal.+=(row(keyIndex(j)).asInstanceOf[Long].toByte)
        }
      }
   }
   val key: Key = new Key(namespace, set,keyVal.toArray)

KeyIndexes = array containing the index of key fileds

Schema = schema of the fileds.

row = a single record to be written.

如果您知道键的架构,则在提取值时就像您从 int, int,Long 中创建了一个键一样,您可以通过first4bytes.toIntandnext4.toInt和 and提取Last8.toLong

于 2015-11-24T11:01:08.227 回答
0

关于“最佳方式”没有简单的答案,它取决于您想要以速度和规模查询的内容。您的数据模型将反映您希望如何读取数据以及延迟和吞吐量。

如果您想要特定数据的高速(1-5ms 延迟)和高吞吐量(每秒 100k),则需要在将数据写入 Aerospike 时聚合数据并使用复合键存储它,这将允许您快速获取该数据,例如医生日位置。

如果你想在一段时间内进行统计分析,而查询可能需要几秒钟到几分钟的时间,那么你可以将数据存储在结构较少的格式中并在其上运行 Aerospike 聚合,甚至直接使用 Hadoop 或 Spark在 Aerospike 数据上。

于 2015-11-11T00:08:54.553 回答