LINQ
03/02/2023
Apache Ignite.NET LINQ Provider
Apache Ignite.NET, Ignite SQL API'leri ile entegre bir LINQ saฤlayฤฑcฤฑsฤฑ iรงerir. Doฤrudan SQL sรถzdizimi ile uฤraลmaktan kurtulabilir ve LINQ ile C# dilinde sorgular yazabilirsiniz. Ignite LINQ saฤlayฤฑcฤฑsฤฑ, daฤฤฑtฤฑk joinler, gruplandฤฑrmalar, toplamalar, sฤฑralama ve daha fazlasฤฑ dahil olmak รผzere ANSI-99 SQL'in tรผm รถzelliklerini destekler.
Installation
Ignite binary daฤฤฑtฤฑmฤฑnฤฑ kullanฤฑyorsanฤฑz:
Apache.Ignite.Linq.dlldosyasฤฑna bir referans ekleyinNuGet kullanฤฑyorsanฤฑz:
Install-Package Apache.Ignite.Linq
Configuration
SQL dizinlerinin normal SQL sorgularฤฑyla aynฤฑ ลekilde yapฤฑlandฤฑrฤฑlmasฤฑ gerekir, ayrฤฑntฤฑlar iรงin Definin Indexes bรถlรผmรผne bakฤฑn.
Usage
Apache.Ignite.Linq.CacheLinqExtensions sฤฑnฤฑfฤฑ, LINQ saฤlayฤฑcฤฑsฤฑ iรงin bir giriล noktasฤฑdฤฑr. AsCacheQueryable yรถntemini รงaฤฤฑrarak bir Ignite cacheโi รผzerinden sorgulanabilir bir instance edinin ve รผzerinde LINQ kullanฤฑn:
ICache<EmployeeKey, Employee> employeeCache = ignite.GetCache<EmployeeKey, Employee>(CacheName);
IQueryable<ICacheEntry<EmployeeKey, Employee>> queryable = cache.AsCacheQueryable();
Employee[] interns = queryable.Where(emp => emp.Value.IsIntern).ToArray();LINQ'yu
AsCacheQueryable()รถฤesini รงaฤฤฑrmadan doฤrudan cache instanceโฤฑnda kullanabilirsiniz. Ancak bu, tรผm cache veri kรผmesini local olarak getiren ve iลleyen, รงok verimsiz olan LINQ to Objects sorgusuyla sonuรงlanacaktฤฑr.
Introspection
Ignite LINQ saฤlayฤฑcฤฑsฤฑ, aslฤฑnda ICache.QueryFields kullanฤฑr. Expressionlarฤฑ gerรงekleลtirmeden รถnce herhangi bir noktada (ToList, ToArray, vb.) IQueryable'ฤฑ ICacheQueryable'a รงevirerek รผretilen SqlFieldsQuery'i inceleyebilirsiniz:
Projections
Basit Where sorgularฤฑ ICacheEntry nesneleri รผzerinde รงalฤฑลฤฑr. Key, Value veya Key ve Value alanlarฤฑndan herhangi birini ayrฤฑ ayrฤฑ seรงebilirsiniz. Anonim tรผrler kullanฤฑlarak birden รงok alan seรงilebilir.
Compiled Queries
LINQ saฤlayฤฑcฤฑsฤฑ, expression parsing ve SQL generationโun neden olduฤu belirli ek yรผke neden olur. Sฤฑk kullanฤฑlan sorgular iรงin bu ek yรผkรผ ortadan kaldฤฑrmak isteyebilirsiniz.
Apache.Ignite.Linq.CompiledQuery sฤฑnฤฑfฤฑ, sorgu derlemesini destekler. Derlenmiล sorguyu temsil edecek yeni bir delegate oluลturmak iรงin Compile methodunu รงaฤฤฑrฤฑn. Tรผm sorgu parametreleri, delegate parametrelerinde olmalฤฑdฤฑr.
Compilde Query Performance Benchmark;
Joins
LINQ saฤlayฤฑcฤฑsฤฑ, birkaรง cacheโe/tabloya ve nodeโa yayฤฑlan JOIN'leri destekler.
Contains
ICollection.Contains desteklenir ve bu, bir Idโye gรถre veri almak istediฤimizde yararlฤฑdฤฑr, รถrneฤin:
Bu sorgu โฆ where Id IN (?, ?, ?) komutuna รงevrilir. Ancak, deฤiลken argรผman numarasฤฑ nedeniyle bu formun compiled querylerde kullanฤฑlamayacaฤฤฑnฤฑ unutmayฤฑn. Daha iyi bir alternatif, ids listesinde Join kullanmaktฤฑr:
Bu LINQ sorgusu geรงici bir tablo birleลimine รงevrilir: select _T0._KEY, _T0._VAL from "person".Person as _T0 inner join table (F0 int = ?) _T1 on (_T1.F0 = _T0.ID) ve tek bir array parametresine sahiptir, bรถylece plan dรผzgรผn bir ลekilde cacheโe alฤฑnabilir ve compiled querylerde de izin verilir.
Supported SQL Functions
Aลaฤฤฑda, Ignite LINQ saฤlayฤฑcฤฑsฤฑ tarafฤฑndan desteklenen .NET methodlarฤฑnฤฑn ve bunlarฤฑn SQL eลdeฤerlerinin bir listesi bulunmaktadฤฑr.
String.ToLower
LOWER
String.ToUpper
UPPER
String.StartsWith("foo")
LIKE 'foo%'
String.EndsWith("foo")
LIKE '%foo'
String.Contains("foo")
LIKE '%foo%'
String.IndexOf("abc")
INSTR(MyField, 'abc') - 1
String.IndexOf("abc", 3)
INSTR(MyField, 'abc', 3) - 1
String.Substring("abc", 4)
SUBSTRING(MyField, 4 + 1)
String.Substring("abc", 4, 7)
SUBSTRING(MyField, 4 + 1, 7)
String.Trim()
TRIM
String.TrimStart()
LTRIM
String.TrimEnd()
RTRIM
String.Trim('x')
TRIM(MyField, 'x')
String.TrimStart('x')
LTRIM(MyField, 'x')
String.TrimEnd('x')
RTRIM(MyField, 'x')
String.Replace
REPLACE
String.PadLeft
LPAD
String.PadRight
RPAD
Regex.Replace
REGEXP_REPLACE
Regex.IsMatch
REGEXP_LIKE
Math.Abs
ABS
Math.Acos
ACOS
Math.Asin
ASIN
Math.Atan
ATAN
Math.Atan2
ATAN2
Math.Ceiling
CEILING
Math.Cos
COS
Math.Cosh
COSH
Math.Exp
EXP
Math.Floor
FLOOR
Math.Log
LOG
Math.Log10
LOG10
Math.Pow
POWER
Math.Round
ROUND
Math.Sign
SIGN
Math.Sin
SIN
Math.Sinh
SINH
Math.Sqrt
SQRT
Math.Tan
TAN
Math.Tanh
TANH
Math.Truncate
TRUNCATE
DateTime.Year
YEAR
DateTime.Month
MONTH
DateTime.Day
DAY_OF_MONTH
DateTime.DayOfYear
DAY_OF_YEAR
DateTime.DayOfWeek
DAY_OF_WEEK - 1
DateTime.Hour
HOUR
DateTime.Minute
MINUTE
DateTime.Second
SECOND
Last updated
Was this helpful?