In-Memory database supporting transactions The Next CEO of Stack OverflowSimple in-memory databaseTest connection to database C#Am I coding Java in C#?Creating orders for gift transactionsReducing memory footprint of ReportViewerSupporting Enum in EF 5 with .Net 4.0Prefer simplicity over testability?Messenger supporting notifications and requestsConverting from binary to unarySieve32Fast - A very fast, memory efficient, multi-threaded Sieve of EratosthenesCustom observable types and their supporting classes

Does destroying a Lich's phylactery destroy the soul within it?

Traveling with my 5 year old daughter (as the father) without the mother from Germany to Mexico

Can someone explain this formula for calculating Manhattan distance?

What connection does MS Office have to Netscape Navigator?

Strange use of "whether ... than ..." in official text

Is it convenient to ask the journal's editor for two additional days to complete a review?

What would be the main consequences for a country leaving the WTO?

Computationally populating tables with probability data

Easy to read palindrome checker

Calculate the Mean mean of two numbers

When "be it" is at the beginning of a sentence, what kind of structure do you call it?

How to find image of a complex function with given constraints?

Help understanding this unsettling image of Titan, Epimetheus, and Saturn's rings?

How many extra stops do monopods offer for tele photographs?

Why is information "lost" when it got into a black hole?

IC has pull-down resistors on SMBus lines?

Can this note be analyzed as a non-chord tone?

Can you teleport closer to a creature you are Frightened of?

What difference does it make using sed with/without whitespaces?

free fall ellipse or parabola?

Redefining symbol midway through a document

Lucky Feat: How can "more than one creature spend a luck point to influence the outcome of a roll"?

Which one is the true statement?

What happened in Rome, when the western empire "fell"?



In-Memory database supporting transactions



The Next CEO of Stack OverflowSimple in-memory databaseTest connection to database C#Am I coding Java in C#?Creating orders for gift transactionsReducing memory footprint of ReportViewerSupporting Enum in EF 5 with .Net 4.0Prefer simplicity over testability?Messenger supporting notifications and requestsConverting from binary to unarySieve32Fast - A very fast, memory efficient, multi-threaded Sieve of EratosthenesCustom observable types and their supporting classes










0












$begingroup$


I referred to this question here but it does not address the question that I have with regards to my question. I have a C# implementation of an in-memory database that I came up with during a recent interview. I was told that my code was okay in terms of getting the job done but could be more efficient dealing with transactions. I am not sure how I could improve this. I would greatly appreciate any suggestions.



The database should support GET, SET, DELETE, COUNT as basic operations. END signifies that the user is not going to issue any more commands. Input is read from stdin.



eg.



SET a 10
GET a //returns 10
COUNT a //returns 1
DELETE a
GET a //returns 0.


A transaction is the equivalent of the DB transactions support the above operations in an atomic manner. It is initiated by a BEGIN command, rollback means rolling back the active transaction, since rolling transactions are supported, commit writes all open transactions to memory. A rollback issued with no transactions open or a commit issued with no transactions open will result in a "NO TRANSACTIONS" being printed.



BEGIN
SET a 10
GET a
BEGIN
SET a 20
GET a
ROLLBACK
GET a
ROLLBACK
GET a
END


Here are my classes:



public class Operation

private readonly Dictionary<string, int> valueStore;
private readonly Dictionary<int, int> valueCount;

public Operation()

valueStore = new Dictionary<string, int>();
valueCount = new Dictionary<int, int>();

//Used for copying over old data for supporting transactions
public Operation(Operation operation)

valueStore = new Dictionary<string, int>(operation.valueStore);
valueCount = new Dictionary<int, int>(operation.valueCount);

//set a variable to a value in the datastore and update counts
internal void Set(string variable, int value)

if (!valueStore.ContainsKey(variable))

valueStore.Add(variable, value);

else

valueCount[valueStore[variable]] -= 1;
valueStore[variable] = value;

if (!valueCount.ContainsKey(value))

valueCount.Add(value, 1);

else

valueCount[value] += 1;


//Get value from datastore, return null if not present
internal void Get(string variable)

if (valueStore.ContainsKey(variable))
Console.WriteLine(valueStore[variable]);
else
Console.WriteLine("NULL");

//Get count from datastore, return 0 if not present
internal void Count(int value)

