برنامه نویسی

معرفی RASHDB: پایگاه داده فوری-کنفرانس صفر برای برنامه های مدرن و دوره AI

در چشم انداز توسعه سریع امروز ، مدیریت بانکهای اطلاعاتی نباید شما را کند کند. رفیق است پایگاه داده فوری فوری صفر ، نمودار طراحی شده برای ساده کردن مصرف داده ها ، عادی سازی و پرس و جو. ساخته شده برای برنامه های مدرن ، AI و گردش کار DS/ML، این کار با استفاده از طرحواره های اتوماتیک ، انطباق اسید و یک تجربه توسعه دهنده یکپارچه را ارائه می دهد.

طرح های سفت و سخت و فهرست بندی دستی را فراموش کنید – RushDB به شما امکان می دهد RAW JSON یا CSV را فشار دهید، به طور خودکار روابط را ساختار می دهد ، و نمایش داده ها را بهینه می کند در پروازبشر این که آیا شما در حال ساختن SaaS ، مدل های هوش مصنوعی یا برنامه های داده در مقیاس بزرگ هستید ، RASHDB گردش کار شما را تسریع می کند تا بتوانید روی نوآوری تمرکز کنید ، نه زیرساخت.

tldrl ؛

مخزن جیتاب

صفحه اصلی – RushDB.com

برنامه آزمایشی

اسناد

چرا RASHDB؟

پایگاه داده های سنتی تیم های کند با راه اندازی پیچیده ، طرحواره های سفت و سخت و بهینه سازی دستی. ما دست اول دیده ایم که چگونه مدیریت داده ها اصطکاک غیر ضروری ایجاد می کند ، توسعه ویژگی ها را به تأخیر می اندازد و مهندسان را وادار می کند به جای حمل محصولات عالی ، با زیرساخت ها کشتی بگیرند.

Rushdb این موانع را به طور کامل با ترکیب بهترین های هر دو جهان برطرف می کند – آزادی نوشتن داده ها مانند MongoDB و مسطح ساختار یافته SQL. این نرم افزار عادی سازی داده ها را خودکار می کند ، نمایش داده ها را در پرواز بهینه می کند و نیاز به فهرست بندی دستی یا طراحی طرحواره را از بین می برد. نتیجه؟ یک تجربه توسعه دهنده بدون اصطکاک که به شما امکان می دهد بدون اینکه در عملیات پایگاه داده گیر بیفتید ، روی ساخت ، مقیاس گذاری و ارائه ارزش تمرکز کنید.

چگونه RushDB بهره وری توسعه دهنده را باز می کند

  • پیکربندی صفر – فقط هر JSON یا CSV را فشار دهید. RASHDB به طور خودکار انواع ، نرمال کردن داده ها و روابط برچسب ها – همه در پرواز را پیشنهاد می کند.
  • ذخیره سازی با نمودار – به طور خودکار روابط بین داده ها را ساختار می دهد.
  • معاملات اسیدی – قوام و قابلیت اطمینان را تضمین می کند.
  • پرس و جو قدرتمند و در عین حال ساده – RASHDB شکاف بین نحوه درک داده ها و نحوه پرس و جو از آن را از بین می برد ، و باعث ایجاد بدون اصطکاک و طبیعی بازیابی داده می شود – بنابراین می توانید روی محصولات حمل و نقل تمرکز کنید ، نه نحو.
  • خود میزبان یا ابر – در هر جایی با سهولت مستقر شوید ، یا Cloud RushDB را انتخاب کنید. ساختمان را در کمتر از 30 ثانیه شروع کنید.
  • DX مانند SDK حتی برای REST API – از یک تجربه توسعه دهنده یکپارچه با یک API بصری و ساختاری که مانند SDK احساس می شود ، لذت ببرید و دیگ بخار و پیچیدگی را به حداقل برساند.

موارد استفاده

SaaS و برنامه ها

RASHDB برای برنامه های مدرن SaaS که نیاز دارد مناسب است مصرف سریع ، طرح کمتری و پرس و جوبشر

تحقیقات AI و ML

با آن دارای نمودار نمودار ساختار ، RASHDB کار با مجموعه داده های بهم پیوسته را ساده می کند و آن را برای ایده آل می کند برنامه های کاربردی AIبشر

موتورهای IoT و جستجو

RASHDB به طور کارآمد ذخیره و بازیابی می کند داده های IoT در مقیاس بزرگ وت محتوای قابل جستجو با نمایه سازی داخلی.

ویژگی های کلیدی

1. داده های JSON ، JSONB و CSV را می پذیرد

RASHDB به توسعه دهندگان اجازه می دهد تا بدون نگرانی در مورد تعاریف طرحواره ، داده های RAW JSON یا CSV را تحت فشار قرار دهند. رفیق به طور خودکار داده ها را عادی می کند و آن را به عنوان یک نمودار ساختار می دهد ، و نمایش داده ها را سریع و بصری می کند.

ضبط ایجاد کنید

پایتون:

from rushdb import RushDB

db = RushDB("API_TOKEN")

data = {
    "name": "Google LLC",
    "address": "1600 Amphitheatre Parkway, Mountain View, CA 94043, USA",
    "foundedAt": "1998-09-04T00:00:00.000Z",
    "rating": 4.9
}

record = db.records.create("COMPANY", data)
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

Typescript:

const db = new RushDB('API_TOKEN');

const data = {
    name: 'Google LLC',
    address: '1600 Amphitheatre Parkway, Mountain View, CA 94043, USA',
    foundedAt: '1998-09-04T00:00:00.000Z',
    rating: 4.9
}

const record = await db.records.create("COMPANY", data)
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

سوابق پرس و جو

پایتون:

query = {
    "labels": ["COMPANY"],
    "where": {
        "name": {"$contains": "Goog"},
        "rating": {"$gte": 4}
    }
}

records = db.records.find(query)
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

Typescript:

const records = await db.records.find({
    labels: ['COMPANY'],
    where: {
        name: { $contains: 'Goog' },
        rating: { $gte : 4 }
    }
})
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

در اسناد بیشتر بدانید

2. عادی سازی داده های خودکار و استنباط نوع

RASHDB داده های ورودی خام را می گیرد و به طور خودکار آن را ساختار می دهد به یک نمودار متصل ، امکان ناوبری یکپارچه در روابط را فراهم می کند.

به عنوان مثال داده های JSON

/* ORDER */
{
  "total": 109.98,                           <-- PROPERTY total:`number`
  "status": "processing",                    <-- PROPERTY status:`string`
  "placedAt": "2025-02-15T09:35:26+00:00",   <-- PROPERTY placedAt:`datatime`
  "SHIPPING": {                              <-- RECORD :SHIPPING
    "address": "123 Main St, City, Country", <-- PROPERTY address:`string`
    "method": "express",                     <-- PROPERTY method:`string`
    "cost": 9.99                             <-- PROPERTY cost:`number`
  }
}
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

بار بالاتر به طور خودکار به صورت جداگانه عادی می شود مسطح سوابق. و رابطه بین سفارش و حمل و نقل به صورت خودکار ایجاد می شود.

در اسناد بیشتر بدانید

3. روابط

RASHDB به طور خودکار روابط بین سوابق را بر اساس ورودی JSON ایجاد می کند ، که در سوابق مسطح جداگانه نرمال می شود.

با این حال ، ایجاد روابط محدود به بارگیری داده ها نیست. همچنین می توانید روابط بین سوابق موجود برقرار کنید و ابزاری قدرتمند برای اضافه کردن معنی بیشتر به داده های خود فراهم کنید.

مدیریت روابط:
پایتون:

project = db.records.create(
    "PROJECT", {"name": "Secret Project", "budget": 1000000}
)

employee = db.records.create(
    "EMPLOYEE", {"name": "Nikola Tesla"}
)

options = RelationshipOptions(type="HAS_EMPLOYEE")

# create Relationship
project.attach(employee, options)

# delete Relationship
project.detach(employee)
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

Typescript:

const project = await db.records.create('PROJECT', {
    name: 'Secret Project',
    budget: 1000000
})

const employee = await db.records.create('EMPLOYEE', {
    name: 'Nikola Tesla'
})

// create Relationship
await project.attach(employee, { type: 'HAS_EMPLOYEE' })

// delete Relationship
await project.detach(employee)
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

در اسناد بیشتر بدانید

4. پرس و جو باهوش تر ، سخت تر نیست

با زحمت دقیقاً آنچه را که شما نیاز دارید پیدا کنید. با عادی سازی داده های خودکار ، در پرواز ، می توانید داده های پیچیده و عمیق به هم پیوسته را بدون راه حل و یا سربار غیر ضروری-فقط دسترسی روشن و بصری به داده های خود پرس و جو کنید.

نمونه

پایتون:

db.records.find(
    {
        "labels": ["COMPANY"],
        "where": {
            "stage": "seed",
            "address": {"$contains": "USA"},
            "foundedAt": {"$lte": {"$year": 2000}},
            "rating": {
                "$or": [{"$lt": 2.5}, {"$gte": 4.5}]
            },
            "EMPLOYEE": {
                "$relation": {"type": "HIRED", "direction": "out"},
                "$alias": "$employee",
                "salary": {
                    "$gte": 500_000
                }
            },
        },
        "aggregate": {
            "employees": {
                "fn": "collect",
                "alias": "$employee",
                "limit": 10
            }
        },
        "skip": 0,
        "limit": 100
    }
)
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

Typescript:

await db.records.find({
  labels: ['COMPANY'],
  where: {
    stage: 'seed',
    address: { $contains: 'USA' },
    foundedAt: {
      $lte: { $year: 2000 }
    },
    rating: {
      $or: [{ $lt: 2.5 }, { $gte: 4.5 }]
    },
    EMPLOYEE: {
      $relation: { type: 'HIRED', direction: 'out' },
      $alias: '$employee',
      salary: {
        $gte: 500_000
      }
    }
  },
  aggregate: {
    employees: {
      fn: 'collect',
      alias: '$employee',
      limit: 10
    }
  },
  skip: 0,
  limit: 100
})
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

در زیر کاپوت ، RASHDB این کار را به یک پرس و جو بهینه شده و قدرتمند Cypher تبدیل می کند. موتور پرس و جو به توسعه دهندگان اجازه می دهد تا به طور طبیعی در مورد داده ها فکر کنند ، روشی که ما به طور شهودی از آن استفاده می کنیم و آن را درک می کنیم ، در حالی که RushDB پیچیدگی پشت صحنه را کنترل می کند:

MATCH (record:__RUSHDB__LABEL__RECORD__:COMPANY { __RUSHDB__KEY__PROJECT__ID__: $projectId })

WHERE (any(value IN record.stage WHERE value = "seed"))
AND (any(value IN record.address WHERE value =~ "(?i).*USA.*"))
AND (any(value IN record.foundedAt WHERE apoc.convert.fromJsonMap(`record`.`__RUSHDB__KEY__PROPERTIES__META__`).`foundedAt` = "datetime" AND datetime(value) <= datetime({year: 2000})))
AND ((any(value IN record.rating WHERE value < 2.5) OR any(value IN record.rating WHERE value >= 4.5)))

ORDER BY record.`__RUSHDB__KEY__ID__`
DESC SKIP 0 LIMIT 100

OPTIONAL MATCH (record)-[:HIRED]->(record1:EMPLOYEE) WHERE (any(value IN record1.salary WHERE value >= 500000))
WITH record, record1
WHERE record IS NOT NULL AND record1 IS NOT NULL

WITH record,
apoc.coll.sortMaps(collect(DISTINCT record1 {
    .*, __RUSHDB__KEY__LABEL__: [label IN labels(record1) WHERE label <> "__RUSHDB__LABEL__RECORD__"][0]
}), "__RUSHDB__KEY__ID__")[0..10] AS `employees`

RETURN collect(DISTINCT record {
    __RUSHDB__KEY__ID__: record.__RUSHDB__KEY__ID__,
    __RUSHDB__KEY__PROPERTIES__META__: record.__RUSHDB__KEY__PROPERTIES__META__,
    __RUSHDB__KEY__LABEL__: [label IN labels(record) WHERE label <> "__RUSHDB__LABEL__RECORD__"][0],
    `employees`
}) AS records
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

در اسناد بیشتر بدانید

5. معاملات

RASHDB کاملاً سازگار با اسید است و ابزارهای قوی را برای اطمینان از قوام و قابلیت اطمینان داده ها فراهم می کند. با استفاده از API معاملات ، می توانید چندین عملیات را با اطمینان انجام دهید – یا هر درخواست با موفقیت انجام می شود ، یا همه تغییرات به عقب برگردانده می شوند و یکپارچگی داده ها را حفظ می کنند.

کار با معاملات در RASHDB یکپارچه است:

پایتون:

tx = db.transactions.begin()

try:
    # Create some Records
    item = db.records.create(
        "ITEM",
        {"title": "Nike Air Max 270", "price": 150},
        transaction=tx,
    )

    owner = db.records.create(
        "OWNER",
        {"name": "Jane Smith", "email": "janesmith@example.com"},
        transaction=tx
    )

    options = RelationshipOptions(type="OWN", direction="out")

    # create Relationship
    owner.attach(item, options, transaction=tx)

    # Simulate an error
    raise ValueError("Simulated error")

    # Commit the Transaction if all operations succeed
    tx.commit();

except ValueError:
    #  If any records or relationships creation failed, roll back the entire operation
    transaction.rollback()
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

Typescript:

const tx = await db.tx.begin();

try {
  // Create some Records
  const item = await db.records.create('ITEM', {
    title: 'Nike Air Max 270',
    price: 150
  }, tx);

  const owner = await db.records.create('OWNER', {
    name: 'Jane Smith',
    email: 'janesmith@example.com',
  }, tx);

  // create Relationship
  await owner.attach(item, {
    type: 'OWN',
    direction: 'out',
  }, tx);

  // Simulate an error
  throw new Error('Simulated error')

  // Commit the Transaction if all operations succeed
  await tx.commit();
} catch (e) {
  // If any Records or Relationships creation failed, roll back the entire operation
  await tx.rollback();
}
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

در اسناد بیشتر بدانید

6. خصوصیات: اتصالات سبک وزن که داده های شما را متحد می کنند

حداقل سربار داده ها ، حداکثر تأثیر – Rushdb's خواص سیستم توسعه دهندگان را قادر می سازد تا ضمن باز کردن بینش های عمیق تر از داده های خود ، تجربه های جستجوی بهترین کلاس را بسازند.

خواص به عنوان ظروف هوشمند عمل می کنند که سوابق را پیوند می دهد ، زمینه ها را با همان نام و نوع در موجودات داده های مختلف متصل می کند. به عنوان مثال ، اگر چندین سوابق – صرف نظر از برچسب – به اشتراک بگذارید color خاصیت با ارزش red، RASHDB به طور خودکار تمام سوابق مربوطه را سطح می کند. این مانند پرس و جو در چندین جدول SQL توسط یک زمینه و ارزش مشترک است ، اما بدون پیچیدگی.

این باعث می شود خواص ابزاری قدرتمند برای کشف داده ها ، جستجو و روابط متقابل یکپارچه.

نمونه

پایتون:

query = {
    "where": {
        "color": "red"
    }
}

records = db.records.find(query)
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

Typescript:

const records = await db.records.find({
    where: {
        color: 'red'
    }
})
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

علاوه بر این ، با ویژگی های API ، ساخت تجربیات جستجوی پیشرفته ساده است. توسعه دهندگان می توانند یکپارچه از سوابق مرتبط در موجودات مختلف بدون پیوستن پیچیده یا نمایه سازی دستی پرس و جو کنند. این که آیا شما در حال اجرای جستجوی FaceTed ، فیلتر پویا یا توصیه های شخصی هستید ، RASHDB تضمین می کند که داده های شما به هم متصل و فوراً در دسترس است.

پایتون:

# Property `name` [string]
db.properties.values(
  "0192397b-8579-7ce2-a899-01c59bad63f8"
)
# Response
{
  "values": [
    "Eleanor Whitaker",
    "Marcus Donovan",
    "Priya Kapoor",
    "Julian Alvarez"
  ],
  "type": "string"
}

# Property \`size\` [number]
db.properties.values(
  "019412c0-2051-71fe-bc9d-26117b52c119"
)
# Response
{
  "min": 5.5,
  "max": 12.5,
  "values": [5.5, 6, 6.5, 7, 7.5, 8, 8.5, ...],
  "type": "number"
}
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

Typescript:

// Property `name` [string]
await db.properties.values(
  '0192397b-8579-7ce2-a899-01c59bad63f8'
)
// Response
{
  values: [
    'Eleanor Whitaker',
    'Marcus Donovan',
    'Priya Kapoor',
    'Julian Alvarez'
  ],
  type: 'string'
}

// Property \`size\` [number]
await db.properties.values(
  '019412c0-2051-71fe-bc9d-26117b52c119'
)
// Response
{
  min: 5.5,
  max: 12.5,
  values: [5.5, 6, 6.5, 7, 7.5, 8, 8.5, ...],
  type: 'number'
}
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

در اسناد بیشتر بدانید

7. یک API جهانی برای کل سیستم عامل

RASHDB با یک ساخته شده است پرس و جو محور طراحی ، اطمینان از اینکه اکثر نقاط پایانی از یک قالب درخواست مداوم پیروی می کنند. این رویکرد یکپارچه تجربه توسعه دهنده را با به حداقل رساندن منحنی یادگیری – ساختار درخواست یک درخواست ، تقویت می کند و می توانید آن را در کل سیستم عامل اعمال کنید.

در هسته RASHDB سه موجود اصلی وجود دارد: ضبط ، خاصیت و برچسببشر همه آنها را می توان با استفاده از همان سؤال کرد جستجو، از بین بردن نیاز به ژیمناستیک داده های پس زمینه. این بدان معنی است که شما می توانید بدون نگرانی در مورد دست زدن به داده های پیچیده ، روی ساخت محصولات متمرکز شوید – فقط یک بار پرس و جو کنید و هر بار دقیقاً آنچه را که لازم دارید دریافت کنید.

پیتون

# Same DTO to rule them all
query = {
    "where": {
        "$or": [{"stage": "seed"}, {stage: "roundA"}],
        "EMPLOYEE": {
                "salary": {
                "$gte": 500_000
            }
        }
    }
}

# Find Labels of Records that match the criteria
labels = db.labels.find(query)

# Find Records that match the criteria
records = db.properties.find(query)

# Find Properties of Records that match the criteria
properties = db.labels.find(query)
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

Typescript:

// Same DTO to rule them all
const query = {
  where: {
    $or: [{ stage: 'seed' }, { stage: 'roundA' }],
    EMPLOYEE: {
      salary: {
        $gte: 500_000
      }
    }
  }
}

// Find Labels of Records that match the criteria
const labels = await db.labels.find(query)

// Find Records that match the criteria
const records = await db.records.find(query)

// Find Properties of Records that match the criteria
const properties = await db.properties.find(query)
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

7 داشبورد قدرتمند: کنترل ، کاوش و پرس و جو را با سهولت

Rushdb همراه با داشبورد غنی از ویژگی این امر به شما امکان کنترل کامل داده ها ، پروژه ها و دسترسی API خود را می دهد-همه در یک UI بصری و سازگار با توسعه دهنده. این که آیا شما یک توسعه دهنده هستید یا یک تیم محور داده ، داشبورد باعث می شود کاوش و مدیریت داده های شما بی دردسر باشد.

