public static void Main(string[] args) { // 1. Create databases. var mongodbDatabase = new MongodbDatabase("mongodb://admin(admin):adminpwd0375@localhost:27017/local"); var mysqlDatabase = new AdoNetDatabase("server=.\\SQLEXPRESS; Database=UniformTest; Trusted_Connection=yes;", SqlServerDialect.Provider); // 2. Create database metadata var database = UniformDatabase.Create(config => config .RegisterDocument <CommentDocument>() .RegisterDocument <UserDocument>() .RegisterDocument <QuestionDocument>() .RegisterDocument <VoteDocument>() .RegisterDatabase(SampleDatabases.Mongodb, mongodbDatabase) .RegisterDatabase(SampleDatabases.Sql, mysqlDatabase) ); var mydb = new MyDatabase(database); database.EnterInMemoryMode(); mydb.Comments.Save("asdfasdkhafhasldfh", c => { }); // 3. Optional. RunViewModelRegeneration(database); var stopwatch = Stopwatch.StartNew(); database.LeaveInMemoryMode(true); stopwatch.Stop(); Console.WriteLine("Flushed in {0:n0} ms", stopwatch.ElapsedMilliseconds); Console.ReadKey(); }
public static void RunViewModelRegeneration(UniformDatabase database) { Console.Write("Creating list of events in memory... "); var events = new List <Object>(); for (int i = 0; i < 1000; i++) { var userId = String.Format("user/{0}", i); var question1 = String.Format("user/{0}/question/{1}", i, 1); var question2 = String.Format("user/{0}/question/{1}", i, 2); var question3 = String.Format("user/{0}/question/{1}", i, 3); var commentId = String.Format("user/{0}/comment/{1}", i, 1); var voteId = String.Format("user/{0}/comment/{1}/vote/{2}", i, 1, 1); events.Add(new UserCreated(userId, "Tom", "It's me")); events.Add(new QuestionCreated(question1, userId, "Who are you?")); events.Add(new QuestionCreated(question2, userId, "And you?")); events.Add(new UserNameChanged(userId, "Super John")); events.Add(new QuestionCreated(question3, userId, "How are you?")); events.Add(new QuestionUpdated(question3, userId, "Updated question. How are you?")); events.Add(new CommentAdded(commentId, userId, question3, "My first comment!")); events.Add(new VoteAdded(voteId, commentId, userId, "Nice comment!")); events.Add(new UserNameChanged(userId, "Upgraded Tonny")); events.Add(new UserNameChanged(userId, "Final Tonny")); } // SaveEventsToFile(events); // var result = LoadEventsFromFile(); Console.WriteLine("Done. Managed memory used: {0:n0} mb.", GC.GetTotalMemory(false) / 1024 / 1024); var container = new UnityContainer(); container.RegisterInstance <UniformDatabase>(database); var dispatcher = Dispatcher.Create(builder => builder .SetServiceLocator(new UnityServiceLocator(container)) .AddHandlers(typeof(UserCreated).Assembly) ); Console.WriteLine("Regeneration started..."); var stopwatch = Stopwatch.StartNew(); for (int i = 0; i < events.Count; i++) { if (i % 100000 == 0 && i != 0) { Console.WriteLine("{0:n0} events processed.", i); } var evnt = events[i]; dispatcher.Dispatch(evnt); } stopwatch.Stop(); Console.WriteLine("Done in {0:n0} ms. {1:n0} events processed.", stopwatch.ElapsedMilliseconds, events.Count); Console.ReadKey(); }
public void ConfigureUniform(IContainer container) { var settings = container.GetInstance <SiteSettings>(); // 1. Create databases var mongodbDatabase = new MongodbDatabase(settings.MongoViewConnectionString); // 2. Configure uniform var uniform = UniformDatabase.Create(config => config .RegisterDocuments(typeof(UserView).Assembly) .RegisterDatabase(ViewDatabases.Mongodb, mongodbDatabase)); container.Configure(config => config.For <UniformDatabase>().Singleton().Use(uniform)); }
public void UserState() { var db = new InMemoryDatabase(); var uniform = UniformDatabase.Create(config => config .RegisterDocuments(typeof(UserView).Assembly) .RegisterDatabase(ViewDatabases.Mongodb, db)); var viewDb = new ViewDatabase(uniform); viewDb.Users.Save(new UserView() { Id = "me1", UserName = "******" }); var storedUser = db.GetCollection <UserView>(ViewCollections.Users).GetById("me1"); Assert.AreEqual("me1", storedUser.Id); Assert.AreEqual("User Name", storedUser.UserName); }
public void SetUp() { IContainer container = ObjectFactory.Container; Table = new GameTableAggregate(); Table.Setup(new GameTableState(), 0); var db = new InMemoryDatabase(); var uniform = UniformDatabase.Create(config => config .RegisterDocuments(typeof(UserView).Assembly) .RegisterDatabase(ViewDatabases.Mongodb, db)); View = new ViewDatabase(uniform); container.Configure(x => x.For <ViewDatabase>().Use(View)); Dispatcher = Dispatcher.Create(d => d .AddHandlers(typeof(UserView).Assembly, new[] { "Poker.Handlers.ViewHandlers", "Poker.Handlers.ViewHandlers" }) .SetServiceLocator(new StructureMapServiceLocator(container))); }
public static void RunViewModelRegeneration(UniformDatabase database) { Console.Write("Creating list of events in memory... "); var events = new List<Object>(); for (int i = 0; i < 1000; i++) { var userId = String.Format("user/{0}", i); var question1 = String.Format("user/{0}/question/{1}", i, 1); var question2 = String.Format("user/{0}/question/{1}", i, 2); var question3 = String.Format("user/{0}/question/{1}", i, 3); var commentId = String.Format("user/{0}/comment/{1}", i, 1); var voteId = String.Format("user/{0}/comment/{1}/vote/{2}", i, 1, 1); events.Add(new UserCreated(userId, "Tom", "It's me")); events.Add(new QuestionCreated(question1, userId, "Who are you?")); events.Add(new QuestionCreated(question2, userId, "And you?")); events.Add(new UserNameChanged(userId, "Super John")); events.Add(new QuestionCreated(question3, userId, "How are you?")); events.Add(new QuestionUpdated(question3, userId, "Updated question. How are you?")); events.Add(new CommentAdded(commentId, userId, question3, "My first comment!")); events.Add(new VoteAdded(voteId, commentId, userId, "Nice comment!")); events.Add(new UserNameChanged(userId, "Upgraded Tonny")); events.Add(new UserNameChanged(userId, "Final Tonny")); } // SaveEventsToFile(events); // var result = LoadEventsFromFile(); Console.WriteLine("Done. Managed memory used: {0:n0} mb.", GC.GetTotalMemory(false) / 1024 / 1024); var container = new UnityContainer(); container.RegisterInstance<UniformDatabase>(database); var dispatcher = Dispatcher.Create(builder => builder .SetServiceLocator(new UnityServiceLocator(container)) .AddHandlers(typeof(UserCreated).Assembly) ); Console.WriteLine("Regeneration started..."); var stopwatch = Stopwatch.StartNew(); for (int i = 0; i < events.Count; i++) { if (i % 100000 == 0 && i != 0) Console.WriteLine("{0:n0} events processed.", i); var evnt = events[i]; dispatcher.Dispatch(evnt); } stopwatch.Stop(); Console.WriteLine("Done in {0:n0} ms. {1:n0} events processed.", stopwatch.ElapsedMilliseconds, events.Count); Console.ReadKey(); }
public void Initialize(UniformDatabase database) { _uniformDatabase = database; }
public MyDatabase(UniformDatabase database) { _database = database; }
public void Start() { OutputWriter.WriteLine("PAQK.Reply"); OutputWriter.WriteLine("---------"); OutputWriter.WriteLine(" Events Database:"); OutputWriter.WriteLine(" {0}", Settings.MongoEventsConnectionString); OutputWriter.WriteLine(" View Database:"); OutputWriter.WriteLine(" {0}", Settings.MongoViewConnectionString); if (InputReader != null) { OutputWriter.WriteLine(); OutputWriter.WriteLine(); OutputWriter.WriteLine("Are you sure that you want to drop these databases? (type 'yes' or 'no')"); OutputWriter.WriteLine(" {0}", Settings.MongoViewConnectionString); OutputWriter.Write("> "); var answer = InputReader.ReadLine(); if (String.Compare(answer, "yes", StringComparison.OrdinalIgnoreCase) != 0) { return; } } try { BeforeReplayPreparations(); UniformDatabase.EnterInMemoryMode(); var transitions = TransitionRepository.GetTransitions(); var stopwatch = Stopwatch.StartNew(); var counter = 0; foreach (var transition in transitions) { foreach (var evnt in transition.Events) { if (++counter % 10000 == 0) { OutputWriter.WriteLine("Events #{0:n0}", counter); } DispatchAsync((IEvent)evnt.Data); } } OutputWriter.WriteLine("Waiting for dispatch completion..."); WaitForDispatchCompletion(); OutputWriter.WriteLine("Flushing..."); UniformDatabase.LeaveInMemoryMode(true); stopwatch.Stop(); OutputWriter.WriteLine("Flush completed"); var message = String.Format("Replayed in {0}. Total number of events {1:n0}", stopwatch.Elapsed.ToReadableString(), counter); logger.Info(message); OutputWriter.WriteLine(message); if (InputReader != null) { InputReader.ReadKey(); } } catch (Exception ex) { logger.Fatal(ex); OutputWriter.WriteLine(ex.Message); } }
public ViewDatabase(UniformDatabase db) { _db = db; }