Show / Hide Table of Contents

Interface IDistributedDataStore

Represents a data store that works with large distributed systems that support OLTP-style processing and provide data querying, caching, partitioning/sharding, failover and replication. These systems are designed to handle billions of rows that need to be accessed by millions of active concurrent users, so the design is specific to this model that scales horizontally. There is no need to use this technology for medium and smaller data stores as it imposes specific requirements on how application is written/interacts with the backend system. This technology is based on the idea of Parcels - an atomic unit of data change. Parcels get replicated between hosts for failover and performance reasons. Note: NFX library does not provide the implementation for this technology, only marker interfaces so developers can plan for distributed backends in future

Inherited Members
IDataStore.TargetName
IDataStore.TestConnection()
IApplicationComponent.ComponentSID
IApplicationComponent.ComponentDirector
IApplicationComponent.ComponentCommonName
System.IDisposable.Dispose()
Namespace: NFX.DataAccess.Distributed
Assembly: NFX.dll
Syntax
public interface IDistributedDataStore : IDataStore, IApplicationComponent, IDisposable
Remarks

The structure of distributed data store:

+------------------------------------------------------------------------------------------------------------+ | Data Store | | +-------------------------------------------------------------------------+ +---------------------+ | | | Bank = N 1 (Schema A) | | Bank = N 2 | | | | +----------+ +--------------------------------------------------------+ | | (Schema A) | | | | | Area | + Area "UserData" | | ... | | | | | | "common" | +-----------+-----------+-----------+-----------+--------+ | | | | | | | | + Shard 1 | Shard 2 | Shard 3 | Shard 4 | | | | | | | +----------+ | | | | | | +---------------------+ | | | +-----------+ | | | | +---------------------+ | | | +----------------------+ | +-----------+ | | | Bank = N X | | | | |Area "clinicalData" | | | | | | | (Schema B) | | | | | /doctors | | | | | | ... | | | | | | /codes | | | | | | | | | | | | /diagnoses | | | +-----------+ | | | | | | +----------------------+ | | | +---------------------+ | | | +-----------+ | | | +-------------------------------------------------------------------------+ | +------------------------------------------------------------------------------------------------------------+ Distributed data stores hold single or multiple named data banks instances: Bank = global data bank name, a named instance of a distributed database. Banks are logical isolation containers in large datasets. Store implementations may use it for physical isolation as well. Every bank implements a particular schema - a structure suitable for some business purpose. A store may support multiple schemas, but every particular database bank implements only one schema. Named instances of database banks with the same schema may be used to house data for different clients or environments. Bank name example: "PROD-Data", "DEV-Data", "EnterpriseA", "CustomerX" etc.

Every Bank is further broken down by Areas that can be accessed/addressed by their names. Areas contain shards that partition large volumes of data horizontally, they define how data is partitioned and where it is stored

Properties

SchemaNames

Returns names of database bank schemas supported by the store. Every bank implements a particular schema

Declaration
IEnumerable<string> SchemaNames { get; }
Property Value
Type Description
System.Collections.Generic.IEnumerable<System.String>

Methods

BankNames(String)

Returns names of database bank instances in the store that implement the specified schema

Declaration
IEnumerable<string> BankNames(string schemaName)
Parameters
Type Name Description
System.String schemaName
Returns
Type Description
System.Collections.Generic.IEnumerable<System.String>

GetBank(String, String)

Returns Bank object by name within schema

Declaration
IBank GetBank(string schemaName, string name)
Parameters
Type Name Description
System.String schemaName
System.String name
Returns
Type Description
IBank

Extension Methods

