Skip to content

Instantly share code, notes, and snippets.

@moaschterle
Last active August 29, 2015 14:09
Show Gist options
  • Save moaschterle/35137a8148ae2b27bfb5 to your computer and use it in GitHub Desktop.
Save moaschterle/35137a8148ae2b27bfb5 to your computer and use it in GitHub Desktop.
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