SunRiseGG 3 лет назад
Родитель
Сommit
d015b8e202
4 измененных файлов с 11 добавлено и 13 удалено
  1. 1 0
      config/config.exs
  2. 3 1
      src/kvs.erl
  3. 3 6
      src/stores/kvs_mnesia.erl
  4. 4 6
      src/stores/kvs_rocks.erl

+ 1 - 0
config/config.exs

@@ -3,4 +3,5 @@ use Mix.Config
 config :kvs,
   dba: :kvs_rocks,
   dba_st: :kvs_st,
+  seq_dba: :kvs_rocks,
   schema: [:kvs, :kvs_stream]

+ 3 - 1
src/kvs.erl

@@ -52,6 +52,8 @@ stop(_) -> ok.
 
 dba() -> application:get_env(kvs, dba, kvs_mnesia).
 
+seq_dba() -> application:get_env(kvs, seq_dba, kvs_mnesia).
+
 db()  -> (dba()):db().
 
 kvs_stream() ->
@@ -95,7 +97,7 @@ dir() -> dir(#kvs{mod = dba()}).
 feed(Key) ->
     feed(Key, #kvs{mod = dba(), st = kvs_stream(), db = db()}).
 
-seq(Table, DX) -> seq(Table, DX, #kvs{mod = dba()}).
+seq(Table, DX) -> seq(Table, DX, #kvs{mod = seq_dba()}).
 
 remove(Rec, Feed) ->
     remove(Rec, Feed, #kvs{mod = dba(), st = kvs_stream(), db = db()}).

+ 3 - 6
src/stores/kvs_mnesia.erl

@@ -46,12 +46,9 @@ delete(Tab, Key, _) ->
         _ -> ok end.
 count(RecordName) -> mnesia:table_info(RecordName, size).
 all(R, _) -> lists:flatten(many(fun() -> L= mnesia:all_keys(R), [ mnesia:read({R, G}) || G <- L ] end)).
-seq([],[]) ->
-  case os:type() of
-       {win32,nt} -> {Mega,Sec,Micro} = erlang:timestamp(), integer_to_list((Mega*1000000+Sec)*1000000+Micro);
-                _ -> erlang:integer_to_list(element(2,hd(lists:reverse(erlang:system_info(os_monotonic_time_source)))))
-  end;
-seq(RecordName, Incr) -> erlang:integer_to_list(mnesia:dirty_update_counter({id_seq, RecordName}, Incr)).
+seq([],[]) -> seq(system, 1);
+seq(RecordName, Incr) -> mnesia:dirty_update_counter({id_seq, RecordName}, Incr).
+
 many(Fun) -> case mnesia:activity(context(),Fun) of {atomic, [R]} -> R; {aborted, Error} -> {error, Error}; X -> X end.
 void(Fun) -> case mnesia:activity(context(),Fun) of {atomic, ok} -> ok; {aborted, Error} -> {error, Error}; X -> X end.
 info(T) -> try mnesia:table_info(T,all) catch _:_ -> [] end.

+ 4 - 6
src/stores/kvs_rocks.erl

@@ -152,9 +152,7 @@ add_table_index(_, _) -> ok.
 dump() -> ok.
 
 seq(_,_) ->
-  Val =
-    case os:type() of
-       {win32,nt} -> {Mega,Sec,Micro} = erlang:timestamp(), integer_to_list((Mega*1000000+Sec)*1000000+Micro);
-                _ -> erlang:integer_to_list(element(2,hd(lists:reverse(erlang:system_info(os_monotonic_time_source)))))
-    end,
-  case 20 - length(Val) > 0 of true -> string:copies("0", 20 - length(Val)); _ -> "" end ++ Val.
+  case os:type() of
+    {win32,nt} -> {Mega,Sec,Micro} = erlang:timestamp(), (Mega*1000000+Sec)*1000000+Micro;
+    _ -> element(2,hd(lists:reverse(erlang:system_info(os_system_time_source))))
+  end.