if (valueCount.ContainsKey(value))
Console.WriteLine(valueCount[value]);
else
Console.WriteLine("0");

//Delete value from data store and update count.
internal void Delete(string variable)

if (valueStore.ContainsKey(variable))

int value = valueStore[variable];
valueCount[value] -= 1;
valueStore.Remove(variable);

else
Console.WriteLine("Variable does not exist");


/*
* We need to override equals to compare two operations
* because when we have two begins, 1 commit followed by
* a rollback we should technically have no transactions
* to rollback, because the last committed and current
* transactions are both same
*/

public bool Equals(Operation other)

if (valueStore.Keys.Count == other.valueStore.Keys.Count)

foreach (string variable in valueStore.Keys)

if (other.valueStore.ContainsKey(variable)
&& other.valueStore[variable] == valueStore[variable])
continue;
else
return false;


else
return false;
return true;


public override int GetHashCode()

unchecked

int hash = 17;
hash = hash * 31 + valueStore.GetHashCode();
hash = hash * 31 + valueCount.GetHashCode();
return hash;




public class Transaction

private readonly Stack<Operation> transactions;

public Transaction()

transactions = new Stack<Operation>();


internal Operation Begin(Operation operation)

transactions.Push(operation);
return new Operation(operation);


internal Operation Commit(Operation operation)

transactions.Clear();
transactions.Push(operation);
return new Operation(operation);


internal Operation Rollback(Operation operation)

if (transactions.Count != 0)

Operation lastCommitted = transactions.Pop();
if (lastCommitted.Equals(operation))

Console.WriteLine("NO TRANSACTION");
transactions.Push(lastCommitted);

return lastCommitted;

else

Console.WriteLine("NO TRANSACTION");
return operation;




public class Database

private Operation commands;
private Transaction transaction;

public Database()

commands = new Operation();
transaction = new Transaction();


public void HandleInput()

Console.WriteLine("Hello user, enter some commands");
string line = "";
while ((line = Console.ReadLine()) != null)

if (line == "END")
break;
else

HandleUserInput(line);




private void HandleUserInput(string inputLine)

/*
* Need to use exceptions for parsing and use try catch block for FormatException
* Assuming that input commands will be valid(eg. Get will have 2 params,
* Count will have 2 params etc.)
*/
string[] parameters = inputLine.Split(' ');
string op = parameters[0];
string variable;
int value;
switch (op.ToUpper())

case "GET":
variable = parameters[1];
commands.Get(variable);
break;

case "SET":
variable = parameters[1];
value = int.Parse(parameters[2]);
commands.Set(variable, value);
break;

case "DELETE":
variable = parameters[1];
commands.Delete(variable);
break;

case "COUNT":
value = int.Parse(parameters[1]);
commands.Count(value);

break;

case "BEGIN":
commands = transaction.Begin(commands);
break;

case "ROLLBACK":
commands = transaction.Rollback(commands);
break;

case "COMMIT":
commands = transaction.Commit(commands);
break;

default:
Console.WriteLine("Invalid operation: " + op + "nTry again.");
break;











share







New contributor




Sindhu is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.







