Bedrock.DataPlane.Materializer.Olivine.DataDatabase (bedrock v0.5.2)

View Source

Low-level data storage for Olivine, handling file I/O and buffering.

Summary

Types

locator()

@type locator() :: <<_::64>>

t()

@type t() :: %Bedrock.DataPlane.Materializer.Olivine.DataDatabase{
  buffer: :ets.tab(),
  file: :file.fd(),
  file_name: [char()],
  file_offset: non_neg_integer(),
  window_size_in_microseconds: pos_integer()
}

Functions

close(db)

@spec close(t()) :: :ok

flush(db, size_in_bytes)

@spec flush(t(), size_in_bytes :: pos_integer()) ::
  {:ok, t()}
  | {:error,
     {:data_file_write_failed, File.posix()}
     | {:data_file_sync_failed, File.posix()}}

load_value(db, locator)

@spec load_value(t(), locator()) :: {:ok, Bedrock.value()} | {:error, :not_found}

many_value_loader(db)

@spec many_value_loader(t()) :: ([locator()] ->
                             {:ok, %{required(locator()) => Bedrock.value()}}
                             | {:error, :not_found}
                             | {:error, :shutting_down})

open(file_path, opts \\ [])

@spec open(file_path :: String.t(), opts :: keyword()) ::
  {:ok, t()} | {:error, File.posix()}

store_value(db, key, version, value)

@spec store_value(
  t(),
  key :: Bedrock.key(),
  version :: Bedrock.version(),
  value :: Bedrock.value()
) ::
  {:ok, locator(), t()}

value_loader(db)

@spec value_loader(t()) :: (locator() ->
                        {:ok, Bedrock.value()}
                        | {:error, :not_found}
                        | {:error, :shutting_down})