ویژگی های کلیدی:

  • پرس و جو داده هوشمند -یک UI یکپارچه که تغییرات ارزش را برای هر فیلتر بدست می آورد ، و حتی برای توسعه دهندگان ، جستجوهای دقیق را نیز فعال می کند. دقیقاً آنچه را که لازم دارید با دقت تیرانداز پیدا کنید.
  • نمای نمودار برای اکتشافات طبیعی – روابط را به روشی که در مورد داده ها فکر می کنید تجسم کنید ، نه فقط نحوه ذخیره آن. بدون نوشتن پرس و جو ، نمودار خود را بطور شهودی حرکت دهید.
  • انزوای مبتنی بر پروژه -هر پروژه کاملاً خودمختار است و به شما امکان می دهد چندین مجموعه داده مستقل را بدون زحمت مدیریت کنید.
  • واردات اطلاعات فوری – JSON یا JSONB را مستقیماً از UI بارگذاری کنید – بدون کدگذاری لازم نیست. سریعترین راه برای شروع و آشنایی با RASHDB.
  • پیش نمایش جستجوی – نمایش داده شد به صورت بصری با فیلترهای UI و به راحتی از پیکربندی تولید شده در برنامه های خود استفاده کنید.
  • ویژگی های بیشتر به زودی! – ما به طور مداوم داشبورد را بهبود می بخشیم تا مدیریت داده ها حتی یکپارچه تر شود.

نمای نمودار داشبورد RASHDB

نمایش جدول سوابق

Rushdb Dashboard Records

مشاهده نمودار سوابق

8. ادغام بی دردسر با REST API & SDKS

RASHDB ارائه می دهد API REST قدرتمند و بصری این یکپارچه با برنامه های شما ادغام می شود. API با طراحی شده است بهره وری توسعه دهنده در نظر داشته باشید ، با استفاده از حداقل کد ، از تعامل صاف با پایگاه داده خود اطمینان حاصل کنید. این که آیا شما در حال ساختن یک برنامه سازمانی پیچیده و یا یک میکروسرویس سبک وزن هستید ، عملیات ساده SDKS ارائه شده ، روشهای ساده ای را برای ایجاد ، پرس و جو و مدیریت داده های نمودار خود ارائه می دهد. در تجربه سطح SDK به توسعه دهندگان اجازه می دهد تا از طریق زبانهای برنامه نویسی محبوب ، با زحمت به RASHDB متصل شوند ، و مستندات غنی و نمونه های جامع را برای به حداقل رساندن اصطکاک در طول ادغام ارائه دهند.

9. گزینه های استقرار انعطاف پذیر: ابر یا میزبان

RASHDB در هر دو موجود است ابری وت مجموعه های خود میزبان، ضمن اطمینان از مقیاس پذیری و قابلیت اطمینان ، به شما کنترل کامل می دهد. با ابری نسخه ، شما می توانید به سرعت بدون نگرانی در مورد نگهداری ، یک محیط کاملاً مدیریت شده و امن را به سرعت مستقر و مقیاس بندی کنید. از طرف دیگر ، خود ستا نسخه به شما امکان می دهد RASHDB را بر روی سخت افزار خود اجرا کنید ، به شما انعطاف پذیری را برای سفارشی سازی تنظیمات ، حفظ کنترل کامل داده ها و ادغام با زیرساخت های موجود خود می دهد.

مطمئناً! در اینجا نتیجه گیری مختصر و تأثیرگذار به مقاله آورده شده است:

پایان

Rushdb با ترکیب بهترین های هر دو جهان ، توسعه دهندگان را توانمند می کند –پایگاه داده های نمودار پیکربندی صفر با بهترین تجربه توسعه دهنده کلاسبشر این که آیا شما با یک ابر یا تنظیم خود میزبان کار می کنید ، RASHDB انعطاف پذیری ، مقیاس پذیری و سهولت استفاده بی نظیر را ارائه می دهد و آن را به عنوان راه حل برای برنامه های مدرن تبدیل می کند. با یک API REST بصری و ادغام SDK بدون درز ، می توانید بر روی ساخت محصولات نوآورانه تمرکز کنید و پیچیدگی های مدیریت پایگاه داده را به RASHDB واگذار کنید.

برنامه خود را با RASHDB به سطح بعدی برسانید – جایی که پایگاه داده های قدرتمند نمودار با طراحی اول توسعه دهنده مطابقت دارند.

نوشته های مشابه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

دکمه بازگشت به بالا