Last active
August 29, 2015 14:09
-
-
Save moaschterle/35137a8148ae2b27bfb5 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
using Raven.Client; | |
using Raven.Client.Document; | |
using System; | |
using System.Collections.Generic; | |
using System.Linq; | |
using System.Text; | |
using System.Threading.Tasks; | |
using System.Globalization; | |
using System.Net.Http; | |
using System.IO; | |
using Raven.Client.Indexes; | |
using Raven.Abstractions.Indexing; | |
using System.Xml.Linq; | |
using System.Collections; | |
using Combinatorics.Collections; | |
using System.Diagnostics; | |
using Raven.Client.Linq; | |
using MongoDB.Bson; | |
using MongoDB.Driver; | |
using MongoDB.Driver.Builders; | |
using MongoDB.Driver.Linq; | |
namespace AngularCRUDConsole | |
{ | |
class Program | |
{ | |
static void Main(string[] args) | |
{ | |
string command = ""; | |
do | |
{ | |
Console.WriteLine("--------Performance---------"); | |
Console.WriteLine("writetoMongo"); | |
Console.WriteLine("writetoRaven"); | |
Console.WriteLine("writetoRavenBulk"); | |
Console.WriteLine("readfromMongo"); | |
Console.WriteLine("readfromRaven"); | |
Console.WriteLine("readfromRavenAsync"); | |
Console.WriteLine("readfromMongoAll"); | |
Console.WriteLine("readfromRavenAll"); | |
Console.WriteLine("testrandommongo"); | |
command = Console.ReadLine(); | |
switch (command) | |
{ | |
case "exporttoMongoDB": | |
ExportToMongoDB(); | |
break; | |
case "createMongoIndex": | |
CreateMongoIndex(); | |
break; | |
case "createRavenIndex": | |
CreateRavenIndex(); | |
break; | |
case "queryMongoIndex": | |
QueryMongoIndex(); | |
break; | |
case "writetoMongo": | |
WriteToMongo(); | |
break; | |
case "writetoRaven": | |
WriteToRaven(); | |
break; | |
case "writetoRavenBulk": | |
WriteToRavenBulk(); | |
break; | |
case "readfromMongo": | |
ReadfromMongo(); | |
break; | |
case "readfromRaven": | |
ReadfromRaven(); | |
break; | |
case "readfromRavenAsync": | |
ReadfromRavenAsync(); | |
break; | |
case "readfromMongoAll": | |
ReadfromMongoAll(); | |
break; | |
case "readfromRavenAll": | |
ReadfromRavenAll(); | |
break; | |
case "testrandommongo": | |
RandomQueryMongo(); | |
break; | |
} | |
Console.ReadLine(); | |
} | |
while (command != "exit"); | |
} | |
private static void CreateMongoIndex() | |
{ | |
var connectionString = "mongodb://localhost"; | |
var client = new MongoClient(connectionString); | |
var server = client.GetServer(); | |
var database = server.GetDatabase("Mischkultur"); | |
var mycollection = database.GetCollection<Pflanze>("Pflanzen"); | |
//mycollection.CreateIndex(IndexKeys<Hamster>.Ascending(_ => _.Name)); | |
mycollection.EnsureIndex(new IndexKeysBuilder().Ascending("Name","Familie")); | |
var mycollection2 = database.GetCollection<TestObject>("TestObject"); | |
//mycollection.CreateIndex(IndexKeys<Hamster>.Ascending(_ => _.Name)); | |
mycollection2.EnsureIndex(new IndexKeysBuilder().Ascending("Name", "RandomZahl")); | |
} | |
private static void CreateRavenIndex() | |
{ | |
var documentStore = InitializeDocumentStore(); | |
// Create an index where we search based on a post title | |
documentStore.DatabaseCommands.PutIndex("GetbyNameandRandom", | |
new IndexDefinitionBuilder<TestObject> | |
{ | |
Map = testobjects => from testobject in testobjects | |
select new { | |
testobject.Name, | |
testobject.RandomZahl | |
} | |
}); | |
} | |
private static void QueryMongoIndex() | |
{ | |
Stopwatch timePerParse; | |
var connectionString = "mongodb://localhost"; | |
var client = new MongoClient(connectionString); | |
var server = client.GetServer(); | |
var database = server.GetDatabase("Mischkultur"); | |
var collection = database.GetCollection<Pflanze>("Pflanzen"); | |
timePerParse = Stopwatch.StartNew(); | |
var query = Query.EQ("Familie", "Kreuzblütler"); | |
var results = collection.Find(query); | |
timePerParse.Stop(); | |
var elapsed = timePerParse.ElapsedTicks; | |
Console.WriteLine(results.Count() + " Elapsed Time:" + elapsed); | |
} | |
private static void RandomQueryMongo() | |
{ | |
Stopwatch timePerParse; | |
var connectionString = "mongodb://localhost"; | |
var client = new MongoClient(connectionString); | |
var server = client.GetServer(); | |
var database = server.GetDatabase("Mischkultur"); | |
var collection = database.GetCollection<TestObject>("TestObject"); | |
timePerParse = Stopwatch.StartNew(); | |
var random = new Random(1000); | |
int randomvalue = random.Next(); | |
var resultcount = (from e in collection.AsQueryable<TestObject>() | |
select e).Count(); | |
//Random Sort isch schwierig.... | |
//Random magari auf | |
var results = (from e in collection.AsQueryable<TestObject>() | |
//where e.RandomZahl > randomvalue | |
orderby e.RandomZahl > 500 | |
select e) | |
.Skip(1000) | |
.Take(1000) | |
.ToList(); | |
timePerParse.Stop(); | |
var elapsed = timePerParse.ElapsedMilliseconds; | |
Console.WriteLine("Total:" + resultcount + " Taken Items: " + results.Count() + " Elapsed Time:" + elapsed); | |
} | |
#region PerformanceTest | |
private static void WriteToMongo() | |
{ | |
Stopwatch timePerParse; | |
var connectionString = "mongodb://localhost"; | |
var client = new MongoClient(connectionString); | |
var server = client.GetServer(); | |
var database = server.GetDatabase("Mischkultur"); | |
var collectiontestobject = database.CreateCollection("TestObject"); | |
var collection = database.GetCollection<TestObject>("TestObject"); | |
timePerParse = Stopwatch.StartNew(); | |
var myrandom = new Random(); | |
for (int i = 0; i < 20000; i++) | |
{ | |
var mytest = new TestObject(); | |
mytest.Id = System.Guid.NewGuid().ToString(); | |
mytest.Name = "Objekt" + i.ToString(); | |
mytest.RandomZahl = myrandom.Next(1000); | |
collection.Insert(mytest); | |
} | |
timePerParse.Stop(); | |
var elapsed = timePerParse.ElapsedMilliseconds; | |
Console.WriteLine("MongoDB 3000 Records insert Elapsed Time:" + elapsed); | |
} | |
private static void WriteToRaven() | |
{ | |
Stopwatch timePerParse; | |
var documentStore = InitializeDocumentStore(); | |
timePerParse = Stopwatch.StartNew(); | |
var myrandom = new Random(); | |
for (int i = 0; i < 20000; i++) | |
{ | |
using (var session = documentStore.OpenSession()) | |
{ | |
var mytest = new TestObject(); | |
mytest.Id = System.Guid.NewGuid().ToString(); | |
mytest.Name = "Objekt" + i.ToString(); | |
mytest.RandomZahl = myrandom.Next(1000); | |
session.Store(mytest); | |
session.SaveChanges(); | |
} | |
} | |
timePerParse.Stop(); | |
var elapsed = timePerParse.ElapsedMilliseconds; | |
Console.WriteLine("RavenDB 3000 Records insert Elapsed Time:" + elapsed); | |
} | |
private static void WriteToRavenBulk() | |
{ | |
Stopwatch timePerParse; | |
var documentStore = InitializeDocumentStore(); | |
timePerParse = Stopwatch.StartNew(); | |
using (var bulkInsert = documentStore.BulkInsert()) | |
{ | |
var myrandom = new Random(); | |
for (int i = 0; i < 20000; i++) | |
{ | |
var mytest = new TestObject(); | |
mytest.Id = System.Guid.NewGuid().ToString(); | |
mytest.Name = "Objekt" + i.ToString(); | |
mytest.RandomZahl = myrandom.Next(1000); | |
bulkInsert.Store(mytest); | |
} | |
} | |
timePerParse.Stop(); | |
var elapsed = timePerParse.ElapsedMilliseconds; | |
Console.WriteLine("RavenDB 3000 Records BulkInsert insert Elapsed Time:" + elapsed); | |
} | |
private static void ReadfromMongo() | |
{ | |
Stopwatch timePerParse; | |
var connectionString = "mongodb://localhost"; | |
var client = new MongoClient(connectionString); | |
var server = client.GetServer(); | |
var database = server.GetDatabase("Mischkultur"); | |
var collection = database.GetCollection<TestObject>("TestObject"); | |
timePerParse = Stopwatch.StartNew(); | |
//var query = Query.EQ("Familie", "Kreuzblütler"); | |
var results = (from e in collection.AsQueryable<TestObject>() | |
where e.RandomZahl > 500 | |
orderby e.Name descending | |
select e) | |
.Take(1000) | |
.ToList(); | |
timePerParse.Stop(); | |
var elapsed = timePerParse.ElapsedMilliseconds; | |
Console.WriteLine(results.Count() + " Elapsed Time:" + elapsed); | |
} | |
private static void ReadfromMongoAll() | |
{ | |
Stopwatch timePerParse; | |
var connectionString = "mongodb://localhost"; | |
var client = new MongoClient(connectionString); | |
var server = client.GetServer(); | |
var database = server.GetDatabase("Mischkultur"); | |
var collection = database.GetCollection<TestObject>("TestObject"); | |
timePerParse = Stopwatch.StartNew(); | |
//var query = Query.EQ("Familie", "Kreuzblütler"); | |
var results = (from e in collection.AsQueryable<TestObject>() | |
where e.RandomZahl > 500 | |
orderby e.Name descending | |
select e) | |
.ToList(); | |
timePerParse.Stop(); | |
var elapsed = timePerParse.ElapsedMilliseconds; | |
Console.WriteLine(results.Count() + " Elapsed Time:" + elapsed); | |
} | |
private static void ReadfromRaven() | |
{ | |
Stopwatch timePerParse; | |
var documentStore = InitializeDocumentStore(); | |
using (var session = documentStore.OpenSession()) | |
{ | |
timePerParse = Stopwatch.StartNew(); | |
//var query = Query.EQ("Familie", "Kreuzblütler"); | |
var results = (from e in session.Query<TestObject>("GetbyNameandRandom") | |
where e.RandomZahl > 500 | |
orderby e.Name descending | |
select e) | |
.Take(1000) | |
.ToList(); | |
timePerParse.Stop(); | |
var elapsed = timePerParse.ElapsedMilliseconds; | |
Console.WriteLine(results.Count() + " Elapsed Time:" + elapsed); | |
} | |
} | |
private async static void ReadfromRavenAsync() | |
{ | |
Stopwatch timePerParse; | |
var documentStore = InitializeDocumentStore(); | |
using (var session = documentStore.OpenAsyncSession()) | |
{ | |
timePerParse = Stopwatch.StartNew(); | |
//var query = Query.EQ("Familie", "Kreuzblütler"); | |
var results = await (from e in session.Query<TestObject>("GetbyNameandRandom") | |
where e.RandomZahl > 500 | |
orderby e.Name descending | |
select e) | |
.Take(1000) | |
.ToListAsync(); | |
timePerParse.Stop(); | |
var elapsed = timePerParse.ElapsedMilliseconds; | |
Console.WriteLine(results.Count() + " Elapsed Time:" + elapsed); | |
} | |
} | |
private static void ReadfromRavenAll() | |
{ | |
Stopwatch timePerParse; | |
var documentStore = InitializeDocumentStore(); | |
using (var session = documentStore.OpenSession()) | |
{ | |
timePerParse = Stopwatch.StartNew(); | |
var query = session.Query<TestObject>("GetbyNameandRandom") | |
.Where(x => x.RandomZahl > 500) | |
.OrderByDescending(x => x.RandomZahl); | |
var results = new List<TestObject>(); | |
using (var enumerator = session.Advanced.Stream(query)) | |
{ | |
while (enumerator.MoveNext()) | |
{ | |
results.Add(enumerator.Current.Document); | |
} | |
} | |
timePerParse.Stop(); | |
var elapsed = timePerParse.ElapsedMilliseconds; | |
Console.WriteLine(results.Count() + " Elapsed Time:" + elapsed); | |
} | |
} | |
#endregion | |
#region CustomMethods | |
private static string xmldir = "../../xml/"; | |
private static CultureInfo myculture = new CultureInfo("en"); | |
private static void ExportToMongoDB() | |
{ | |
var connectionString = "mongodb://localhost"; | |
var client = new MongoClient(connectionString); | |
var server = client.GetServer(); | |
var database = server.GetDatabase("Mischkultur"); | |
var documentStore = InitializeDocumentStore(); | |
using (var session = documentStore.OpenSession()) | |
{ | |
//Pflonzenfamilien | |
Console.WriteLine("Importing Pflanzenfamilien"); | |
var mypflanzenfamilien = session.Query<Familie>(); | |
//var collection = database.CreateCollection("PflanzenFamilie"); | |
var mycollection = database.GetCollection<Familie>("PflanzenFamilie"); | |
foreach (var familie in mypflanzenfamilien) | |
{ | |
mycollection.Insert(familie); | |
Console.WriteLine(familie.Id + " " + familie.Name + " written"); | |
} | |
//Pflonzn | |
Console.WriteLine("Importing Pflanzen"); | |
var mypflanzen = session.Query<Pflanze>(); | |
//var collection2 = database.CreateCollection("Pflanzen"); | |
var mycollection2 = database.GetCollection<Pflanze>("Pflanzen"); | |
foreach (var pflanze in mypflanzen) | |
{ | |
mycollection2.Insert(pflanze); | |
Console.WriteLine(pflanze.Id + " " + pflanze.Name + " written"); | |
} | |
//Garten | |
Console.WriteLine("Importing Pflanzen"); | |
var mygarten = session.Query<Garten>(); | |
//var collectiongarten = database.CreateCollection("Garten"); | |
var mycollectiongarten = database.GetCollection<Garten>("Garten"); | |
foreach (var garten in mygarten) | |
{ | |
mycollectiongarten.Insert(garten); | |
Console.WriteLine(garten.Id + " " + garten.Name + " written"); | |
} | |
} | |
} | |
private static IDocumentStore InitializeDocumentStore() | |
{ | |
var documentStore = new DocumentStore | |
{ | |
Url = "http://localhost:8080", | |
DefaultDatabase = "TestDB" | |
}; | |
documentStore.Initialize(); | |
return documentStore; | |
} | |
} | |
public class TestObject | |
{ | |
public string Id { get; set; } | |
public string Name { get; set; } | |
public int RandomZahl { get; set; } | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment