So habe ich eine orient 2.0.0 db
, und ich möchte diese db
zu cosmos db
verschieben. Die Technologie, die ich verwende, ist .Net
, also kann ich Java und die anderen reicheren Fahrer nicht benutzen.
Das Hauptproblem, mit dem ich während der Migration konfrontiert bin, ist, dass mein orient-Vertex Eigenschaften enthält, die Objekte sind. Also gibt es eine Möglichkeit, Objekte als Eigenschaft mithilfe von Gremlin Abfrage in Cosmos db hinzuzufügen.
Die Beispiele auf tinkerpop doc und Azure Cosmos DB Docs für Gremlin zeigen alle nur das Hinzufügen einfacher Datentypen.Migrieren Orient Scheitelpunkt Cosmos DB mit Gremlin Abfrage
0
A
Antwort
1
Soweit ich weiß, fügen Sie Objekte als Eigenschaft wird nicht unterstützt mit gremlin Abfrage in Cosmos db derzeit.
Mein Workaroud ist, dass wir das Objekt abflachen könnten. Ich habe eine Testdemo geschrieben, Sie könnten Ihr eigenes logisches hinzufügen.
Das folgende ist mein Detail vor:
1.Erstellen ein C# Projekt und fügen Sie Microsoft.Azure.Graphs SDK, genauer siehe Abschnitt packages.config.
2.Add eine benutzerdefinierte Klasse zum Projekt
public class Custom
{
public string Type { get; set; }
public string Name { get; set; }
}
3. eine Funktion verdeckte Objekt In dem Gremlin String
public static string CovertToGremlinString(object pObject,string type)
{
var propertyList = new List<string>();
// var dic = new Dictionary<string, string>();
if (pObject == null) return null;
var jobject = JObject.FromObject(pObject);
propertyList.AddRange(pObject.GetType().GetProperties().Select(prop => prop.Name));
var s = propertyList.Aggregate($"g.addV('{type}')", (current, property) => current + $".property('{property}','{jobject[property]})')");
// dic.Add(type, s);
return s;
}
4.Add RunAsync Funktion konnten wir auch die Demo bekommen Code vom Azure-Portal
public async Task RunAsync(DocumentClient client)
{
Database database = await client.CreateDatabaseIfNotExistsAsync(new Database { Id = "graphdb" });
DocumentCollection graph = await client.CreateDocumentCollectionIfNotExistsAsync(
UriFactory.CreateDatabaseUri("graphdb"),
new DocumentCollection { Id = "Custom" },
new RequestOptions { OfferThroughput = 1000 });
// Azure Cosmos DB supports the Gremlin API for working with Graphs. Gremlin is a functional programming language composed of steps.
// Here, we run a series of Gremlin queries to show how you can add vertices, edges, modify properties, perform queries and traversals
// For additional details, see https://aka.ms/gremlin for the complete list of supported Gremlin operators
var custom = new Custom
{
Name = "Tom",
Type = "1"
};
var s = CovertToGremlinString(custom, "custom");
Dictionary<string, string> gremlinQueries = new Dictionary<string, string>
{
{"Cleanup", "g.V().drop()"},
{"AddVertex 1", s}
};
foreach (KeyValuePair<string, string> gremlinQuery in gremlinQueries)
{
Console.WriteLine($"Running {gremlinQuery.Key}: {gremlinQuery.Value}");
// The CreateGremlinQuery method extensions allow you to execute Gremlin queries and iterate
// results asychronously
IDocumentQuery<dynamic> query = client.CreateGremlinQuery<dynamic>(graph, (string) gremlinQuery.Value);
while (query.HasMoreResults)
{
foreach (dynamic result in await query.ExecuteNextAsync())
{
Console.WriteLine($"\t {JsonConvert.SerializeObject(result)}");
}
}
Console.WriteLine();
}
5.Test es auf dem lokalen.
string endpoint = ConfigurationManager.AppSettings["Endpoint"];
string authKey = ConfigurationManager.AppSettings["AuthKey"];
using (DocumentClient client = new DocumentClient(
new Uri(endpoint),
authKey,
new ConnectionPolicy { ConnectionMode = ConnectionMode.Direct, ConnectionProtocol = Protocol.Tcp }))
{
Program p = new Program();
p.RunAsync(client).Wait();
}
packages.config
<?xml version="1.0" encoding="utf-8"?>
<packages>
<package id="Microsoft.Azure.DocumentDB" version="1.14.0" targetFramework="net452" />
<package id="Microsoft.Azure.Graphs" version="0.2.0-preview" targetFramework="net452" />
<package id="Microsoft.CodeAnalysis.Analyzers" version="1.1.0" targetFramework="net452" />
<package id="Microsoft.CodeAnalysis.Common" version="1.3.0" targetFramework="net452" />
<package id="Microsoft.CodeAnalysis.CSharp" version="1.3.0" targetFramework="net452" />
<package id="Newtonsoft.Json" version="6.0.8" targetFramework="net452" />
<package id="System.Collections" version="4.0.0" targetFramework="net452" />
<package id="System.Collections.Immutable" version="1.1.37" targetFramework="net452" />
<package id="System.Diagnostics.Debug" version="4.0.0" targetFramework="net452" />
<package id="System.Globalization" version="4.0.0" targetFramework="net452" />
<package id="System.Linq" version="4.0.0" targetFramework="net452" />
<package id="System.Reflection.Metadata" version="1.2.0" targetFramework="net452" />
<package id="System.Resources.ResourceManager" version="4.0.0" targetFramework="net452" />
<package id="System.Runtime" version="4.0.0" targetFramework="net452" />
<package id="System.Runtime.Extensions" version="4.0.0" targetFramework="net452" />
<package id="System.Threading" version="4.0.0" targetFramework="net452" />
</packages>
Verwandte Themen
- 1. Orient-db-Sequenz erzeugen
- 2. Fehler beim Migrieren von Orient-DB 1.1 auf 2.2
- 3. CosmosDB Graph: Wie aktualisiert Scheitelpunkt mit Eigenschaft mit mehreren Werten mit Gremlin?
- 4. Vererbungsmodell in Orient Db
- 5. orient db create Vertex
- 6. Graph Traversal Performance von Azure Cosmos DB
- 7. Verschachtelte Traversal Gremlin Abfrage für Titan db
- 8. Cosmos DB Abfrage Rückkehrpunkte außerhalb des Polygons mit ST_Within
- 9. MongoDB.Driver mit Cosmos DB Array-Suchen
- 10. Orient db: kippe create index
- 11. Beschleunigen Grafikeditor in Orient-DB
- 12. Visualizer für Cosmos DB Graph
- 13. rails db: migrieren vs rake db: migrieren
- 14. Getting 404 auf Powershell-Abfrage von Cosmos DB
- 15. Kann nicht zurückgesetzt orient-db Passwort
- 16. Unterstützt Azure Cosmos DB - Mongo-API-Aggregation
- 17. Azure Cosmos DB Tabelle API - LISTE Generisch
- 18. DocumentDB vs Cosmos DB - Sind beide gleich?
- 19. Wie werden Daten in azure Dokument db (Cosmos DB) gespeichert
- 20. cosmos db api für mongo db einstellungsproblem für einige befehle
- 21. Wie Einfügen von Daten in eingebettete Map in Orient-DB?
- 22. Gremlin Abfrage zu Kante mit Eigenschaft kombinieren
- 23. Intersect Abfrage für tinkerpop3 Gremlin
- 24. Gremlin Grafik Abfrage für Java
- 25. Gremlin Abfrage CSV-Datei mit ausgewählten Spalte laden
- 26. Verschiedene Upsert Verhalten auf Cosmos DB vs MongoDB
- 27. Gremlin Server Abfrage zum Hinzufügen von Rand
- 28. Odd Rake db: migrieren Ausgabe
- 29. Rake oder Rails db: migrieren
- 30. Wie Scheitelpunkte basierend auf Kanten mit Gremlin/IBM Graph auszuschließen
Danke für die Information, ich wusste nicht, dass Objekte nicht unterstützt wurden. Ich werde versuchen, Ihren Tipp zu verwenden, wenn wir uns dafür entscheiden, weiterhin zu Cosmos db zu migrieren. –