$endgroup$
















    0












    $begingroup$


    I referred to this question here but it does not address the question that I have with regards to my question. I have a C# implementation of an in-memory database that I came up with during a recent interview. I was told that my code was okay in terms of getting the job done but could be more efficient dealing with transactions. I am not sure how I could improve this. I would greatly appreciate any suggestions.



    The database should support GET, SET, DELETE, COUNT as basic operations. END signifies that the user is not going to issue any more commands. Input is read from stdin.



    eg.



    SET a 10
    GET a //returns 10
    COUNT a //returns 1
    DELETE a
    GET a //returns 0.


    A transaction is the equivalent of the DB transactions support the above operations in an atomic manner. It is initiated by a BEGIN command, rollback means rolling back the active transaction, since rolling transactions are supported, commit writes all open transactions to memory. A rollback issued with no transactions open or a commit issued with no transactions open will result in a "NO TRANSACTIONS" being printed.



    BEGIN
    SET a 10
    GET a
    BEGIN
    SET a 20
    GET a
    ROLLBACK
    GET a
    ROLLBACK
    GET a
    END


    Here are my classes:



    public class Operation

    private readonly Dictionary<string, int> valueStore;
    private readonly Dictionary<int, int> valueCount;

    public Operation()

    valueStore = new Dictionary<string, int>();
    valueCount = new Dictionary<int, int>();

    //Used for copying over old data for supporting transactions
    public Operation(Operation operation)

    valueStore = new Dictionary<string, int>(operation.valueStore);
    valueCount = new Dictionary<int, int>(operation.valueCount);

    //set a variable to a value in the datastore and update counts
    internal void Set(string variable, int value)

    if (!valueStore.ContainsKey(variable))

    valueStore.Add(variable, value);

    else

    valueCount[valueStore[variable]] -= 1;
    valueStore[variable] = value;

    if (!valueCount.ContainsKey(value))

    valueCount.Add(value, 1);

    else

    valueCount[value] += 1;


    //Get value from datastore, return null if not present
    internal void Get(string variable)

    if (valueStore.ContainsKey(variable))
    Console.WriteLine(valueStore[variable]);
    else
    Console.WriteLine("NULL");

    //Get count from datastore, return 0 if not present
    internal void Count(int value)

    if (valueCount.ContainsKey(value))
    Console.WriteLine(valueCount[value]);
    else
    Console.WriteLine("0");

    //Delete value from data store and update count.
    internal void Delete(string variable)

    if (valueStore.ContainsKey(variable))

    int value = valueStore[variable];
    valueCount[value] -= 1;
    valueStore.Remove(variable);

    else
    Console.WriteLine("Variable does not exist");


    /*
    * We need to override equals to compare two operations
    * because when we have two begins, 1 commit followed by
    * a rollback we should technically have no transactions
    * to rollback, because the last committed and current
    * transactions are both same
    */

    public bool Equals(Operation other)

    if (valueStore.Keys.Count == other.valueStore.Keys.Count)

    foreach (string variable in valueStore.Keys)

    if (other.valueStore.ContainsKey(variable)
    && other.valueStore[variable] == valueStore[variable])
    continue;
    else
    return false;


    else
    return false;
    return true;


    public override int GetHashCode()

    unchecked

    int hash = 17;
    hash = hash * 31 + valueStore.GetHashCode();
    hash = hash * 31 + valueCount.GetHashCode();
    return hash;




    public class Transaction

    private readonly Stack<Operation> transactions;

    public Transaction()

    transactions = new Stack<Operation>();


    internal Operation Begin(Operation operation)

    transactions.Push(operation);
    return new Operation(operation);


    internal Operation Commit(Operation operation)

    transactions.Clear();
    transactions.Push(operation);
    return new Operation(operation);


    internal Operation Rollback(Operation operation)

    if (transactions.Count != 0)

    Operation lastCommitted = transactions.Pop();
    if (lastCommitted.Equals(operation))

    Console.WriteLine("NO TRANSACTION");
    transactions.Push(lastCommitted);

    return lastCommitted;

    else

    Console.WriteLine("NO TRANSACTION");
    return operation;




    public class Database

    private Operation commands;
    private Transaction transaction;

    public Database()

    commands = new Operation();
    transaction = new Transaction();


    public void HandleInput()

    Console.WriteLine("Hello user, enter some commands");
    string line = "";
    while ((line = Console.ReadLine()) != null)

    if (line == "END")
    break;
    else

    HandleUserInput(line);




    private void HandleUserInput(string inputLine)

    /*
    * Need to use exceptions for parsing and use try catch block for FormatException
    * Assuming that input commands will be valid(eg. Get will have 2 params,
    * Count will have 2 params etc.)
    */
    string[] parameters = inputLine.Split(' ');
    string op = parameters[0];
    string variable;
    int value;
    switch (op.ToUpper())

    case "GET":
    variable = parameters[1];
    commands.Get(variable);
    break;

    case "SET":
    variable = parameters[1];
    value = int.Parse(parameters[2]);
    commands.Set(variable, value);
    break;

    case "DELETE":
    variable = parameters[1];
    commands.Delete(variable);
    break;

    case "COUNT":
    value = int.Parse(parameters[1]);
    commands.Count(value);

    break;

    case "BEGIN":
    commands = transaction.Begin(commands);
    break;

    case "ROLLBACK":
    commands = transaction.Rollback(commands);
    break;

    case "COMMIT":
    commands = transaction.Commit(commands);
    break;

    default:
    Console.WriteLine("Invalid operation: " + op + "nTry again.");
    break;











    share







    New contributor




    Sindhu is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
    Check out our Code of Conduct.







    $endgroup$














      0












      0








      0





      $begingroup$


      I referred to this question here but it does not address the question that I have with regards to my question. I have a C# implementation of an in-memory database that I came up with during a recent interview. I was told that my code was okay in terms of getting the job done but could be more efficient dealing with transactions. I am not sure how I could improve this. I would greatly appreciate any suggestions.



      The database should support GET, SET, DELETE, COUNT as basic operations. END signifies that the user is not going to issue any more commands. Input is read from stdin.



      eg.



      SET a 10
      GET a //returns 10
      COUNT a //returns 1
      DELETE a
      GET a //returns 0.


      A transaction is the equivalent of the DB transactions support the above operations in an atomic manner. It is initiated by a BEGIN command, rollback means rolling back the active transaction, since rolling transactions are supported, commit writes all open transactions to memory. A rollback issued with no transactions open or a commit issued with no transactions open will result in a "NO TRANSACTIONS" being printed.



      BEGIN
      SET a 10
      GET a
      BEGIN
      SET a 20
      GET a
      ROLLBACK
      GET a
      ROLLBACK
      GET a
      END


      Here are my classes:



      public class Operation

      private readonly Dictionary<string, int> valueStore;
      private readonly Dictionary<int, int> valueCount;

      public Operation()

      valueStore = new Dictionary<string, int>();
      valueCount = new Dictionary<int, int>();

      //Used for copying over old data for supporting transactions
      public Operation(Operation operation)

      valueStore = new Dictionary<string, int>(operation.valueStore);
      valueCount = new Dictionary<int, int>(operation.valueCount);

      //set a variable to a value in the datastore and update counts
      internal void Set(string variable, int value)

      if (!valueStore.ContainsKey(variable))

      valueStore.Add(variable, value);

      else

      valueCount[valueStore[variable]] -= 1;
      valueStore[variable] = value;

      if (!valueCount.ContainsKey(value))

      valueCount.Add(value, 1);

      else

      valueCount[value] += 1;


      //Get value from datastore, return null if not present
      internal void Get(string variable)

      if (valueStore.ContainsKey(variable))
      Console.WriteLine(valueStore[variable]);
      else
      Console.WriteLine("NULL");

      //Get count from datastore, return 0 if not present
      internal void Count(int value)

      if (valueCount.ContainsKey(value))
      Console.WriteLine(valueCount[value]);
      else
      Console.WriteLine("0");

      //Delete value from data store and update count.
      internal void Delete(string variable)

      if (valueStore.ContainsKey(variable))

      int value = valueStore[variable];
      valueCount[value] -= 1;
      valueStore.Remove(variable);

      else
      Console.WriteLine("Variable does not exist");


      /*
      * We need to override equals to compare two operations
      * because when we have two begins, 1 commit followed by
      * a rollback we should technically have no transactions
      * to rollback, because the last committed and current
      * transactions are both same
      */

      public bool Equals(Operation other)

      if (valueStore.Keys.Count == other.valueStore.Keys.Count)

      foreach (string variable in valueStore.Keys)

      if (other.valueStore.ContainsKey(variable)
      && other.valueStore[variable] == valueStore[variable])
      continue;
      else
      return false;


      else
      return false;
      return true;


      public override int GetHashCode()

      unchecked

      int hash = 17;
      hash = hash * 31 + valueStore.GetHashCode();
      hash = hash * 31 + valueCount.GetHashCode();
      return hash;




      public class Transaction

      private readonly Stack<Operation> transactions;

      public Transaction()

      transactions = new Stack<Operation>();


      internal Operation Begin(Operation operation)

      transactions.Push(operation);
      return new Operation(operation);


      internal Operation Commit(Operation operation)

      transactions.Clear();
      transactions.Push(operation);
      return new Operation(operation);


      internal Operation Rollback(Operation operation)

      if (transactions.Count != 0)

      Operation lastCommitted = transactions.Pop();
      if (lastCommitted.Equals(operation))

      Console.WriteLine("NO TRANSACTION");
      transactions.Push(lastCommitted);

      return lastCommitted;

      else

      Console.WriteLine("NO TRANSACTION");
      return operation;




      public class Database

      private Operation commands;
      private Transaction transaction;

      public Database()

      commands = new Operation();
      transaction = new Transaction();


      public void HandleInput()

      Console.WriteLine("Hello user, enter some commands");
      string line = "";
      while ((line = Console.ReadLine()) != null)

      if (line == "END")
      break;
      else

      HandleUserInput(line);




      private void HandleUserInput(string inputLine)

      /*
      * Need to use exceptions for parsing and use try catch block for FormatException
      * Assuming that input commands will be valid(eg. Get will have 2 params,
      * Count will have 2 params etc.)
      */
      string[] parameters = inputLine.Split(' ');
      string op = parameters[0];
      string variable;
      int value;
      switch (op.ToUpper())

      case "GET":
      variable = parameters[1];
      commands.Get(variable);
      break;

      case "SET":
      variable = parameters[1];
      value = int.Parse(parameters[2]);
      commands.Set(variable, value);
      break;

      case "DELETE":
      variable = parameters[1];
      commands.Delete(variable);
      break;

      case "COUNT":
      value = int.Parse(parameters[1]);
      commands.Count(value);

      break;

      case "BEGIN":
      commands = transaction.Begin(commands);
      break;

      case "ROLLBACK":
      commands = transaction.Rollback(commands);
      break;

      case "COMMIT":
      commands = transaction.Commit(commands);
      break;

      default:
      Console.WriteLine("Invalid operation: " + op + "nTry again.");
      break;











      share







      New contributor




      Sindhu is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
      Check out our Code of Conduct.







      $endgroup$




      I referred to this question here but it does not address the question that I have with regards to my question. I have a C# implementation of an in-memory database that I came up with during a recent interview. I was told that my code was okay in terms of getting the job done but could be more efficient dealing with transactions. I am not sure how I could improve this. I would greatly appreciate any suggestions.



      The database should support GET, SET, DELETE, COUNT as basic operations. END signifies that the user is not going to issue any more commands. Input is read from stdin.



      eg.



      SET a 10
      GET a //returns 10
      COUNT a //returns 1
      DELETE a
      GET a //returns 0.


      A transaction is the equivalent of the DB transactions support the above operations in an atomic manner. It is initiated by a BEGIN command, rollback means rolling back the active transaction, since rolling transactions are supported, commit writes all open transactions to memory. A rollback issued with no transactions open or a commit issued with no transactions open will result in a "NO TRANSACTIONS" being printed.



      BEGIN
      SET a 10
      GET a
      BEGIN
      SET a 20
      GET a
      ROLLBACK
      GET a
      ROLLBACK
      GET a
      END


      Here are my classes:



      public class Operation

      private readonly Dictionary<string, int> valueStore;
      private readonly Dictionary<int, int> valueCount;

      public Operation()

      valueStore = new Dictionary<string, int>();
      valueCount = new Dictionary<int, int>();

      //Used for copying over old data for supporting transactions
      public Operation(Operation operation)

      valueStore = new Dictionary<string, int>(operation.valueStore);
      valueCount = new Dictionary<int, int>(operation.valueCount);

      //set a variable to a value in the datastore and update counts
      internal void Set(string variable, int value)

      if (!valueStore.ContainsKey(variable))

      valueStore.Add(variable, value);

      else

      valueCount[valueStore[variable]] -= 1;
      valueStore[variable] = value;

      if (!valueCount.ContainsKey(value))

      valueCount.Add(value, 1);

      else

      valueCount[value] += 1;


      //Get value from datastore, return null if not present
      internal void Get(string variable)

      if (valueStore.ContainsKey(variable))
      Console.WriteLine(valueStore[variable]);
      else
      Console.WriteLine("NULL");

      //Get count from datastore, return 0 if not present
      internal void Count(int value)

      if (valueCount.ContainsKey(value))
      Console.WriteLine(valueCount[value]);
      else
      Console.WriteLine("0");

      //Delete value from data store and update count.
      internal void Delete(string variable)

      if (valueStore.ContainsKey(variable))

      int value = valueStore[variable];
      valueCount[value] -= 1;
      valueStore.Remove(variable);

      else
      Console.WriteLine("Variable does not exist");


      /*
      * We need to override equals to compare two operations
      * because when we have two begins, 1 commit followed by
      * a rollback we should technically have no transactions
      * to rollback, because the last committed and current
      * transactions are both same
      */

      public bool Equals(Operation other)

      if (valueStore.Keys.Count == other.valueStore.Keys.Count)

      foreach (string variable in valueStore.Keys)

      if (other.valueStore.ContainsKey(variable)
      && other.valueStore[variable] == valueStore[variable])
      continue;
      else
      return false;


      else
      return false;
      return true;


      public override int GetHashCode()

      unchecked

      int hash = 17;
      hash = hash * 31 + valueStore.GetHashCode();
      hash = hash * 31 + valueCount.GetHashCode();
      return hash;




      public class Transaction

      private readonly Stack<Operation> transactions;

      public Transaction()

      transactions = new Stack<Operation>();


      internal Operation Begin(Operation operation)

      transactions.Push(operation);
      return new Operation(operation);


      internal Operation Commit(Operation operation)

      transactions.Clear();
      transactions.Push(operation);
      return new Operation(operation);


      internal Operation Rollback(Operation operation)

      if (transactions.Count != 0)

      Operation lastCommitted = transactions.Pop();
      if (lastCommitted.Equals(operation))

      Console.WriteLine("NO TRANSACTION");
      transactions.Push(lastCommitted);

      return lastCommitted;

      else

      Console.WriteLine("NO TRANSACTION");
      return operation;




      public class Database

      private Operation commands;
      private Transaction transaction;

      public Database()

      commands = new Operation();
      transaction = new Transaction();


      public void HandleInput()

      Console.WriteLine("Hello user, enter some commands");
      string line = "";
      while ((line = Console.ReadLine()) != null)

      if (line == "END")
      break;
      else

      HandleUserInput(line);




      private void HandleUserInput(string inputLine)

      /*
      * Need to use exceptions for parsing and use try catch block for FormatException
      * Assuming that input commands will be valid(eg. Get will have 2 params,
      * Count will have 2 params etc.)
      */
      string[] parameters = inputLine.Split(' ');
      string op = parameters[0];
      string variable;
      int value;
      switch (op.ToUpper())

      case "GET":
      variable = parameters[1];
      commands.Get(variable);
      break;

      case "SET":
      variable = parameters[1];
      value = int.Parse(parameters[2]);
      commands.Set(variable, value);
      break;

      case "DELETE":
      variable = parameters[1];
      commands.Delete(variable);
      break;

      case "COUNT":
      value = int.Parse(parameters[1]);
      commands.Count(value);

      break;

      case "BEGIN":
      commands = transaction.Begin(commands);
      break;

      case "ROLLBACK":
      commands = transaction.Rollback(commands);
      break;

      case "COMMIT":
      commands = transaction.Commit(commands);
      break;

      default:
      Console.WriteLine("Invalid operation: " + op + "nTry again.");
      break;









      c# .net interview-questions





      share







      New contributor




      Sindhu is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
      Check out our Code of Conduct.










      share







      New contributor




      Sindhu is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
      Check out our Code of Conduct.








      share



      share






      New contributor




      Sindhu is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
      Check out our Code of Conduct.









      asked 4 mins ago









      SindhuSindhu

      1




      1




      New contributor




      Sindhu is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
      Check out our Code of Conduct.





      New contributor





      Sindhu is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
      Check out our Code of Conduct.






      Sindhu is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
      Check out our Code of Conduct.




















          0






          active

          oldest

          votes












          Your Answer





          StackExchange.ifUsing("editor", function ()
          return StackExchange.using("mathjaxEditing", function ()
          StackExchange.MarkdownEditor.creationCallbacks.add(function (editor, postfix)
          StackExchange.mathjaxEditing.prepareWmdForMathJax(editor, postfix, [["\$", "\$"]]);
          );
          );
          , "mathjax-editing");

          StackExchange.ifUsing("editor", function ()
          StackExchange.using("externalEditor", function ()
          StackExchange.using("snippets", function ()
          StackExchange.snippets.init();
          );
          );
          , "code-snippets");

          StackExchange.ready(function()
          var channelOptions =
          tags: "".split(" "),
          id: "196"
          ;
          initTagRenderer("".split(" "), "".split(" "), channelOptions);

          StackExchange.using("externalEditor", function()
          // Have to fire editor after snippets, if snippets enabled
          if (StackExchange.settings.snippets.snippetsEnabled)
          StackExchange.using("snippets", function()
          createEditor();
          );

          else
          createEditor();

          );

          function createEditor()
          StackExchange.prepareEditor(
          heartbeatType: 'answer',
          autoActivateHeartbeat: false,
          convertImagesToLinks: false,
          noModals: true,
          showLowRepImageUploadWarning: true,
          reputationToPostImages: null,
          bindNavPrevention: true,
          postfix: "",
          imageUploader:
          brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
          contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
          allowUrls: true
          ,
          onDemand: true,
          discardSelector: ".discard-answer"
          ,immediatelyShowMarkdownHelp:true
          );



          );






          Sindhu is a new contributor. Be nice, and check out our Code of Conduct.









          draft saved

          draft discarded


















          StackExchange.ready(
          function ()
          StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fcodereview.stackexchange.com%2fquestions%2f216612%2fin-memory-database-supporting-transactions%23new-answer', 'question_page');

          );

          Post as a guest















          Required, but never shown

























          0






          active

          oldest

          votes








          0






          active

          oldest

          votes









          active

          oldest

          votes






          active

          oldest

          votes








          Sindhu is a new contributor. Be nice, and check out our Code of Conduct.









          draft saved

          draft discarded


















          Sindhu is a new contributor. Be nice, and check out our Code of Conduct.












          Sindhu is a new contributor. Be nice, and check out our Code of Conduct.











          Sindhu is a new contributor. Be nice, and check out our Code of Conduct.














          Thanks for contributing an answer to Code Review Stack Exchange!


          • Please be sure to answer the question. Provide details and share your research!

          But avoid


          • Asking for help, clarification, or responding to other answers.

          • Making statements based on opinion; back them up with references or personal experience.

          Use MathJax to format equations. MathJax reference.


          To learn more, see our tips on writing great answers.




          draft saved


          draft discarded














          StackExchange.ready(
          function ()
          StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fcodereview.stackexchange.com%2fquestions%2f216612%2fin-memory-database-supporting-transactions%23new-answer', 'question_page');

          );

          Post as a guest















          Required, but never shown





















































          Required, but never shown














          Required, but never shown












          Required, but never shown







          Required, but never shown

































          Required, but never shown














          Required, but never shown












          Required, but never shown







          Required, but never shown







          Popular posts from this blog

          名間水力發電廠 目录 沿革 設施 鄰近設施 註釋 外部連結 导航菜单23°50′10″N 120°42′41″E / 23.83611°N 120.71139°E / 23.83611; 120.7113923°50′10″N 120°42′41″E / 23.83611°N 120.71139°E / 23.83611; 120.71139計畫概要原始内容臺灣第一座BOT 模式開發的水力發電廠-名間水力電廠名間水力發電廠 水利署首件BOT案原始内容《小檔案》名間電廠 首座BOT水力發電廠原始内容名間電廠BOT - 經濟部水利署中區水資源局

          Prove that NP is closed under karp reduction?Space(n) not closed under Karp reductions - what about NTime(n)?Class P is closed under rotation?Prove or disprove that $NL$ is closed under polynomial many-one reductions$mathbfNC_2$ is closed under log-space reductionOn Karp reductionwhen can I know if a class (complexity) is closed under reduction (cook/karp)Check if class $PSPACE$ is closed under polyonomially space reductionIs NPSPACE also closed under polynomial-time reduction and under log-space reduction?Prove PSPACE is closed under complement?Prove PSPACE is closed under union?

          Is my guitar’s action too high? Announcing the arrival of Valued Associate #679: Cesar Manara Planned maintenance scheduled April 23, 2019 at 23:30 UTC (7:30pm US/Eastern)Strings too stiff on a recently purchased acoustic guitar | Cort AD880CEIs the action of my guitar really high?Μy little finger is too weak to play guitarWith guitar, how long should I give my fingers to strengthen / callous?When playing a fret the guitar sounds mutedPlaying (Barre) chords up the guitar neckI think my guitar strings are wound too tight and I can't play barre chordsF barre chord on an SG guitarHow to find to the right strings of a barre chord by feel?High action on higher fret on my steel acoustic guitar