def read(table, ids, options = {}, &blk)
      if ids.respond_to?(:each)
        batch_get_item({ table => ids }, options, &blk)
      else
        get_item(table, ids, options)
      end
    end
def read(table, ids, options = {}, &blk)
      if ids.respond_to?(:each)
        batch_get_item({ table => ids }, options, &blk)
      else
        get_item(table, ids, options)
      end
    end
Read one or many keys from the selected table.
 This method intelligently calls batch_get or get on the underlying adapter
 depending on whether ids is a range or a single key.
 If a range key is present, it will also interpolate that into the ids so
 that the batch get will acquire the correct record.

 @param [String] table the name of the table to write the object to
 @param [Array] ids to fetch, can also be a string of just one id
 @param [Hash] options: Passed to the underlying query. The :range_key option is required whenever the table has a range key,
                        unless multiple ids are passed in.

 @since 0.2.0