MiscUtils.NonNull<T>(T, Func<Exception>, String)
ObjectValueConversion.AsString(Object, String, ConvertErrorHandling)
ObjectValueConversion.AsNonNullOrEmptyString(Object)
ObjectValueConversion.AsLaconicConfig(Object, ConfigSectionNode, String, ConvertErrorHandling)
ObjectValueConversion.AsJSONConfig(Object, ConfigSectionNode, String, ConvertErrorHandling)
ObjectValueConversion.AsXMLConfig(Object, ConfigSectionNode, ConvertErrorHandling)
ObjectValueConversion.AsChar(Object, Char, ConvertErrorHandling)
ObjectValueConversion.AsNullableChar(Object, Nullable<Char>, ConvertErrorHandling)
ObjectValueConversion.AsByte(Object, Byte, ConvertErrorHandling)
ObjectValueConversion.AsNullableByte(Object, Nullable<Byte>, ConvertErrorHandling)
ObjectValueConversion.AsSByte(Object, SByte, ConvertErrorHandling)
ObjectValueConversion.AsNullableSByte(Object, Nullable<SByte>, ConvertErrorHandling)
ObjectValueConversion.AsShort(Object, Int16, ConvertErrorHandling)
ObjectValueConversion.AsNullableShort(Object, Nullable<Int16>, ConvertErrorHandling)
ObjectValueConversion.AsUShort(Object, UInt16, ConvertErrorHandling)
ObjectValueConversion.AsNullableUShort(Object, Nullable<UInt16>, ConvertErrorHandling)
ObjectValueConversion.AsInt(Object, Int32, ConvertErrorHandling)
ObjectValueConversion.AsNullableInt(Object, Nullable<Int32>, ConvertErrorHandling)
ObjectValueConversion.AsUInt(Object, UInt32, ConvertErrorHandling)
ObjectValueConversion.AsNullableUInt(Object, Nullable<UInt32>, ConvertErrorHandling)
ObjectValueConversion.AsLong(Object, Int64, ConvertErrorHandling)
ObjectValueConversion.AsNullableLong(Object, Nullable<Int64>, ConvertErrorHandling)
ObjectValueConversion.AsULong(Object, UInt64, ConvertErrorHandling)
ObjectValueConversion.AsNullableULong(Object, Nullable<UInt64>, ConvertErrorHandling)
ObjectValueConversion.AsDouble(Object, Double, ConvertErrorHandling)
ObjectValueConversion.AsNullableDouble(Object, Nullable<Double>, ConvertErrorHandling)
ObjectValueConversion.AsFloat(Object, Single, ConvertErrorHandling)
ObjectValueConversion.AsNullableFloat(Object, Nullable<Single>, ConvertErrorHandling)
ObjectValueConversion.AsDecimal(Object, Decimal, ConvertErrorHandling)
ObjectValueConversion.AsNullableDecimal(Object, Nullable<Decimal>, ConvertErrorHandling)
ObjectValueConversion.AsBool(Object, Boolean, ConvertErrorHandling)
ObjectValueConversion.AsNullableBool(Object, Nullable<Boolean>, ConvertErrorHandling)
ObjectValueConversion.AsGUID(Object, Guid, ConvertErrorHandling)
ObjectValueConversion.AsNullableGUID(Object, Nullable<Guid>, ConvertErrorHandling)
ObjectValueConversion.AsDateTime(Object)
ObjectValueConversion.AsDateTime(Object, DateTime, ConvertErrorHandling)
ObjectValueConversion.AsNullableDateTime(Object, Nullable<DateTime>, ConvertErrorHandling)
ObjectValueConversion.AsGDID(Object)
ObjectValueConversion.AsGDID(Object, GDID, ConvertErrorHandling)
ObjectValueConversion.AsNullableGDID(Object, Nullable<GDID>, ConvertErrorHandling)
ObjectValueConversion.AsGDIDSymbol(Object)
ObjectValueConversion.AsGDIDSymbol(Object, GDIDSymbol, ConvertErrorHandling)
ObjectValueConversion.AsNullableGDIDSymbol(Object, Nullable<GDIDSymbol>, ConvertErrorHandling)
ObjectValueConversion.AsTimeSpan(Object)
ObjectValueConversion.AsTimeSpan(Object, TimeSpan, ConvertErrorHandling)
ObjectValueConversion.AsNullableTimeSpan(Object, Nullable<TimeSpan>, ConvertErrorHandling)
ObjectValueConversion.AsEnum<TEnum>(Object, TEnum, ConvertErrorHandling)
ObjectValueConversion.AsNullableEnum<TEnum>(Object, Nullable<TEnum>, ConvertErrorHandling)
ObjectValueConversion.AsUri(Object, Uri, ConvertErrorHandling)
JSONExtensions.ToJSON(Object, JSONWritingOptions)
JSONExtensions.ToJSON(Object, TextWriter, JSONWritingOptions)
JSONExtensions.ToJSON(Object, Stream, JSONWritingOptions, Encoding)
ErlObject.ToErlObject(Object)
ErlObject.ToErlObject(Object, ErlTypeOrder, Boolean)
Back to top Copyright © 2006-2018 Agnicore Inc
Generated by DocFX