static void Main() { var shards = new Shards { new DocumentStore {Url = "http://localhost:8080", Identifier = "Posts"}, new DocumentStore { Url = "http://localhost:8081", Identifier = "Users", Conventions = {DocumentKeyGenerator = user => "users/" + ((User) user).Name} } }; var shardStrategy = new ShardStrategy { ShardAccessStrategy = new ParallelShardAccessStrategy(), ShardSelectionStrategy = new BlogShardSelectionStrategy(), ShardResolutionStrategy = new BlogShardResolutionStrategy() }; using (var documentStore = new ShardedDocumentStore(shardStrategy, shards).Initialize()) { var posts = shards[0].DatabaseCommands.StartsWith("post", 0, 50); foreach (var post in posts) shards[0].DatabaseCommands.Delete(post.Key, post.Etag); var users = shards[1].DatabaseCommands.StartsWith("user", 0, 50); foreach (var user in users) shards[1].DatabaseCommands.Delete(user.Key, user.Etag); } }
static void Main() { var shards = new Shards { new DocumentStore {Url = "http://localhost:8080", Identifier = "Posts"}, new DocumentStore { Url = "http://localhost:8081", Identifier = "Users", Conventions = {DocumentKeyGenerator = user => "users/" + ((User) user).Name} } }; var shardStrategy = new ShardStrategy { ShardAccessStrategy = new ParallelShardAccessStrategy(), ShardSelectionStrategy = new BlogShardSelectionStrategy(), ShardResolutionStrategy = new BlogShardResolutionStrategy() }; using (var documentStore = new ShardedDocumentStore(shardStrategy, shards).Initialize()) { using (var session = documentStore.OpenSession()) { var user = new User { Name = "PastyGeek" }; session.Store(user); session.SaveChanges(); var post = new Post { AuthorId = user.Id, Name = user.Name, BlogId = "blogs/1", Title = "More CodeMash Gloating!", Body = "You wouldn't believe how much more fun I'm having than you!", PostDate = DateTime.Now, Tags = new List<string> { "codemash", "gloating" } }; session.Store(post); session.SaveChanges(); } } }
static void Main() { var consoleAppender = new ConsoleAppender { Layout = new SimpleLayout(), }; consoleAppender.AddFilter(new LoggerMatchFilter { AcceptOnMatch = true, LoggerToMatch = "Raven.Client" }); consoleAppender.AddFilter(new DenyAllFilter()); BasicConfigurator.Configure(consoleAppender); // start 5 instances of Raven's servers Console.WriteLine("Starting..."); DeleteDirectories("Users", "Blogs", "Posts.1", "Posts.2", "Posts.3"); var ravenDbServers = StartServers(); Console.WriteLine("All servers started..."); var shards = new Shards { new DocumentStore { Identifier = "Users", Url = "http://*****:*****@ Rahien" }; session.Store(user); session.Store(blog); // we have to save to Raven to get the generated id for the blog instance session.SaveChanges(); var posts = new List<Post>(); for (var i = 0; i < 6; i++) { var post = new Post { BlogId = blog.Id, UserId = user.Id, Content = "Just a post", Title = "Post #" + (i + 1) }; posts.Add(post); session.Store(post); } session.SaveChanges(); } // queries using (var session = documentStore.OpenSession()) { session.LuceneQuery<User>().WaitForNonStaleResults().ToArray(); session.LuceneQuery<Blog>().WaitForNonStaleResults().ToArray(); session.LuceneQuery<Post>().WaitForNonStaleResults().ToArray(); } // loading using (var session = documentStore.OpenSession()) { session.Load<User>("users/ayende"); session.Load<Blog>("blogs/1"); session.Load<Post>("posts/1/2"); session.Load<Post>("posts/2/2"); } documentStore.Dispose(); foreach (var server in ravenDbServers) { server.Dispose(); } }