mirror of
https://github.com/t8y2/dbx.git
synced 2026-10-19 16:16:45 +00:00
docs(i18n): add turkish to the documentation site
This commit is contained in:
@@ -1,6 +1,7 @@
|
||||
import { createFromSource } from "fumadocs-core/search/server";
|
||||
import { createCjkSearchTokenizer } from "@/lib/cjkSearchTokenizer";
|
||||
import { source } from "@/lib/source";
|
||||
import { i18n } from "@/lib/i18n";
|
||||
|
||||
export const revalidate = false;
|
||||
export const { staticGET: GET } = createFromSource(source, {
|
||||
@@ -10,5 +11,5 @@ export const { staticGET: GET } = createFromSource(source, {
|
||||
});
|
||||
|
||||
export function generateStaticParams() {
|
||||
return [{ lang: "en" }, { lang: "cn" }];
|
||||
return i18n.languages.map((lang) => ({ lang }));
|
||||
}
|
||||
|
||||
@@ -1,15 +1,20 @@
|
||||
import { LandingNav } from "@/components/landing/LandingNav";
|
||||
import { LandingFooter } from "@/components/landing/LandingFooter";
|
||||
import { ChangelogRuntime } from "@/components/landing/ChangelogRuntime";
|
||||
import { loadChangelogBootstrap } from "@/lib/changelog";
|
||||
import { changelogDataLang, loadChangelogBootstrap } from "@/lib/changelog";
|
||||
import { buildMetadata } from "@/lib/metadata";
|
||||
import type { Metadata } from "next";
|
||||
import { resolveLang } from "@/lib/i18n";
|
||||
|
||||
const i18n = {
|
||||
en: {
|
||||
title: "Changelog",
|
||||
desc: "Track every release — features, improvements, and fixes.",
|
||||
},
|
||||
tr: {
|
||||
title: "Değişiklik Günlüğü",
|
||||
desc: "Her sürümü takip edin — yeni özellikler, iyileştirmeler ve düzeltmeler.",
|
||||
},
|
||||
cn: {
|
||||
title: "更新日志",
|
||||
desc: "追踪每次发布 — 新功能、改进和修复。",
|
||||
@@ -18,7 +23,7 @@ const i18n = {
|
||||
|
||||
export async function generateMetadata({ params }: { params: Promise<{ lang: string }> }): Promise<Metadata> {
|
||||
const { lang } = await params;
|
||||
const l = lang === "cn" ? "cn" : "en";
|
||||
const l = resolveLang(lang);
|
||||
const t = i18n[l];
|
||||
|
||||
return buildMetadata({
|
||||
@@ -31,9 +36,9 @@ export async function generateMetadata({ params }: { params: Promise<{ lang: str
|
||||
|
||||
export default async function ChangelogPage({ params }: { params: Promise<{ lang: string }> }) {
|
||||
const { lang } = await params;
|
||||
const l = lang === "cn" ? "cn" : "en";
|
||||
const l = resolveLang(lang);
|
||||
const t = i18n[l];
|
||||
const initialData = await loadChangelogBootstrap(l);
|
||||
const initialData = await loadChangelogBootstrap(changelogDataLang(l));
|
||||
|
||||
return (
|
||||
<main className="min-h-screen bg-[#08080a] text-landing-ink">
|
||||
|
||||
@@ -2,6 +2,7 @@ import { LandingNav } from "@/components/landing/LandingNav";
|
||||
import { LandingFooter } from "@/components/landing/LandingFooter";
|
||||
import { buildMetadata } from "@/lib/metadata";
|
||||
import type { Metadata } from "next";
|
||||
import { resolveLang } from "@/lib/i18n";
|
||||
|
||||
const channels = [
|
||||
{
|
||||
@@ -51,6 +52,14 @@ const i18n = {
|
||||
wechat: { name: "WeChat Group", desc: "Join via Tencent Docs invite link." },
|
||||
github: { name: "GitHub Discussions", desc: "Bug reports, feature requests, and long-form discussions." },
|
||||
},
|
||||
tr: {
|
||||
title: "Topluluk",
|
||||
desc: "DBX topluluğuna katılın — soru sorun, geri bildirim paylaşın ve diğer kullanıcılarla tanışın.",
|
||||
discord: { name: "Discord", desc: "Anlık sohbet, soru-cevap ve özellik tartışmaları." },
|
||||
qq: { name: "QQ Grubu", desc: "Grup numarası: 1087880322" },
|
||||
wechat: { name: "WeChat Grubu", desc: "Tencent Docs davet bağlantısıyla katılın." },
|
||||
github: { name: "GitHub Discussions", desc: "Hata bildirimleri, özellik istekleri ve uzun tartışmalar." },
|
||||
},
|
||||
cn: {
|
||||
title: "交流群",
|
||||
desc: "加入 DBX 社区 — 提问、反馈、与其他用户交流。",
|
||||
@@ -63,7 +72,7 @@ const i18n = {
|
||||
|
||||
export async function generateMetadata({ params }: { params: Promise<{ lang: string }> }): Promise<Metadata> {
|
||||
const { lang } = await params;
|
||||
const l = lang === "cn" ? "cn" : "en";
|
||||
const l = resolveLang(lang);
|
||||
const t = i18n[l];
|
||||
|
||||
return buildMetadata({
|
||||
@@ -76,7 +85,7 @@ export async function generateMetadata({ params }: { params: Promise<{ lang: str
|
||||
|
||||
export default async function CommunityPage({ params }: { params: Promise<{ lang: string }> }) {
|
||||
const { lang } = await params;
|
||||
const l = lang === "cn" ? "cn" : "en";
|
||||
const l = resolveLang(lang);
|
||||
const t = i18n[l];
|
||||
|
||||
return (
|
||||
|
||||
@@ -5,12 +5,17 @@ import { LandingFooter } from "@/components/landing/LandingFooter";
|
||||
import { LandingNav } from "@/components/landing/LandingNav";
|
||||
import type { ContributorActivityData } from "@/lib/contributorActivity";
|
||||
import { buildMetadata } from "@/lib/metadata";
|
||||
import { resolveLang } from "@/lib/i18n";
|
||||
|
||||
const pageMetadata = {
|
||||
en: {
|
||||
title: "DBX Contributors",
|
||||
description: "Explore the people building DBX and download a certificate generated from public GitHub activity.",
|
||||
},
|
||||
tr: {
|
||||
title: "DBX Katkıda Bulunanlar",
|
||||
description: "DBX'i birlikte geliştiren açık kaynak katkıcılarını görün ve herkese açık GitHub etkinliğinden üretilen bir katkı sertifikası indirin.",
|
||||
},
|
||||
cn: {
|
||||
title: "DBX 贡献者",
|
||||
description: "查看共同建设 DBX 的开源贡献者,并根据公开 GitHub 活动生成贡献证书。",
|
||||
@@ -19,7 +24,7 @@ const pageMetadata = {
|
||||
|
||||
export async function generateMetadata({ params }: { params: Promise<{ lang: string }> }): Promise<Metadata> {
|
||||
const { lang } = await params;
|
||||
const locale = lang === "cn" ? "cn" : "en";
|
||||
const locale = resolveLang(lang);
|
||||
const metadata = pageMetadata[locale];
|
||||
|
||||
return buildMetadata({
|
||||
@@ -32,7 +37,7 @@ export async function generateMetadata({ params }: { params: Promise<{ lang: str
|
||||
|
||||
export default async function ContributorsPage({ params }: { params: Promise<{ lang: string }> }) {
|
||||
const { lang } = await params;
|
||||
const locale = lang === "cn" ? "cn" : "en";
|
||||
const locale = resolveLang(lang);
|
||||
const data = contributorSnapshot as ContributorActivityData;
|
||||
|
||||
return (
|
||||
|
||||
@@ -8,6 +8,7 @@ import { RevealSection } from "@/components/landing/RevealSection";
|
||||
import { ExpandableDatabaseGrid } from "@/components/landing/ExpandableDatabaseGrid";
|
||||
import { databaseSupport } from "@/data/databaseSupport";
|
||||
import { buildMetadata } from "@/lib/metadata";
|
||||
import { resolveLang } from "@/lib/i18n";
|
||||
|
||||
const i18n = {
|
||||
en: {
|
||||
@@ -19,6 +20,15 @@ const i18n = {
|
||||
footer: "Want to learn more about what works with each engine?",
|
||||
footerLink: "Read the feature matrix",
|
||||
},
|
||||
tr: {
|
||||
title: "Desteklenen Veritabanları",
|
||||
desc: "DBX 90+ veritabanı motorunu destekler: Rust yerel sürücüleri, MySQL/PostgreSQL uyumlu türler ve JDBC uzantıları.",
|
||||
ctaTitle: "Kullandığınız veritabanını göremiyor musunuz?",
|
||||
ctaDesc: "Yeni bir veritabanı motoru için GitHub Discussions'ta bir başlık açın. Üreticiler ve topluluk kullanıcıları katkı verebilir.",
|
||||
ctaLink: "GitHub'da talep edin",
|
||||
footer: "Her motorun hangi özellikleri desteklediğini merak ediyor musunuz?",
|
||||
footerLink: "Özellik matrisine bakın",
|
||||
},
|
||||
cn: {
|
||||
title: "支持的数据库",
|
||||
desc: "DBX 支持 90+ 种数据库引擎。涵盖 Rust 原生驱动、MySQL/PostgreSQL 兼容类型和 JDBC 扩展。",
|
||||
@@ -32,7 +42,7 @@ const i18n = {
|
||||
|
||||
export async function generateMetadata({ params }: { params: Promise<{ lang: string }> }): Promise<Metadata> {
|
||||
const { lang } = await params;
|
||||
const l = lang === "cn" ? "cn" : "en";
|
||||
const l = resolveLang(lang);
|
||||
const t = i18n[l];
|
||||
|
||||
return buildMetadata({
|
||||
@@ -45,7 +55,7 @@ export async function generateMetadata({ params }: { params: Promise<{ lang: str
|
||||
|
||||
export default async function DatabasesPage({ params }: { params: Promise<{ lang: string }> }) {
|
||||
const { lang } = await params;
|
||||
const l = lang === "cn" ? "cn" : "en";
|
||||
const l = resolveLang(lang);
|
||||
const t = i18n[l];
|
||||
|
||||
return (
|
||||
|
||||
@@ -11,7 +11,7 @@ import { ImageZoom } from "fumadocs-ui/components/image-zoom";
|
||||
import { Accordion, Accordions } from "fumadocs-ui/components/accordion";
|
||||
import type { MDXContent } from "mdx/types";
|
||||
import type { TOCItemType } from "fumadocs-core/toc";
|
||||
import { buildMetadata, SITE_URL } from "@/lib/metadata";
|
||||
import { buildMetadata, getHtmlLang, SITE_URL } from "@/lib/metadata";
|
||||
|
||||
export async function generateMetadata({ params }: { params: Promise<{ lang: string; slug?: string[] }> }): Promise<Metadata> {
|
||||
const { lang, slug } = await params;
|
||||
@@ -80,7 +80,7 @@ export default async function Page({ params }: { params: Promise<{ lang: string;
|
||||
"@type": "TechArticle",
|
||||
headline: title,
|
||||
description,
|
||||
inLanguage: lang === "cn" ? "zh-CN" : "en",
|
||||
inLanguage: getHtmlLang(lang),
|
||||
isPartOf: {
|
||||
"@type": "WebSite",
|
||||
url: SITE_URL,
|
||||
|
||||
@@ -3,12 +3,12 @@ import { DocsLayout } from "fumadocs-ui/layouts/docs";
|
||||
import { RootProvider } from "fumadocs-ui/provider/next";
|
||||
import { DocsSidebarFooter, DocsSidebarLanguageButton } from "@/components/DocsSidebarFooter";
|
||||
import { StaticSearchDialog } from "@/components/StaticSearchDialog";
|
||||
import { i18nUI } from "@/lib/i18n";
|
||||
import { i18nUI, resolveLang } from "@/lib/i18n";
|
||||
import { source } from "@/lib/source";
|
||||
|
||||
export default async function Layout({ params, children }: { params: Promise<{ lang: string }>; children: ReactNode }) {
|
||||
const { lang } = await params;
|
||||
const locale = lang === "cn" ? "cn" : "en";
|
||||
const locale = resolveLang(lang);
|
||||
|
||||
return (
|
||||
<RootProvider
|
||||
|
||||
@@ -5,8 +5,45 @@ import { useParams } from "next/navigation";
|
||||
import { LandingNav } from "@/components/landing/LandingNav";
|
||||
import { downloadLinksFor, formatSize, type AgentDownloadCatalog, type DownloadSource, type JreDisplayEntry, type NativeAgentDisplayEntry, type OfflineBundleEntry } from "@/lib/agentRegistry";
|
||||
import { Archive, Cpu, Database, Download, Plug, Search, Terminal, X } from "lucide-react";
|
||||
import { resolveLang, type DocsLang } from "@/lib/i18n";
|
||||
|
||||
const i18n = {
|
||||
tr: {
|
||||
title: "Çevrimdışı Sürücü İndirmeleri",
|
||||
subtitle: "Çevrimdışı kullanım için veritabanı sürücülerini ve JRE paketlerini indirin. İnternet erişimi olmayan ortamınızın ihtiyacı olan kaynağı arayın.",
|
||||
jdbcPlugin: "JDBC Eklentisi",
|
||||
jdbcPluginDesc: "Özel JDBC bağlantılarını kullanmadan önce bu isteğe bağlı DBX bileşenini kurun. Veritabanı üreticisinin JDBC sürücü JAR dosyaları yine ayrıca içe aktarılmalıdır.",
|
||||
jdbcPluginFile: "Eklenti paketi",
|
||||
jdbcPluginInstallHint: "Bu ZIP dosyasını DBX'te Ayarlar > Sürücü Yöneticisi > JDBC Sürücüleri > Yerel Kurulum bölümünden içe aktarın.",
|
||||
bundles: "Çevrimdışı Paketler",
|
||||
bundlesDesc: "Agent kaydını, veritabanı sürücülerini, yerel agent'ları ve uygun JRE'yi içeren, platforma özgü ZIP paketleri.",
|
||||
drivers: "Veritabanı Sürücüleri",
|
||||
driversDesc: "Java agent'ları için tek sürücülük .tar.zst paketleri. Hedef makinede yoksa uygun JRE'yi ayrıca kurun.",
|
||||
nativeAgents: "Yerel Agent'lar",
|
||||
nativeAgentsDesc: "DuckDB, Oracle, KingbaseES, XuguDB ve RabbitMQ için platforma özgü .tar.zst paketleri. Paketi doğrudan Sürücü Yöneticisi'nde içe aktarın.",
|
||||
jre: "Java Çalışma Zamanı (JRE)",
|
||||
jreDesc: "SQL Server ve Dameng gibi Java agent tabanlı veritabanı sürücülerinin kullandığı JRE paketleri.",
|
||||
download: "İndir",
|
||||
installMethod: "Kurulum",
|
||||
version: "Sürüm",
|
||||
size: "Boyut",
|
||||
requiresJre: "JRE gerektirir",
|
||||
platform: "Platform",
|
||||
filename: "Dosya",
|
||||
search: "Sürücü, platform, sürüm ara...",
|
||||
noResults: "Eşleşen indirme yok.",
|
||||
showing: "Gösterilen",
|
||||
of: "/",
|
||||
clearSearch: "Aramayı temizle",
|
||||
mirrorHint: "CNB aynası, Çin anakarası ağlarında GitHub sürüm dosyaları için kullanılabilir.",
|
||||
downloadSources: "İndirme kaynağı",
|
||||
sources: {
|
||||
github: "GitHub",
|
||||
cnb: "CNB",
|
||||
official: "Resmî",
|
||||
},
|
||||
downloadHint: "İnternet erişimi olmayan ortamlar için: platformunuza uygun paketi internet bağlantısı olan bir makinede indirin, çevrimdışı makineye taşıyın ve DBX'te Ayarlar > Sürücü Yöneticisi bölümünden içe aktarın. Sürücü ve JRE sekmelerini yalnızca tek tek dosyalara ihtiyacınız olduğunda kullanın.",
|
||||
},
|
||||
en: {
|
||||
title: "Offline Driver Downloads",
|
||||
subtitle: "Download database drivers and JRE packages for offline use. Search for the exact resource your air-gapped environment needs.",
|
||||
@@ -102,6 +139,12 @@ type NativeAgentGroup = {
|
||||
options: NativeAgentDisplayEntry[];
|
||||
};
|
||||
|
||||
const OFFLINE_HEADING: Record<DocsLang, string> = {
|
||||
en: "Offline Usage",
|
||||
cn: "离线使用说明",
|
||||
tr: "Çevrimdışı kullanım",
|
||||
};
|
||||
|
||||
type DriverTranslations = (typeof i18n)["en"];
|
||||
|
||||
function DownloadLinks({ url, t }: { url: string; t: DriverTranslations }) {
|
||||
@@ -131,7 +174,7 @@ function matchesSearch(values: Array<string | number | undefined>, query: string
|
||||
export function DriversClient({ initialCatalog }: { initialCatalog: AgentDownloadCatalog }) {
|
||||
const params = useParams();
|
||||
const rawLang = params?.lang as string | undefined;
|
||||
const lang: "en" | "cn" = rawLang === "cn" ? "cn" : "en";
|
||||
const lang = resolveLang(rawLang ?? "en");
|
||||
const t = i18n[lang];
|
||||
|
||||
const catalog = initialCatalog;
|
||||
@@ -480,7 +523,7 @@ export function DriversClient({ initialCatalog }: { initialCatalog: AgentDownloa
|
||||
</div>
|
||||
|
||||
<div className="landing-glass-card rounded-[10px] p-5 text-sm text-landing-muted leading-[1.65]">
|
||||
<strong className="text-landing-ink">{lang === "cn" ? "离线使用说明" : "Offline Usage"}</strong>
|
||||
<strong className="text-landing-ink">{OFFLINE_HEADING[lang]}</strong>
|
||||
<p className="mt-1">{t.downloadHint}</p>
|
||||
</div>
|
||||
</>
|
||||
|
||||
@@ -2,12 +2,17 @@ import { DriversClient } from "./DriversClient";
|
||||
import { fetchAgentDownloadCatalog } from "@/lib/agentRegistrySource";
|
||||
import { buildMetadata } from "@/lib/metadata";
|
||||
import type { Metadata } from "next";
|
||||
import { resolveLang } from "@/lib/i18n";
|
||||
|
||||
const pageMeta = {
|
||||
en: {
|
||||
title: "Offline Driver Downloads",
|
||||
description: "Download DBX offline driver bundles, database drivers, and JRE packages for air-gapped environments across macOS, Linux, and Windows.",
|
||||
},
|
||||
tr: {
|
||||
title: "Çevrimdışı Sürücü İndirmeleri",
|
||||
description: "İnternet erişimi olmayan ortamlar için DBX çevrimdışı sürücü paketlerini, veritabanı sürücülerini ve JRE paketlerini macOS, Linux ve Windows için indirin.",
|
||||
},
|
||||
cn: {
|
||||
title: "离线驱动下载",
|
||||
description: "下载 DBX 离线驱动整包、数据库驱动和 JRE 离线包,覆盖 macOS、Linux、Windows 平台。",
|
||||
@@ -16,7 +21,7 @@ const pageMeta = {
|
||||
|
||||
export async function generateMetadata({ params }: { params: Promise<{ lang: string }> }): Promise<Metadata> {
|
||||
const { lang } = await params;
|
||||
const l = lang === "cn" ? "cn" : "en";
|
||||
const l = resolveLang(lang);
|
||||
const meta = pageMeta[l];
|
||||
|
||||
return buildMetadata({
|
||||
|
||||
@@ -3,12 +3,17 @@ import { LandingFooter } from "@/components/landing/LandingFooter";
|
||||
import { LandingNav } from "@/components/landing/LandingNav";
|
||||
import { IssueSubmissionClient } from "@/components/issues/IssueSubmissionClient";
|
||||
import { buildMetadata } from "@/lib/metadata";
|
||||
import { resolveLang } from "@/lib/i18n";
|
||||
|
||||
const metadata = {
|
||||
en: {
|
||||
title: "Submit an Issue",
|
||||
description: "Describe a DBX problem or suggestion without a GitHub account. Review the AI-polished draft before publishing.",
|
||||
},
|
||||
tr: {
|
||||
title: "Issue Gönder",
|
||||
description: "GitHub hesabı olmadan bir DBX sorununu veya önerisini anlatın. Yayımlamadan önce yapay zekânın düzenlediği taslağı inceleyin.",
|
||||
},
|
||||
cn: {
|
||||
title: "匿名提交 Issue",
|
||||
description: "无需 GitHub 账号,简短描述 DBX 问题或建议,由 AI 整理并在你确认后公开提交。",
|
||||
@@ -17,7 +22,7 @@ const metadata = {
|
||||
|
||||
export async function generateMetadata({ params }: { params: Promise<{ lang: string }> }): Promise<Metadata> {
|
||||
const { lang } = await params;
|
||||
const locale = lang === "cn" ? "cn" : "en";
|
||||
const locale = resolveLang(lang);
|
||||
const pageMetadata = buildMetadata({
|
||||
title: metadata[locale].title,
|
||||
description: metadata[locale].description,
|
||||
@@ -36,7 +41,7 @@ export async function generateMetadata({ params }: { params: Promise<{ lang: str
|
||||
|
||||
export default async function IssuePage({ params }: { params: Promise<{ lang: string }> }) {
|
||||
const { lang } = await params;
|
||||
const locale = lang === "cn" ? "cn" : "en";
|
||||
const locale = resolveLang(lang);
|
||||
|
||||
return (
|
||||
<main className="issue-page min-h-screen text-landing-ink">
|
||||
|
||||
@@ -4,6 +4,7 @@ import type { Metadata, Viewport } from "next";
|
||||
import { RouteProgress } from "@/components/RouteProgress";
|
||||
import { buildMetadata, DEFAULT_DESCRIPTION, getHtmlLang, SITE_NAME, SITE_URL } from "@/lib/metadata";
|
||||
import { buildSiteStructuredData } from "@/lib/structuredData";
|
||||
import { i18n, resolveLang } from "@/lib/i18n";
|
||||
|
||||
const LOCALE_MAP: Record<string, { locale: string; title: string; description: string }> = {
|
||||
en: {
|
||||
@@ -16,11 +17,16 @@ const LOCALE_MAP: Record<string, { locale: string; title: string; description: s
|
||||
title: "DBX - 20MB,管理90+种数据库",
|
||||
description: "90+ 种数据库,仅 20 MB。支持桌面与 Docker 自托管,内置 AI 助手。",
|
||||
},
|
||||
tr: {
|
||||
locale: "tr_TR",
|
||||
title: "DBX - 90+ veritabanını 20 MB ile yönetin",
|
||||
description: "90+ veritabanı, yalnızca 20 MB. Masaüstü ve Docker ile kendi sunucunuzda barındırma, yerleşik yapay zekâ asistanı.",
|
||||
},
|
||||
};
|
||||
|
||||
export async function generateMetadata({ params }: { params: Promise<{ lang: string }> }): Promise<Metadata> {
|
||||
const { lang } = await params;
|
||||
const l = lang === "cn" ? "cn" : "en";
|
||||
const l = resolveLang(lang);
|
||||
const meta = LOCALE_MAP[l];
|
||||
|
||||
const pageMetadata = buildMetadata({
|
||||
@@ -57,7 +63,7 @@ export const viewport: Viewport = {
|
||||
|
||||
export default async function LangLayout({ params, children }: { params: Promise<{ lang: string }>; children: ReactNode }) {
|
||||
const { lang } = await params;
|
||||
const locale = lang === "cn" ? "cn" : "en";
|
||||
const locale = resolveLang(lang);
|
||||
const siteStructuredData = buildSiteStructuredData();
|
||||
|
||||
return (
|
||||
@@ -82,5 +88,5 @@ export default async function LangLayout({ params, children }: { params: Promise
|
||||
}
|
||||
|
||||
export function generateStaticParams() {
|
||||
return [{ lang: "en" }, { lang: "cn" }];
|
||||
return i18n.languages.map((lang) => ({ lang }));
|
||||
}
|
||||
|
||||
@@ -18,6 +18,7 @@ import { fetchLatestReleaseInfo } from "@/lib/latestRelease";
|
||||
import { buildMetadata, getHtmlLang } from "@/lib/metadata";
|
||||
import { buildSoftwareApplicationStructuredData } from "@/lib/structuredData";
|
||||
import { ArrowRight, Bot, Database, FileCode, GitCompare, Network, Search, Shield, Table, Terminal, Zap } from "lucide-react";
|
||||
import { resolveLang, type DocsLang } from "@/lib/i18n";
|
||||
|
||||
function formatStars(count: number) {
|
||||
if (count >= 1000) {
|
||||
@@ -29,6 +30,12 @@ function formatStars(count: number) {
|
||||
|
||||
function metrics(starLabel: string) {
|
||||
return {
|
||||
tr: [
|
||||
{ value: "~20 MB", label: "masaüstü yükleyici" },
|
||||
{ value: "90+", label: "veritabanı motoru" },
|
||||
{ value: "2 mod", label: "masaüstü ve Docker" },
|
||||
{ value: starLabel, label: "GitHub yıldızı, tümüyle açık kaynak" },
|
||||
],
|
||||
en: [
|
||||
{ value: "~20 MB", label: "desktop installer" },
|
||||
{ value: "90+", label: "database engines" },
|
||||
@@ -45,6 +52,32 @@ function metrics(starLabel: string) {
|
||||
}
|
||||
|
||||
const workflows = {
|
||||
tr: [
|
||||
{
|
||||
icon: Terminal,
|
||||
title: "SQL yazın ve çalıştırın",
|
||||
desc: "Meta veri farkındalıklı tamamlama, biçimlendirme, geçmiş ve seçili SQL çalıştırma sunan bir CodeMirror 6 düzenleyicisi.",
|
||||
href: "/tr/docs/query-editor",
|
||||
},
|
||||
{
|
||||
icon: Table,
|
||||
title: "Veriye gözatın ve düzenleyin",
|
||||
desc: "Sanallaştırılmış ızgaralar, satır içi düzenleme, WHERE/ORDER BY denetimleri, SQL önizlemesi ve dışa aktarma araçları.",
|
||||
href: "/tr/docs/data-grid",
|
||||
},
|
||||
{
|
||||
icon: Search,
|
||||
title: "Şemaları keşfedin",
|
||||
desc: "Veritabanları, şemalar, tablolar, sütunlar, dizinler, yabancı anahtarlar ve tetikleyiciler arasında sade bir kenar çubuğundan gezinin.",
|
||||
href: "/tr/docs/schema-browser",
|
||||
},
|
||||
{
|
||||
icon: GitCompare,
|
||||
title: "Karşılaştırın ve taşıyın",
|
||||
desc: "Şema karşılaştırma, tablo içe aktarma, veritabanı dışa aktarma, SQL dosyası çalıştırma ve motorlar arası veri aktarımı.",
|
||||
href: "/tr/docs/schema-diff",
|
||||
},
|
||||
],
|
||||
en: [
|
||||
{
|
||||
icon: Terminal,
|
||||
@@ -100,6 +133,14 @@ const workflows = {
|
||||
};
|
||||
|
||||
const capabilities = {
|
||||
tr: [
|
||||
{ icon: Database, label: "Yerel Rust sürücüleri, JDBC çalışma zamanı gerekmez" },
|
||||
{ icon: Shield, label: "SSH tünelleri, şifreli yapılandırma dışa aktarımı, yıkıcı işlem korumaları" },
|
||||
{ icon: Bot, label: "Yapay zekâ asistanı ve Claude Code, Cursor ile agent'lar için MCP sunucusu" },
|
||||
{ icon: Network, label: "Daha derin analiz için ER diyagramları, şema karşılaştırma ve alan soy ağacı" },
|
||||
{ icon: FileCode, label: "CSV, Excel, SQL dosyaları, tam dışa aktarım ve motorlar arası aktarım" },
|
||||
{ icon: Zap, label: "Aynı projeden masaüstü uygulaması ve kendi sunucunuzda web dağıtımı" },
|
||||
],
|
||||
en: [
|
||||
{ icon: Database, label: "Native Rust drivers, no JDBC runtime" },
|
||||
{ icon: Shield, label: "SSH tunnels, encrypted config export, destructive action guards" },
|
||||
@@ -281,7 +322,55 @@ const testimonials = {
|
||||
],
|
||||
};
|
||||
|
||||
const METRICS_LABEL: Record<DocsLang, string> = {
|
||||
en: "DBX key metrics",
|
||||
cn: "DBX 核心指标",
|
||||
tr: "DBX temel ölçümleri",
|
||||
};
|
||||
|
||||
// Testimonials are direct quotes from named people, so the Turkish page reuses
|
||||
// the English set verbatim instead of translating what they said.
|
||||
const localizedTestimonials = { ...testimonials, tr: testimonials.en };
|
||||
|
||||
const i18nText = {
|
||||
tr: {
|
||||
heroTitle: "90+ veritabanını 20 MB ile yönetin!",
|
||||
heroSubtitle: "DBX; bağlantı yönetimini, SQL düzenlemeyi, veri tablolarını, şema araçlarını, yapay zekâ desteğini ve kendi sunucunuzda barındırmayı tek bir hafif üründe toplar.",
|
||||
download: "DBX'i indir",
|
||||
downloadName: "DBX'i indir",
|
||||
readDocs: "Dokümanları okuyun",
|
||||
docsStart: "Buradan başlayın",
|
||||
docsStartDesc: "DBX'i kurun, ilk bağlantınızı oluşturun ve temel iş akışını öğrenin.",
|
||||
workflowsTitle: "Temel iş akışları",
|
||||
workflowsDesc: "Dokümanlar, bir veritabanı istemcisinde gerçekten yaptığınız işlere göre düzenlenmiştir.",
|
||||
supportTitle: "90+ veritabanını destekler",
|
||||
supportDesc: "SQL, NoSQL, vektör, zaman serisi ve gömülü veritabanlarını, mesaj kuyruklarını ve uyumlu motorları tek yerden bağlayın.",
|
||||
supportLink: "Tümünü görüntüle",
|
||||
testimonialsTitle: "DBX ne işe yarar",
|
||||
testimonialsDesc: "DBX'in kolaylaştırmak için tasarlandığı günlük veritabanı iş akışlarına daha yakından bir bakış.",
|
||||
capabilitiesTitle: "Gerçek veritabanı işleri için tasarlandı",
|
||||
contributorsTitle: "Toplulukla birlikte geliştirildi",
|
||||
contributorsDesc: "DBX tümüyle açık kaynaktır. Her özellik, düzeltme ve sürücü bir katkıcıyla başlar.",
|
||||
sponsorLabel: "Sponsorlar ve İş Ortakları",
|
||||
qiniuSponsorDesc: "Qiniu Cloud, DBX'e nesne depolama, CDN ve diğer bulut altyapı kaynaklarını sağlıyor.",
|
||||
qiniuSponsorAction: "Qiniu Cloud'u ziyaret edin",
|
||||
rainyunSponsorDesc: "RainYun; bulut sunucular, fiziksel sunucular, oyun barındırma ve geliştirici dostu altyapı hizmetleri sunan bir bulut servis sağlayıcısıdır.",
|
||||
rainyunSponsorAction: "RainYun'u ziyaret edin",
|
||||
easysearchSponsorDesc: "Easysearch, Elasticsearch API'leriyle uyumlu kurumsal düzeyde dağıtık bir arama motorudur; tam metin, vektör ve coğrafi aramayı, gerçek zamanlı analitiği ve yapay zekâ yeteneklerini tek platformda birleştirir.",
|
||||
easysearchSponsorAction: "Easysearch'ü ziyaret edin",
|
||||
atlasCloudSponsorDesc: "Atlas Cloud, geliştiricilere sohbet, görsel, video ve ses alanlarında 400+ yapay zekâ modeli için tek ve birleşik bir API sunar.",
|
||||
atlasCloudSponsorAction: "Atlas Cloud'u ziyaret edin",
|
||||
trustasiaSponsorDesc: "TrustAsia, DBX için bulut tabanlı kod imzalama hizmeti sağlayarak otomatik CI/CD derlemeleriyle güvenilir yazılım üretilmesini sağlıyor.",
|
||||
trustasiaSponsorAction: "TrustAsia'yı ziyaret edin",
|
||||
jalapenoSponsorDesc: "Jalapeño Cloud, yapay zekâ altyapısı ve belirteç hesaplama platformudur; DBX'e özel giriş noktasıyla ücretsiz kredi ve yükleme bonusu sunar.",
|
||||
jalapenoSponsorAction: "Jalapeño Cloud'u ziyaret edin",
|
||||
astraflowSponsorDesc: "UCloud, Çin'in STAR Market borsasına kote ilk genel bulut sağlayıcısıdır; 28 küresel bölgede bulut sunucu, veritabanı ve CDN hizmeti verir. AstraFlow platformu 200+ yaygın büyük dil modeline tek tıklamayla erişim sağlar.",
|
||||
astraflowSponsorAction: "UCloud'u ziyaret edin",
|
||||
footerTitle: "DBX'i denemeye hazır mısınız?",
|
||||
footerDesc: "Yerel çalışma için masaüstü uygulamasını kullanın ya da tarayıcıdan erişim için Docker sürümünü dağıtın.",
|
||||
release: "En son sürüm",
|
||||
docker: "Docker kurulumu",
|
||||
},
|
||||
en: {
|
||||
heroTitle: "20 MB to manage 90+ databases!",
|
||||
heroSubtitle: "DBX brings connections, SQL editing, data grids, schema tools, AI assistance, and self-hosted access into one lightweight product.",
|
||||
@@ -361,6 +450,10 @@ const i18nText = {
|
||||
};
|
||||
|
||||
const landingMeta = {
|
||||
tr: {
|
||||
title: "DBX - 90+ veritabanını 20 MB ile yönetin!",
|
||||
description: "DBX; bağlantı yönetimini, SQL düzenlemeyi, veri tablolarını, şema araçlarını, yapay zekâ desteğini ve kendi sunucunuzda barındırmayı tek bir hafif üründe toplar.",
|
||||
},
|
||||
en: {
|
||||
title: "DBX - 20 MB to manage 90+ databases!",
|
||||
description: "DBX brings connections, SQL editing, data grids, schema tools, AI assistance, and self-hosted access into one lightweight product.",
|
||||
@@ -373,7 +466,7 @@ const landingMeta = {
|
||||
|
||||
export async function generateMetadata({ params }: { params: Promise<{ lang: string }> }): Promise<Metadata> {
|
||||
const { lang } = await params;
|
||||
const l = lang === "cn" ? "cn" : "en";
|
||||
const l = resolveLang(lang);
|
||||
const meta = landingMeta[l];
|
||||
|
||||
return buildMetadata({
|
||||
@@ -387,7 +480,7 @@ export async function generateMetadata({ params }: { params: Promise<{ lang: str
|
||||
|
||||
export default async function LandingPage({ params }: { params: Promise<{ lang: string }> }) {
|
||||
const { lang } = await params;
|
||||
const l = lang === "cn" ? "cn" : "en";
|
||||
const l = resolveLang(lang);
|
||||
const t = i18nText[l];
|
||||
const workflowItems = workflows[l];
|
||||
const capabilityItems = capabilities[l];
|
||||
@@ -398,7 +491,7 @@ export default async function LandingPage({ params }: { params: Promise<{ lang:
|
||||
const initialLatestRelease = await fetchLatestReleaseInfo();
|
||||
const contributors = contributorsFromActivity(contributorData.contributors);
|
||||
const initialDownloadVersion = initialLatestRelease?.version ?? appVersion;
|
||||
const testimonialItems = testimonials[l];
|
||||
const testimonialItems = localizedTestimonials[l];
|
||||
const softwareStructuredData = buildSoftwareApplicationStructuredData(l, initialDownloadVersion);
|
||||
const sponsorItems = [
|
||||
{
|
||||
@@ -483,7 +576,7 @@ export default async function LandingPage({ params }: { params: Promise<{ lang:
|
||||
</section>
|
||||
|
||||
{/* Metrics */}
|
||||
<RevealSection className="grid grid-cols-4 gap-3 max-w-[1180px] mx-auto px-7 pt-6 pb-11 [animation:landing-rise_0.72s_ease-out_0.1s_both] max-[760px]:grid-cols-2 max-[760px]:gap-2.5 max-[760px]:px-[18px] max-[760px]:pb-7" aria-label={l === "cn" ? "DBX 核心指标" : "DBX key metrics"}>
|
||||
<RevealSection className="grid grid-cols-4 gap-3 max-w-[1180px] mx-auto px-7 pt-6 pb-11 [animation:landing-rise_0.72s_ease-out_0.1s_both] max-[760px]:grid-cols-2 max-[760px]:gap-2.5 max-[760px]:px-[18px] max-[760px]:pb-7" aria-label={METRICS_LABEL[l]}>
|
||||
{metricItems.map((item) => (
|
||||
<div key={item.label} data-stagger className="landing-glass-card min-h-[118px] rounded-[10px] p-[22px] max-[760px]:min-h-[88px] max-[760px]:p-4">
|
||||
<strong className="block text-landing-ink text-2xl font-[720]">{item.value}</strong>
|
||||
|
||||
@@ -4,6 +4,7 @@ import { LandingFooter } from "@/components/landing/LandingFooter";
|
||||
import { LandingNav } from "@/components/landing/LandingNav";
|
||||
import { SponsorContactForm } from "@/components/landing/SponsorContactForm";
|
||||
import { buildMetadata } from "@/lib/metadata";
|
||||
import { resolveLang } from "@/lib/i18n";
|
||||
|
||||
const i18n = {
|
||||
en: {
|
||||
@@ -26,6 +27,26 @@ const i18n = {
|
||||
becomeTitle: "Sponsorship inquiries",
|
||||
becomeDesc: "If you would like to support DBX with funding, infrastructure, developer tools, or services, tell us about the idea and how to reach you.",
|
||||
},
|
||||
tr: {
|
||||
title: "Sponsorlar ve İş Ortakları",
|
||||
desc: "DBX'i finansman, kaynak, hizmet ve iş birliğiyle destekleyen sponsorlara ve iş ortaklarına teşekkür ederiz.",
|
||||
qiniuSponsorDesc: "Qiniu Cloud, DBX'e nesne depolama, CDN ve diğer bulut altyapı kaynaklarını sağlıyor.",
|
||||
qiniuSponsorAction: "Qiniu Cloud'u ziyaret edin",
|
||||
rainyunSponsorDesc: "RainYun; bulut sunucular, fiziksel sunucular, oyun barındırma ve geliştirici dostu altyapı hizmetleri sunan bir bulut servis sağlayıcısıdır.",
|
||||
rainyunSponsorAction: "RainYun'u ziyaret edin",
|
||||
easysearchSponsorDesc: "Easysearch, Elasticsearch API'leriyle uyumlu kurumsal düzeyde dağıtık bir arama motorudur; tam metin, vektör ve coğrafi aramayı, gerçek zamanlı analitiği ve yapay zekâ yeteneklerini tek platformda birleştirir.",
|
||||
easysearchSponsorAction: "Easysearch'ü ziyaret edin",
|
||||
atlasCloudSponsorDesc: "Atlas Cloud, geliştiricilere sohbet, görsel, video ve ses alanlarında 400+ yapay zekâ modeli için tek ve birleşik bir API sunar.",
|
||||
atlasCloudSponsorAction: "Atlas Cloud'u ziyaret edin",
|
||||
trustasiaSponsorDesc: "TrustAsia, DBX için bulut tabanlı kod imzalama hizmeti sağlayarak otomatik CI/CD derlemeleriyle güvenilir yazılım üretilmesini sağlıyor.",
|
||||
trustasiaSponsorAction: "TrustAsia'yı ziyaret edin",
|
||||
jalapenoSponsorDesc: "Jalapeño Cloud, yapay zekâ altyapısı ve belirteç hesaplama platformudur; DBX'e özel giriş noktasıyla ücretsiz kredi ve yükleme bonusu sunar.",
|
||||
jalapenoSponsorAction: "Jalapeño Cloud'u ziyaret edin",
|
||||
astraflowSponsorDesc: "UCloud, Çin'in STAR Market borsasına kote ilk genel bulut sağlayıcısıdır; 28 küresel bölgede bulut sunucu, veritabanı ve CDN hizmeti verir. AstraFlow platformu 200+ yaygın büyük dil modeline tek tıklamayla erişim sağlar.",
|
||||
astraflowSponsorAction: "UCloud'u ziyaret edin",
|
||||
becomeTitle: "Sponsorluk başvurusu",
|
||||
becomeDesc: "DBX'i finansman, altyapı, geliştirici araçları veya hizmetlerle desteklemek isterseniz fikrinizi ve size nasıl ulaşabileceğimizi yazın.",
|
||||
},
|
||||
cn: {
|
||||
title: "赞助商与合作伙伴",
|
||||
desc: "感谢赞助商与合作伙伴通过资金、资源、服务和协作等方式支持 DBX 持续发展。",
|
||||
@@ -50,7 +71,7 @@ const i18n = {
|
||||
|
||||
export async function generateMetadata({ params }: { params: Promise<{ lang: string }> }): Promise<Metadata> {
|
||||
const { lang } = await params;
|
||||
const locale = lang === "cn" ? "cn" : "en";
|
||||
const locale = resolveLang(lang);
|
||||
const t = i18n[locale];
|
||||
|
||||
return buildMetadata({
|
||||
@@ -63,7 +84,7 @@ export async function generateMetadata({ params }: { params: Promise<{ lang: str
|
||||
|
||||
export default async function SponsorsPage({ params }: { params: Promise<{ lang: string }> }) {
|
||||
const { lang } = await params;
|
||||
const locale = lang === "cn" ? "cn" : "en";
|
||||
const locale = resolveLang(lang);
|
||||
const t = i18n[locale];
|
||||
const sponsorItems = [
|
||||
{
|
||||
|
||||
@@ -4,8 +4,9 @@ import { useEffect, useMemo, useState } from "react";
|
||||
import { Award, Download, ExternalLink, Github, LogOut, Search, ShieldCheck } from "lucide-react";
|
||||
import type { ContributorActivity, ContributorActivityData } from "@/lib/contributorActivity";
|
||||
import styles from "./ContributorsExperience.module.css";
|
||||
import type { DocsLang } from "@/lib/i18n";
|
||||
|
||||
type Language = "en" | "cn";
|
||||
type Language = DocsLang;
|
||||
type AuthUser = { login: string; avatarUrl: string; profileUrl: string };
|
||||
type AuthState = { status: "loading" } | { status: "signed-out" } | { status: "signed-in"; user: AuthUser };
|
||||
|
||||
@@ -38,6 +39,34 @@ const copy = {
|
||||
mergedLabel: "MERGED PULL REQUESTS",
|
||||
verified: "GITHUB IDENTITY VERIFIED",
|
||||
},
|
||||
tr: {
|
||||
title: "Emeğin DBX'in bir parçası.",
|
||||
intro: "Kimliğini doğrulamak ve DBX'e merge edilen pull request'lerin için paylaşılabilir bir sertifika almak üzere GitHub ile giriş yap.",
|
||||
signIn: "GitHub ile doğrula",
|
||||
signingIn: "GitHub oturumu denetleniyor…",
|
||||
contributors: "doğrulanmış katkıcı",
|
||||
merged: "merge edilmiş pull request",
|
||||
commits: "depo commit'i",
|
||||
stars: "GitHub yıldızı",
|
||||
directory: "Katkıcı dizini",
|
||||
search: "GitHub kullanıcı adı ara",
|
||||
showAll: "Tüm katkıcıları göster",
|
||||
showLess: "Daha az katkıcı göster",
|
||||
noResults: "Eşleşen katkıcı yok.",
|
||||
signedInAs: "Doğrulanan hesap",
|
||||
claim: "Sertifikamı aç",
|
||||
notEligible: "Bu GitHub hesabının DBX'te merge edilmiş bir pull request'i henüz yok.",
|
||||
contributionCallout: "Odaklı bir pull request gönder ve bu duvara katıl.",
|
||||
viewGuide: "Katkı kılavuzu",
|
||||
signOut: "Çıkış yap",
|
||||
certificate: "Açık kaynak katkıcısı",
|
||||
awardedTo: "Sunulan kişi",
|
||||
certificateBody: "DBX'e kabul edilip merge edilen çalışman için; veritabanı araçlarını herkes için daha iyi hâle getirdiğin için teşekkürler.",
|
||||
download: "Sertifikayı indir",
|
||||
close: "Kapat",
|
||||
mergedLabel: "MERGE EDİLEN PULL REQUEST",
|
||||
verified: "GITHUB KİMLİĞİ DOĞRULANDI",
|
||||
},
|
||||
cn: {
|
||||
title: "你的代码,已经成为 DBX 的一部分。",
|
||||
intro: "使用 GitHub 验证身份,领取一张属于你的贡献者证书,记录被 DBX 接受并合并的 Pull Request。",
|
||||
@@ -68,8 +97,10 @@ const copy = {
|
||||
},
|
||||
} as const;
|
||||
|
||||
const NUMBER_LOCALE: Record<Language, string> = { en: "en-US", cn: "zh-CN", tr: "tr-TR" };
|
||||
|
||||
function formatNumber(value: number, lang: Language) {
|
||||
return new Intl.NumberFormat(lang === "cn" ? "zh-CN" : "en-US").format(value);
|
||||
return new Intl.NumberFormat(NUMBER_LOCALE[lang]).format(value);
|
||||
}
|
||||
|
||||
function initials(login: string) {
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
|
||||
import { ArrowUpRight, Check, CheckCircle2, ImagePlus, LoaderCircle, RotateCcw, ShieldAlert, Sparkles, X } from "lucide-react";
|
||||
import { useEffect, useRef, useState, type ClipboardEvent, type DragEvent } from "react";
|
||||
import type { DocsLang } from "@/lib/i18n";
|
||||
|
||||
type IssueType = "bug" | "feature" | "question" | "compatibility";
|
||||
|
||||
@@ -31,6 +32,58 @@ type SubmitResponse = {
|
||||
};
|
||||
|
||||
const copy = {
|
||||
tr: {
|
||||
draftStep: "Sorunu anlatın",
|
||||
previewStep: "Issue önizlemesi",
|
||||
descriptionLabel: "Ne oldu?",
|
||||
descriptionHint: "Ne yaptığınızı, ne gördüğünüzü ve ne beklediğinizi yazın. Sürüm veya ortam ayrıntısını bilmiyorsanız tahmin etmeyin.",
|
||||
descriptionPlaceholder: "Örnek: macOS'ta bir PostgreSQL şemasını genişletince hata vermeden sürekli yükleniyor. Yeniden başlatmak ve yeniden bağlanmak işe yaramadı.",
|
||||
attachments: "Ekran görüntüleri (isteğe bağlı)",
|
||||
attachmentHint: "Ekran görüntülerini buraya seçin, sürükleyin ya da yapıştırın. PNG, JPEG veya WebP; en fazla 3 görsel ve her biri 5 MB.",
|
||||
addImages: "Ekran görüntüsü ekle",
|
||||
generate: "Issue taslağı hazırla",
|
||||
generateAgain: "Yeniden hazırla",
|
||||
generating: "Taslak hazırlanıyor",
|
||||
type: "Tür",
|
||||
titleLabel: "Başlık",
|
||||
bodyLabel: "GitHub gövdesi",
|
||||
bodyHint: "Tümüyle düzenlenebilir. Gönderim sırasında görseller ve anonim kaynak notu sona eklenir.",
|
||||
summary: "Taslak özeti",
|
||||
confirm: "Başlığı, gövdeyi ve ekran görüntülerini inceledim; bunların GitHub'da herkese açık görüneceğini anlıyorum.",
|
||||
submit: "Onayla ve herkese açık Issue oluştur",
|
||||
submitting: "Issue oluşturuluyor",
|
||||
publicWarning: "Göndermeden önce",
|
||||
publicNotice: "Parola, belirteç, bağlantı dizesi, maskelenmemiş IP, müşteri verisi veya kişisel veri yüklemeyin. Issue ve görseller herkese açık olacak.",
|
||||
successTitle: "Issue oluşturuldu",
|
||||
successText: (number: number) => `GitHub Issue #${number} oluşturuldu. Sonraki gelişmeler o herkese açık sayfada kaydedilecek.`,
|
||||
openIssue: "GitHub Issue'yu aç",
|
||||
another: "Bir tane daha gönder",
|
||||
removeImage: "Görseli kaldır",
|
||||
errors: {
|
||||
DESCRIPTION_REQUIRED: "Önce sorunu anlatın.",
|
||||
DESCRIPTION_TOO_SHORT: "Açıklama en az 4 karakter içermelidir.",
|
||||
DESCRIPTION_TOO_LONG: "Açıklamayı 6.000 karakterin altında tutun.",
|
||||
TOO_MANY_IMAGES: "En fazla 3 görsel yükleyebilirsiniz.",
|
||||
IMAGE_TOO_LARGE: "Her görsel en fazla 5 MB olmalıdır.",
|
||||
IMAGES_TOO_LARGE: "Görsellerin toplamı en fazla 12 MB olmalıdır.",
|
||||
IMAGE_TYPE_UNSUPPORTED: "Yalnızca gerçek PNG, JPEG ve WebP görselleri desteklenir.",
|
||||
RATE_LIMITED: "Çok fazla taslak denemesi yapıldı. Lütfen daha sonra tekrar deneyin.",
|
||||
AI_NOT_CONFIGURED: "Yapay zekâ taslak servisi henüz yapılandırılmadı.",
|
||||
AI_REQUEST_FAILED: "Yapay zekâ servisi geçici olarak kullanılamıyor. Daha sonra tekrar deneyin.",
|
||||
AI_REQUEST_TIMEOUT: "Ekran görüntüsü çözümlemesi çok uzun sürdü. Tekrar deneyin ya da daha az görsel ekleyin.",
|
||||
AI_RESPONSE_INVALID: "Yapay zekâ geçersiz bir taslak döndürdü. Yeniden üretin.",
|
||||
DRAFT_EXPIRED: "Bu taslağın süresi doldu. Yenisini üretin.",
|
||||
DRAFT_SUBMITTING: "Bu taslak zaten gönderiliyor.",
|
||||
DRAFT_IMAGES_CHANGED: "Taslak üretildikten sonra ekran görüntüleri değişti. Taslağı yeniden üretin.",
|
||||
ISSUE_SESSION_EXPIRED: "Geçici oturumun süresi doldu. Taslağı yeniden üretin.",
|
||||
GITHUB_ISSUE_CREATE_FAILED: "GitHub Issue'yu oluşturamadı. Daha sonra tekrar deneyin.",
|
||||
ISSUE_IMAGE_UPLOAD_FAILED: "Ekran görüntüleri yüklenemedi. Daha sonra tekrar deneyin.",
|
||||
ISSUE_REQUEST_FAILED: "Gönderim başarısız. Daha sonra tekrar deneyin.",
|
||||
},
|
||||
genericError: "İstek başarısız oldu. Daha sonra tekrar deneyin.",
|
||||
clientImageError: "En fazla 3 PNG, JPEG veya WebP görseli kullanın; her biri en çok 5 MB.",
|
||||
retryAfter: (minutes: number) => `Yaklaşık ${minutes} dakika sonra tekrar deneyin.`,
|
||||
},
|
||||
cn: {
|
||||
draftStep: "问题描述",
|
||||
previewStep: "Issue 预览",
|
||||
@@ -144,14 +197,14 @@ const issuePrefixes: Record<IssueType, string> = {
|
||||
compatibility: "[Compatibility]",
|
||||
};
|
||||
|
||||
function responseErrorMessage(lang: "cn" | "en", code: string, retryAfter?: number): string {
|
||||
function responseErrorMessage(lang: DocsLang, code: string, retryAfter?: number): string {
|
||||
const t = copy[lang];
|
||||
const base = t.errors[code as keyof typeof t.errors] ?? t.genericError;
|
||||
if (code !== "RATE_LIMITED" || !retryAfter) return base;
|
||||
return `${base} ${t.retryAfter(Math.max(1, Math.ceil(retryAfter / 60)))}`;
|
||||
}
|
||||
|
||||
export function IssueSubmissionClient({ lang }: { lang: "cn" | "en" }) {
|
||||
export function IssueSubmissionClient({ lang }: { lang: DocsLang }) {
|
||||
const t = copy[lang];
|
||||
const [description, setDescription] = useState("");
|
||||
const [images, setImages] = useState<SelectedImage[]>([]);
|
||||
|
||||
@@ -3,13 +3,53 @@
|
||||
import { marked, Renderer } from "marked";
|
||||
import type { ChangelogIndexEntry, ChangelogRelease } from "@/lib/changelog";
|
||||
import { Tag } from "lucide-react";
|
||||
import type { DocsLang } from "@/lib/i18n";
|
||||
|
||||
const sectionLabels: Record<string, Record<string, string>> = {
|
||||
added: { en: "New Features", cn: "新功能" },
|
||||
improved: { en: "Improvements", cn: "改进" },
|
||||
fixed: { en: "Bug Fixes", cn: "问题修复" },
|
||||
changed: { en: "Changes", cn: "变更" },
|
||||
removed: { en: "Removed", cn: "移除" },
|
||||
added: { en: "New Features", cn: "新功能", tr: "Yeni Özellikler" },
|
||||
improved: { en: "Improvements", cn: "改进", tr: "İyileştirmeler" },
|
||||
fixed: { en: "Bug Fixes", cn: "问题修复", tr: "Hata Düzeltmeleri" },
|
||||
changed: { en: "Changes", cn: "变更", tr: "Değişiklikler" },
|
||||
removed: { en: "Removed", cn: "移除", tr: "Kaldırılanlar" },
|
||||
};
|
||||
|
||||
const listText: Record<DocsLang, { publishedOn: string; download: string; seeGitHub: string; loading: string; releaseList: string; versions: string; content: string; tocTitle: (tag: string) => string; tocSubtitle: string; currentContents: string }> = {
|
||||
en: {
|
||||
publishedOn: "Published on",
|
||||
download: "Download",
|
||||
seeGitHub: "See GitHub Release for details",
|
||||
loading: "Loading release…",
|
||||
releaseList: "Release list",
|
||||
versions: "Versions",
|
||||
content: "Changelog content",
|
||||
tocTitle: (tag) => `In ${tag}`,
|
||||
tocSubtitle: "Release contents",
|
||||
currentContents: "Current release contents",
|
||||
},
|
||||
cn: {
|
||||
publishedOn: "发布于",
|
||||
download: "下载",
|
||||
seeGitHub: "查看 GitHub Release 获取详情",
|
||||
loading: "正在加载版本…",
|
||||
releaseList: "版本列表",
|
||||
versions: "版本列表",
|
||||
content: "更新日志内容",
|
||||
tocTitle: (tag) => `在 ${tag} 中`,
|
||||
tocSubtitle: "更新内容",
|
||||
currentContents: "当前版本目录",
|
||||
},
|
||||
tr: {
|
||||
publishedOn: "Yayımlanma",
|
||||
download: "İndir",
|
||||
seeGitHub: "Ayrıntılar için GitHub Release sayfasına bakın",
|
||||
loading: "Sürüm yükleniyor…",
|
||||
releaseList: "Sürüm listesi",
|
||||
versions: "Sürümler",
|
||||
content: "Değişiklik günlüğü içeriği",
|
||||
tocTitle: (tag) => `${tag} içinde`,
|
||||
tocSubtitle: "Sürüm içeriği",
|
||||
currentContents: "Geçerli sürüm içeriği",
|
||||
},
|
||||
};
|
||||
|
||||
// 与 .github/scripts/sync-changelog.mjs 的 SECTION_MAP 保持一致,
|
||||
@@ -27,12 +67,14 @@ const sectionTypeByTitle: Record<string, string> = {
|
||||
Removed: "removed",
|
||||
};
|
||||
|
||||
function formatDate(dateStr: string, lang: string) {
|
||||
const DATE_LOCALE: Record<DocsLang, string> = { en: "en-US", cn: "zh-CN", tr: "tr-TR" };
|
||||
|
||||
function formatDate(dateStr: string, lang: DocsLang) {
|
||||
const date = new Date(dateStr);
|
||||
if (lang === "cn") {
|
||||
return `${date.getFullYear()}年${date.getMonth() + 1}月${date.getDate()}日`;
|
||||
}
|
||||
return date.toLocaleDateString("en-US", { year: "numeric", month: "long", day: "numeric" });
|
||||
return date.toLocaleDateString(DATE_LOCALE[lang], { year: "numeric", month: "long", day: "numeric" });
|
||||
}
|
||||
|
||||
function releaseId(tag: string) {
|
||||
@@ -105,7 +147,7 @@ function renderMarkdown(release: ChangelogRelease) {
|
||||
|
||||
// TOC 必须与 renderMarkdown 数的是同一批 h3(跳过代码围栏里的 "### "),
|
||||
// 否则 parseBody 过滤掉无条目小节后,锚点序号会整体错位。
|
||||
function buildTocEntries(release: ChangelogRelease, lang: string) {
|
||||
function buildTocEntries(release: ChangelogRelease, lang: DocsLang) {
|
||||
const markdown = releaseDisplayMarkdown(release);
|
||||
const titles: string[] = [];
|
||||
let inFence = false;
|
||||
@@ -127,14 +169,14 @@ function buildTocEntries(release: ChangelogRelease, lang: string) {
|
||||
}));
|
||||
}
|
||||
|
||||
function ReleaseCard({ release, lang, isLoading, errorMessage }: { release: ChangelogRelease | null; lang: "en" | "cn"; isLoading: boolean; errorMessage?: string }) {
|
||||
const text = lang === "cn" ? { publishedOn: "发布于", download: "下载", seeGitHub: "查看 GitHub Release 获取详情" } : { publishedOn: "Published on", download: "Download", seeGitHub: "See GitHub Release for details" };
|
||||
function ReleaseCard({ release, lang, isLoading, errorMessage }: { release: ChangelogRelease | null; lang: DocsLang; isLoading: boolean; errorMessage?: string }) {
|
||||
const text = listText[lang];
|
||||
|
||||
if (!release) {
|
||||
return (
|
||||
<section className="changelog-release changelog-release-loading" aria-busy="true">
|
||||
<div className="changelog-loading-inner">
|
||||
<span>{errorMessage || (isLoading ? (lang === "cn" ? "正在加载版本…" : "Loading release…") : text.seeGitHub)}</span>
|
||||
<span>{errorMessage || (isLoading ? text.loading : text.seeGitHub)}</span>
|
||||
</div>
|
||||
</section>
|
||||
);
|
||||
@@ -166,17 +208,18 @@ function ReleaseCard({ release, lang, isLoading, errorMessage }: { release: Chan
|
||||
);
|
||||
}
|
||||
|
||||
export function ChangelogList({ releaseIndex, selectedTag, release, lang, isLoading, errorMessage, onSelectRelease }: { releaseIndex: ChangelogIndexEntry[]; selectedTag: string; release: ChangelogRelease | null; lang: "en" | "cn"; isLoading: boolean; errorMessage?: string; onSelectRelease: (tag: string) => void }) {
|
||||
export function ChangelogList({ releaseIndex, selectedTag, release, lang, isLoading, errorMessage, onSelectRelease }: { releaseIndex: ChangelogIndexEntry[]; selectedTag: string; release: ChangelogRelease | null; lang: DocsLang; isLoading: boolean; errorMessage?: string; onSelectRelease: (tag: string) => void }) {
|
||||
const t = listText[lang];
|
||||
const activeTag = release?.tag || selectedTag || releaseIndex[0]?.tag;
|
||||
const tocEntries = release ? buildTocEntries(release, lang) : [];
|
||||
|
||||
return (
|
||||
<div className="changelog-shell">
|
||||
<aside className="changelog-sidebar changelog-sidebar-left" aria-label={lang === "cn" ? "版本列表" : "Release list"}>
|
||||
<aside className="changelog-sidebar changelog-sidebar-left" aria-label={t.releaseList}>
|
||||
<div className="changelog-sidebar-inner">
|
||||
<div className="changelog-sidebar-title">
|
||||
<Tag size={18} strokeWidth={1.8} />
|
||||
<span>{lang === "cn" ? "版本列表" : "Versions"}</span>
|
||||
<span>{t.versions}</span>
|
||||
</div>
|
||||
<nav className="changelog-version-list">
|
||||
{releaseIndex.map((entry) => (
|
||||
@@ -188,15 +231,15 @@ export function ChangelogList({ releaseIndex, selectedTag, release, lang, isLoad
|
||||
</div>
|
||||
</aside>
|
||||
|
||||
<section className="changelog-content" aria-label={lang === "cn" ? "更新日志内容" : "Changelog content"}>
|
||||
<section className="changelog-content" aria-label={t.content}>
|
||||
<ReleaseCard release={release} lang={lang} isLoading={isLoading} errorMessage={errorMessage} />
|
||||
</section>
|
||||
|
||||
{release && tocEntries.length > 0 && (
|
||||
<aside className="changelog-sidebar changelog-sidebar-right" aria-label={lang === "cn" ? "当前版本目录" : "Current release contents"}>
|
||||
<aside className="changelog-sidebar changelog-sidebar-right" aria-label={t.currentContents}>
|
||||
<div className="changelog-sidebar-inner">
|
||||
<p className="changelog-toc-title">{lang === "cn" ? `在 ${activeTag} 中` : `In ${activeTag}`}</p>
|
||||
<p className="changelog-toc-subtitle">{lang === "cn" ? "更新内容" : "Release contents"}</p>
|
||||
<p className="changelog-toc-title">{t.tocTitle(activeTag)}</p>
|
||||
<p className="changelog-toc-subtitle">{t.tocSubtitle}</p>
|
||||
<nav className="changelog-toc-list">
|
||||
{tocEntries.map((entry) => (
|
||||
<a key={entry.id} href={`#${entry.id}`}>
|
||||
|
||||
@@ -2,11 +2,12 @@
|
||||
|
||||
import { useCallback, useEffect, useRef, useState } from "react";
|
||||
import { ChangelogList } from "@/components/landing/ChangelogList";
|
||||
import { changelogReleaseUrl, type ChangelogIndexEntry, type ChangelogRelease } from "@/lib/changelog";
|
||||
import { changelogDataLang, changelogReleaseUrl, type ChangelogIndexEntry, type ChangelogRelease } from "@/lib/changelog";
|
||||
import { requestJson } from "@/lib/httpJson";
|
||||
import type { DocsLang } from "@/lib/i18n";
|
||||
|
||||
type ChangelogRuntimeProps = {
|
||||
lang: "en" | "cn";
|
||||
lang: DocsLang;
|
||||
index: ChangelogIndexEntry[];
|
||||
initialRelease: ChangelogRelease | null;
|
||||
fallbackReleases?: ChangelogRelease[] | null;
|
||||
@@ -17,6 +18,10 @@ const text = {
|
||||
empty: "No releases found.",
|
||||
loadError: "Failed to load this release. Please retry or check GitHub Releases.",
|
||||
},
|
||||
tr: {
|
||||
empty: "Sürüm kaydı bulunamadı.",
|
||||
loadError: "Bu sürüm yüklenemedi. Tekrar deneyin ya da GitHub Releases sayfasına bakın.",
|
||||
},
|
||||
cn: {
|
||||
empty: "暂无版本记录。",
|
||||
loadError: "该版本加载失败,请稍后重试或前往 GitHub Releases 查看。",
|
||||
@@ -55,7 +60,7 @@ export function ChangelogRuntime({ lang, index, initialRelease, fallbackReleases
|
||||
setErrorMessage(undefined);
|
||||
setRelease(null);
|
||||
|
||||
requestJson<ChangelogRelease>(changelogReleaseUrl(lang, selectedTag))
|
||||
requestJson<ChangelogRelease>(changelogReleaseUrl(changelogDataLang(lang), selectedTag))
|
||||
.then((data) => {
|
||||
if (cancelled) return;
|
||||
cache.set(selectedTag, data);
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
import Link from "next/link";
|
||||
import { contributorAvatarUrl, dedupeContributors, type Contributor } from "@/lib/contributors";
|
||||
import type { DocsLang } from "@/lib/i18n";
|
||||
|
||||
const landingContributorLimit = 72;
|
||||
const landingContributorRowSizes = [12, 16, 16, 16, 12] as const;
|
||||
@@ -30,7 +31,13 @@ function ContributorAvatar({ c }: { c: Contributor }) {
|
||||
);
|
||||
}
|
||||
|
||||
export function ContributorsWallContent({ contributors, title, desc, lang }: { contributors: Contributor[]; title: string; desc: string; lang: "en" | "cn" }) {
|
||||
const WALL_TEXT: Record<DocsLang, { explore: (count: number) => string; certificate: string }> = {
|
||||
en: { explore: (count) => `Explore ${count}+ contributors`, certificate: "Download contributor certificate" },
|
||||
cn: { explore: (count) => `查看 ${count}+ 位贡献者`, certificate: "下载贡献者证书" },
|
||||
tr: { explore: (count) => `${count}+ katkıcıyı görüntüle`, certificate: "Katkı sertifikasını indir" },
|
||||
};
|
||||
|
||||
export function ContributorsWallContent({ contributors, title, desc, lang }: { contributors: Contributor[]; title: string; desc: string; lang: DocsLang }) {
|
||||
const uniqueContributors = dedupeContributors(contributors);
|
||||
const visibleContributors = uniqueContributors.slice(0, landingContributorLimit);
|
||||
let contributorOffset = 0;
|
||||
@@ -48,11 +55,11 @@ export function ContributorsWallContent({ contributors, title, desc, lang }: { c
|
||||
<p className="mt-2 max-w-[650px] text-landing-muted text-sm leading-[1.65] justify-self-end text-right max-[760px]:max-w-none max-[760px]:text-left">
|
||||
{desc}{" "}
|
||||
<Link href={`/${lang}/contributors`} prefetch={false} className="landing-inline-link inline-flex items-center gap-[5px]">
|
||||
{lang === "cn" ? `查看 ${uniqueContributors.length}+ 位贡献者` : `Explore ${uniqueContributors.length}+ contributors`}
|
||||
{WALL_TEXT[lang].explore(uniqueContributors.length)}
|
||||
</Link>
|
||||
<span className="mx-1.5 text-landing-muted" aria-hidden="true">·</span>
|
||||
<Link href={`/${lang}/contributors`} prefetch={false} className="landing-inline-link inline-flex items-center gap-[5px]">
|
||||
{lang === "cn" ? "下载贡献者证书" : "Download contributor certificate"}
|
||||
{WALL_TEXT[lang].certificate}
|
||||
</Link>
|
||||
</p>
|
||||
</div>
|
||||
|
||||
@@ -2,16 +2,17 @@
|
||||
|
||||
import type { ReactNode } from "react";
|
||||
import { useState } from "react";
|
||||
import type { DocsLang } from "@/lib/i18n";
|
||||
|
||||
export function ExpandableDatabaseGrid({ children, lang }: { children: ReactNode; lang: "en" | "cn" }) {
|
||||
const TOGGLE_LABEL: Record<DocsLang, { less: string; more: string }> = {
|
||||
en: { less: "Show fewer databases", more: "Show all databases" },
|
||||
cn: { less: "收起数据库列表", more: "展开全部数据库" },
|
||||
tr: { less: "Daha az veritabanı göster", more: "Tüm veritabanlarını göster" },
|
||||
};
|
||||
|
||||
export function ExpandableDatabaseGrid({ children, lang }: { children: ReactNode; lang: DocsLang }) {
|
||||
const [expanded, setExpanded] = useState(false);
|
||||
const label = expanded
|
||||
? lang === "cn"
|
||||
? "收起数据库列表"
|
||||
: "Show fewer databases"
|
||||
: lang === "cn"
|
||||
? "展开全部数据库"
|
||||
: "Show all databases";
|
||||
const label = expanded ? TOGGLE_LABEL[lang].less : TOGGLE_LABEL[lang].more;
|
||||
|
||||
return (
|
||||
<>
|
||||
|
||||
@@ -5,18 +5,20 @@ import { useCallback, useEffect, useMemo, useRef, useState } from "react";
|
||||
import { createPortal } from "react-dom";
|
||||
import { createInstallOptions, type InstallOption } from "@/lib/downloadLinks";
|
||||
import { detectPlatformId, type DownloadPlatformId } from "@/lib/platformDetection";
|
||||
import type { DocsLang } from "@/lib/i18n";
|
||||
|
||||
type InstallTabsProps = {
|
||||
lang: "en" | "cn";
|
||||
lang: DocsLang;
|
||||
version: string;
|
||||
};
|
||||
|
||||
const downloadLabel = { en: "Download DBX", cn: "下载 DBX" };
|
||||
const selectDownloadLabel = { en: "Choose a version", cn: "选择下载版本" };
|
||||
const selectMacLabel = { en: "Choose a macOS version", cn: "选择 macOS 版本" };
|
||||
const downloadLabel = { en: "Download DBX", cn: "下载 DBX", tr: "DBX'i indir" };
|
||||
const selectDownloadLabel = { en: "Choose a version", cn: "选择下载版本", tr: "Bir sürüm seçin" };
|
||||
const selectMacLabel = { en: "Choose a macOS version", cn: "选择 macOS 版本", tr: "macOS sürümü seçin" };
|
||||
const offlineHint = {
|
||||
en: "Installing offline or using legacy Windows? View the matching installer",
|
||||
cn: "需要离线安装或使用旧版 Windows?查看对应安装包",
|
||||
tr: "Çevrimdışı mı kuruyorsunuz ya da eski bir Windows mu kullanıyorsunuz? Uygun yükleyiciye bakın",
|
||||
};
|
||||
|
||||
const browserStaticText = {
|
||||
@@ -39,6 +41,25 @@ const browserStaticText = {
|
||||
copy: "Copy command",
|
||||
copied: "Copied",
|
||||
},
|
||||
tr: {
|
||||
eyebrow: "Linux tarayıcı paketi",
|
||||
intro: "Kylin, UnionTech UOS ve diğer Linux dağıtımları içindir. DBX yerelde çalışır ve tarayıcınızda açılır.",
|
||||
extract: "Arşivi açın ve paket dizinine girin",
|
||||
start: "DBX'i başlatın",
|
||||
open: "Yerel tarayıcınızda açın",
|
||||
port: "Farklı bir port mu gerekiyor?",
|
||||
portHint: "8080 yerine kullanılabilir başka bir yerel port yazın.",
|
||||
browserStyle: "Sayfa düzeni bozuk mu görünüyor?",
|
||||
browserStyleHint: [
|
||||
"İç ağ veya kurumsal Linux ortamlarındaki bazı tarayıcılar, DBX'in kullandığı modern web standartlarını tam desteklemeyen eski tarayıcı motorları kullanır; bu da eksik veya hatalı biçimlendirmeye yol açar.",
|
||||
"Örneğin Chromium 90 tabanlı eski QiAnXin tarayıcı sürümlerinde bu davranış görülebilir.",
|
||||
"Tarayıcıyı en son sürümüne güncelleyin ya da güncel bir Chrome, Edge veya Firefox sürümü kullanın.",
|
||||
],
|
||||
download: "İndir",
|
||||
close: "Kurulum kılavuzunu kapat",
|
||||
copy: "Komutu kopyala",
|
||||
copied: "Kopyalandı",
|
||||
},
|
||||
cn: {
|
||||
eyebrow: "Linux 浏览器版",
|
||||
intro: "适用于麒麟、统信 UOS 等 Linux 发行版。DBX 在本机运行,通过浏览器访问。",
|
||||
@@ -56,6 +77,27 @@ const browserStaticText = {
|
||||
},
|
||||
};
|
||||
|
||||
const INSTALL_ARIA: Record<DocsLang, { moreOptions: string; options: string; guide: (label: string) => string; download: (label: string) => string }> = {
|
||||
en: {
|
||||
moreOptions: "Show other download options",
|
||||
options: "Download options",
|
||||
guide: (label) => `View installation guide for ${label}`,
|
||||
download: (label) => `Download ${label}`,
|
||||
},
|
||||
cn: {
|
||||
moreOptions: "显示其他下载选项",
|
||||
options: "下载选项",
|
||||
guide: (label) => `查看 ${label} 安装说明`,
|
||||
download: (label) => `下载 ${label}`,
|
||||
},
|
||||
tr: {
|
||||
moreOptions: "Diğer indirme seçeneklerini göster",
|
||||
options: "İndirme seçenekleri",
|
||||
guide: (label) => `${label} kurulum kılavuzunu görüntüle`,
|
||||
download: (label) => `${label} indir`,
|
||||
},
|
||||
};
|
||||
|
||||
const platformIconPaths = {
|
||||
dark: {
|
||||
"linux-arm": "/icons/platform/linux.svg",
|
||||
@@ -83,7 +125,7 @@ function PlatformIcon({ id, size, variant }: { id: string; size: number; variant
|
||||
return <img alt="" aria-hidden="true" height={size} src={src} width={size} />;
|
||||
}
|
||||
|
||||
function BrowserStaticDialog({ lang, option, version, onClose }: { lang: "en" | "cn"; option: InstallOption; version: string; onClose: () => void }) {
|
||||
function BrowserStaticDialog({ lang, option, version, onClose }: { lang: DocsLang; option: InstallOption; version: string; onClose: () => void }) {
|
||||
const closeButtonRef = useRef<HTMLButtonElement>(null);
|
||||
const [copiedCommand, setCopiedCommand] = useState<string | null>(null);
|
||||
const text = browserStaticText[lang];
|
||||
@@ -292,7 +334,7 @@ export function InstallTabs({ lang, version }: InstallTabsProps) {
|
||||
aria-controls="landing-install-menu"
|
||||
aria-expanded={open}
|
||||
aria-haspopup="menu"
|
||||
aria-label={lang === "cn" ? "显示其他下载选项" : "Show other download options"}
|
||||
aria-label={INSTALL_ARIA[lang].moreOptions}
|
||||
className="landing-install-toggle grid place-items-center border-0 border-l border-l-[rgba(10,11,13,0.12)] bg-transparent text-[#6a6f78] cursor-pointer"
|
||||
onClick={() => setOpen((current) => !current)}
|
||||
>
|
||||
@@ -303,14 +345,14 @@ export function InstallTabs({ lang, version }: InstallTabsProps) {
|
||||
className="landing-install-menu absolute z-30 top-[calc(100%+12px)] left-1/2 -translate-x-1/2 grid max-h-[min(680px,calc(100vh-140px))] w-[min(410px,calc(100vw-32px))] overflow-y-auto overscroll-contain border border-[rgba(173,176,182,0.17)] rounded-xl py-1.5 max-[760px]:left-auto max-[760px]:translate-x-0"
|
||||
id="landing-install-menu"
|
||||
role="menu"
|
||||
aria-label={lang === "cn" ? "下载选项" : "Download options"}
|
||||
aria-label={INSTALL_ARIA[lang].options}
|
||||
>
|
||||
{menuOptions.map((item) => (
|
||||
<div className="landing-install-option relative grid grid-cols-[24px_minmax(0,1fr)_18px] gap-3 items-center min-h-11 min-w-0 border-0 px-[18px] py-3 bg-transparent text-left cursor-pointer" key={item.id} role="none">
|
||||
{item.action === "instructions" ? (
|
||||
<button
|
||||
type="button"
|
||||
aria-label={lang === "cn" ? `查看 ${item.label} 安装说明` : `View installation guide for ${item.label}`}
|
||||
aria-label={INSTALL_ARIA[lang].guide(item.label)}
|
||||
className="landing-install-download-link absolute inset-0 border-0 bg-transparent cursor-pointer"
|
||||
role="menuitem"
|
||||
onClick={() => {
|
||||
@@ -319,7 +361,7 @@ export function InstallTabs({ lang, version }: InstallTabsProps) {
|
||||
}}
|
||||
/>
|
||||
) : (
|
||||
<a aria-label={lang === "cn" ? `下载 ${item.label}` : `Download ${item.label}`} className="landing-install-download-link absolute inset-0" href={item.href} role="menuitem" />
|
||||
<a aria-label={INSTALL_ARIA[lang].download(item.label)} className="landing-install-download-link absolute inset-0" href={item.href} role="menuitem" />
|
||||
)}
|
||||
<PlatformIcon id={item.iconId} size={20} variant="light" />
|
||||
<span className="grid min-w-0 gap-1">
|
||||
|
||||
@@ -1,10 +1,15 @@
|
||||
import Link from "next/link";
|
||||
import type { DocsLang } from "@/lib/i18n";
|
||||
|
||||
const i18n = {
|
||||
en: {
|
||||
tagline: "20 MB to manage 90+ databases.",
|
||||
copyright: `© ${new Date().getFullYear()} DBX. All rights reserved.`,
|
||||
},
|
||||
tr: {
|
||||
tagline: "90+ veritabanını 20 MB ile yönetin.",
|
||||
copyright: `© ${new Date().getFullYear()} DBX. Tüm hakları saklıdır.`,
|
||||
},
|
||||
cn: {
|
||||
tagline: "20MB,管理90+种数据库。",
|
||||
copyright: `© ${new Date().getFullYear()} DBX.`,
|
||||
@@ -19,7 +24,7 @@ function GithubIcon() {
|
||||
);
|
||||
}
|
||||
|
||||
export function LandingFooter({ lang }: { lang: "en" | "cn" }) {
|
||||
export function LandingFooter({ lang }: { lang: DocsLang }) {
|
||||
const t = i18n[lang];
|
||||
|
||||
return (
|
||||
|
||||
@@ -3,6 +3,13 @@
|
||||
import Link from "next/link";
|
||||
import { Github, Menu, X } from "lucide-react";
|
||||
import { useEffect, useRef, useState } from "react";
|
||||
import type { DocsLang } from "@/lib/i18n";
|
||||
|
||||
// Order of the nav language button, which cycles rather than toggling: with
|
||||
// three locales a two-way "other language" switch would strand Turkish
|
||||
// readers on the Chinese site.
|
||||
const LANG_CYCLE = ["en", "cn", "tr"] as const satisfies readonly DocsLang[];
|
||||
const LANG_BUTTON_LABEL: Record<DocsLang, string> = { en: "EN", cn: "中", tr: "TR" };
|
||||
|
||||
const i18n = {
|
||||
en: {
|
||||
@@ -13,9 +20,23 @@ const i18n = {
|
||||
sponsors: "Sponsors",
|
||||
contributors: "Contributors",
|
||||
drivers: "Offline Drivers",
|
||||
langLabel: "Switch to Chinese",
|
||||
langLabel: "Switch language",
|
||||
menu: "Open navigation",
|
||||
closeMenu: "Close navigation",
|
||||
navLabel: "Primary navigation",
|
||||
},
|
||||
tr: {
|
||||
home: "Ana Sayfa",
|
||||
docs: "Dokümanlar",
|
||||
changelog: "Değişiklik Günlüğü",
|
||||
community: "Topluluk",
|
||||
sponsors: "Sponsorlar",
|
||||
contributors: "Katkıda Bulunanlar",
|
||||
drivers: "Çevrimdışı Sürücüler",
|
||||
langLabel: "Dili değiştir",
|
||||
menu: "Gezinmeyi aç",
|
||||
closeMenu: "Gezinmeyi kapat",
|
||||
navLabel: "Ana gezinme",
|
||||
},
|
||||
cn: {
|
||||
home: "首页",
|
||||
@@ -25,17 +46,18 @@ const i18n = {
|
||||
sponsors: "赞助商",
|
||||
contributors: "贡献者",
|
||||
drivers: "离线驱动",
|
||||
langLabel: "切换到英文",
|
||||
langLabel: "切换语言",
|
||||
menu: "打开导航",
|
||||
closeMenu: "关闭导航",
|
||||
navLabel: "主导航",
|
||||
},
|
||||
};
|
||||
|
||||
export function LandingNav({ lang, active }: { lang: "en" | "cn"; active?: "home" | "databases" | "changelog" | "community" | "issue" | "sponsors" | "contributors" | "drivers" }) {
|
||||
export function LandingNav({ lang, active }: { lang: DocsLang; active?: "home" | "databases" | "changelog" | "community" | "issue" | "sponsors" | "contributors" | "drivers" }) {
|
||||
const ref = useRef<HTMLElement>(null);
|
||||
const [menuOpen, setMenuOpen] = useState(false);
|
||||
const t = i18n[lang];
|
||||
const otherLang = lang === "cn" ? "en" : "cn";
|
||||
const otherLang = LANG_CYCLE[(LANG_CYCLE.indexOf(lang) + 1) % LANG_CYCLE.length];
|
||||
const langHrefMap: Record<string, string> = {
|
||||
databases: `/${otherLang}/databases`,
|
||||
changelog: `/${otherLang}/changelog`,
|
||||
@@ -92,7 +114,7 @@ export function LandingNav({ lang, active }: { lang: "en" | "cn"; active?: "home
|
||||
}, [menuOpen]);
|
||||
|
||||
return (
|
||||
<nav ref={ref} className={`landing-nav${menuOpen ? " is-menu-open" : ""}`} aria-label={lang === "cn" ? "主导航" : "Primary navigation"}>
|
||||
<nav ref={ref} className={`landing-nav${menuOpen ? " is-menu-open" : ""}`} aria-label={t.navLabel}>
|
||||
<div className="landing-nav-inner flex items-center justify-between max-w-[1180px] h-16 mx-auto px-7 max-[760px]:min-h-[60px] max-[760px]:h-auto max-[760px]:px-[18px] max-[760px]:py-2">
|
||||
<Link href={`/${lang}`} prefetch={false} className="landing-nav-brand flex min-h-11 items-center gap-2.5 text-landing-ink text-2xl font-[820]" onClick={() => setMenuOpen(false)}>
|
||||
<img src="/logo-64.png" alt="" aria-hidden="true" width={28} height={28} />
|
||||
@@ -114,7 +136,7 @@ export function LandingNav({ lang, active }: { lang: "en" | "cn"; active?: "home
|
||||
<Github size={18} strokeWidth={2} />
|
||||
</Link>
|
||||
<Link href={langHref} prefetch={false} aria-label={t.langLabel} title={t.langLabel} className="landing-nav-link ml-1.5 inline-flex h-9 items-center justify-center rounded-[7px] border border-landing-line px-3 text-[12px] font-[650] tracking-tight text-landing-muted" onClick={() => setMenuOpen(false)}>
|
||||
文/A
|
||||
{LANG_BUTTON_LABEL[otherLang]}
|
||||
</Link>
|
||||
<button
|
||||
type="button"
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
|
||||
import type { FormEvent } from "react";
|
||||
import { Send } from "lucide-react";
|
||||
import type { DocsLang } from "@/lib/i18n";
|
||||
|
||||
const CONTACT_EMAIL = "1156263951@qq.com";
|
||||
|
||||
@@ -33,6 +34,33 @@ const i18n = {
|
||||
source: "Source page",
|
||||
},
|
||||
},
|
||||
tr: {
|
||||
nameLabel: "Ad",
|
||||
namePlaceholder: "Size nasıl hitap edelim?",
|
||||
emailLabel: "E-posta",
|
||||
emailPlaceholder: "siz@sirket.com",
|
||||
organizationLabel: "Kurum",
|
||||
optional: "isteğe bağlı",
|
||||
organizationPlaceholder: "Şirket, ekip veya topluluk",
|
||||
supportTypeLabel: "Destek türü",
|
||||
supportTypes: ["Finansal sponsorluk", "Altyapı veya hizmet", "Geliştirici araçları", "Topluluk iş birliği", "Diğer"],
|
||||
messageLabel: "DBX'i nasıl desteklemek istersiniz?",
|
||||
messagePlaceholder: "Fikrinizi, sunabileceğiniz kaynakları, öngörülen zaman planını ve öneriyi anlamamıza yardımcı olacak diğer bilgileri paylaşın.",
|
||||
submit: "E-posta ile devam et",
|
||||
privacy: "Bu, e-posta uygulamanızı hazır bir mesajla açar. DBX form içeriğini bu sitede saklamaz.",
|
||||
alternatives: "Bize ulaşmanın diğer yolları",
|
||||
qq: "QQ: 86554840",
|
||||
subject: "DBX sponsorluk başvurusu",
|
||||
emailBody: {
|
||||
greeting: "Merhaba DBX ekibi,",
|
||||
name: "Ad",
|
||||
email: "E-posta",
|
||||
organization: "Kurum",
|
||||
supportType: "Destek türü",
|
||||
message: "Mesaj",
|
||||
source: "Kaynak sayfa",
|
||||
},
|
||||
},
|
||||
cn: {
|
||||
nameLabel: "姓名",
|
||||
namePlaceholder: "怎么称呼你?",
|
||||
@@ -62,7 +90,7 @@ const i18n = {
|
||||
},
|
||||
};
|
||||
|
||||
export function SponsorContactForm({ lang }: { lang: "en" | "cn" }) {
|
||||
export function SponsorContactForm({ lang }: { lang: DocsLang }) {
|
||||
const t = i18n[lang];
|
||||
|
||||
function handleSubmit(event: FormEvent<HTMLFormElement>) {
|
||||
|
||||
@@ -0,0 +1,111 @@
|
||||
---
|
||||
title: DBX'i 1Panel ile Dağıtma
|
||||
description: DBX web sürümünü 1Panel uygulama mağazasından kurun, erişin ve güncelleyin.
|
||||
---
|
||||
|
||||
1Panel uygulama mağazası resmî DBX Docker imajını sunar; böylece DBX web sürümünü elle Docker komutu yazmadan kurup güncelleyebilirsiniz.
|
||||
|
||||
<Callout type="info">
|
||||
1Panel, DBX Web'i kurar. Temel veritabanı sorgulama, nesne gözatma, veri düzenleme, içe/dışa aktarma, yapay zekâ ve sürücü yönetimi sunucuda çalışır. Yerel dosya seçicileri, derin bağlantılar, yerel CLI Agent ve Masaüstü'ne özgü zamanlanmış veritabanı yedeklemeleri Web çalışma zamanının parçası değildir.
|
||||
</Callout>
|
||||
|
||||
## İsteğe bağlı sunucu seçimi
|
||||
|
||||
DBX için hâlâ bir sunucuya ihtiyacınız varsa [RainYun](https://www.rainyun.com/MTE5Mjc4Ng==_) hizmetine bakabilirsiniz. RainYun; bulut sunucular, fiziksel sunucular, oyun barındırma ve geliştirici dostu altyapı hizmetleri sunan bir bulut servis sağlayıcısıdır. Docker ve 1Panel gereksinimlerini karşılayan herhangi bir sunucu da DBX'i barındırabilir.
|
||||
|
||||
## DBX'i Kurma
|
||||
|
||||
1. 1Panel'e giriş yapın ve **Uygulama Mağazası**'nı açın.
|
||||
2. `DBX` araması yapın ve resmî DBX uygulamasını seçin.
|
||||
3. Kurulacak sürümü seçip **Kur**'a tıklayın.
|
||||
4. Kurulum alanlarını gözden geçirin:
|
||||
|
||||
| Ayar | Varsayılan | Açıklama |
|
||||
| --- | --- | --- |
|
||||
| Port | `4224` | DBX Web'e erişmek için kullanılan sunucu portu. Port zaten kullanımdaysa değiştirin. |
|
||||
| Erişim Parolası | Otomatik üretilir | DBX Web'e giriş için kullanılan parola. 1Panel varsayılan değeri `random: true` ayarına göre üretir ve kurulum sırasında değiştirebilirsiniz. |
|
||||
|
||||
5. **Onayla**'ya tıklayın ve 1Panel'in imajı indirip kapsayıcıyı başlatmasını bekleyin.
|
||||
|
||||
<Callout type="info">
|
||||
Erişim parolası, DBX Web giriş parolasıdır; bir veritabanı parolası değildir. Kurulum sırasında gösterilen ya da girdiğiniz parolayı saklayın.
|
||||
</Callout>
|
||||
|
||||
## DBX'i Açma
|
||||
|
||||
Kurulumdan sonra tarayıcıda şu adresi açın:
|
||||
|
||||
```text
|
||||
http://SUNUCU_IP:PORT
|
||||
```
|
||||
|
||||
Örneğin varsayılan portu kullanırken:
|
||||
|
||||
```text
|
||||
http://192.168.1.100:4224
|
||||
```
|
||||
|
||||
Kurulum formundaki **Erişim Parolası**'nı girin. Sayfa açılmıyorsa şunları denetleyin:
|
||||
|
||||
- DBX uygulaması 1Panel'de çalışıyor mu;
|
||||
- tarayıcıdaki port, kurulum formundaki portla aynı mı;
|
||||
- bulut güvenlik grubu ve sunucu güvenlik duvarı bu porta izin veriyor mu;
|
||||
- port başka bir servis tarafından kullanılıyor mu.
|
||||
|
||||
## Kalıcılık ve Güncellemeler
|
||||
|
||||
DBX uygulama verisi, 1Panel uygulama dizinindeki `data` dizininde saklanır ve kapsayıcı içinde `/app/data` konumuna bağlanır. Bu dizin; DBX'in depolama veritabanını, kayıtlı bağlantıları, eklentileri, sürücüleri ve diğer kalıcı çalışma zamanı durumunu içerir. Bağlanan dizin kaldırılmadığı sürece kapsayıcıyı yeniden başlatmak ya da güncellemek bu veriyi korur.
|
||||
|
||||
DBX'i güncellemek için 1Panel'de **Kurulu** uygulamalar altında açın, kullanılabilir bir sürüm seçip güncellemeyi başlatın. Güncellemeden önce veri dizininin sunucu yedeğinize dâhil olduğunu doğrulayın.
|
||||
|
||||
<Callout type="warn">
|
||||
Kayıtlı bağlantıları ve diğer yerel verileri kaldırmak istemiyorsanız DBX'in uygulama veri dizinini silmeyin. Uygulamayı kaldırmadan önce dizini yedekleyin.
|
||||
</Callout>
|
||||
|
||||
<Callout type="warning">
|
||||
`/app/data` dizinini yedeklemek yalnızca DBX uygulama yapılandırmasını ve çalışma zamanı verisini korur. MySQL, PostgreSQL veya diğer hedef veritabanlarındaki iş verisini yedeklemez. Web, Masaüstü'ndeki zamanlanmış veritabanı yedekleme işlerini sunmaz; yerel veritabanı yedeklerini, bulut anlık görüntülerini ya da özel bir yedekleme sistemini kullanın.
|
||||
</Callout>
|
||||
|
||||
DuckDB, `dbx-web` imajına gömülü değildir. İlk açılıştan sonra [Sürücü Yöneticisi](/tr/docs/driver-management) üzerinden ayrıca kurun. Sürücü `/app/data/agents` altında saklanır, bu yüzden aynı veri bağlaması tarafından korunur.
|
||||
|
||||
## Web Yolları ve Dosyaları
|
||||
|
||||
1Panel dağıtımında DBX arka ucu, sunucunun ya da kapsayıcının dosya sistemini okur:
|
||||
|
||||
- SSH özel anahtar yolu, yalnızca tarayıcının çalıştığı bilgisayarda değil, kapsayıcı içinde okunabilir olmalıdır.
|
||||
- JDBC JAR dosyaları, eklentiler, Agent'lar ve indirilen sürücüler sunucu tarafındaki veri dizininde bulunur.
|
||||
- Tarayıcıdan yapılan yüklemeler, bir görev onları okumadan önce denetimli bir sunucu dizinine kopyalanır.
|
||||
- Veritabanı dosyası bağlantıları ve sunucu yolları kapsayıcının bakış açısından değerlendirilmelidir.
|
||||
|
||||
Arayüz kendi bilgisayarınızın tarayıcısında açık diye o bilgisayara ait mutlak bir yol girmeyin. Masaüstü/Web sınırının tamamı için [DBX Nedir?](/tr/docs/what-is-dbx) sayfasına bakın.
|
||||
|
||||
## Veritabanına Bağlanma
|
||||
|
||||
Giriş yaptıktan sonra **Yeni Bağlantı**'ya tıklayın ve hedef veritabanı türünü, adresini, portunu, kullanıcı adını ve veritabanı parolasını girin. DBX kapsayıcısının hedef veritabanına erişebilmesi gerekir:
|
||||
|
||||
- Aynı sunucudaki bir veritabanı için o sunucudan erişilebilen bir adres ve port kullanın.
|
||||
- Aynı Docker ağındaki bir veritabanı için kapsayıcı adını ve kapsayıcı portunu kullanın.
|
||||
- Özel ağdaki bir veritabanı için 1Panel sunucusunu o ağa bağlayın ya da gerektiğinde bir [SSH tüneli](/tr/docs/ssh-tunnel) yapılandırın.
|
||||
|
||||
<Callout type="info">
|
||||
`4224`, DBX Web servis portudur; hedef veritabanının portu değildir. MySQL, PostgreSQL, Redis veya başka bir bağlantı oluştururken veritabanının kendi portunu girin.
|
||||
</Callout>
|
||||
|
||||
## Üretim Dağıtımı Önerileri
|
||||
|
||||
- Örnek bir değer yerine uzun ve benzersiz bir erişim parolası kullanın.
|
||||
- 1Panel ters proxy'si üzerinden HTTPS yapılandırın; güvenlik grubu ve sunucu güvenlik duvarı açıklığını sınırlayın.
|
||||
- Denetimli yükseltmeler önemliyse bir sürüme sabitleyin; güncellemeden önce `/app/data` dizinini yedekleyin ve [Değişiklik Günlüğü](/tr/changelog) sayfasını okuyun.
|
||||
- En az yetkili, özel bir veritabanı hesabı kullanın ve üretim bağlantılarında salt okunur korumayı tercih edin.
|
||||
- Sürücü ve eklenti kaynaklarını inceleyin; güvenmediğiniz JAR ya da çalıştırılabilir dosyaları veri dizinine koymayın.
|
||||
|
||||
Veritabanı, yazma, yapay zekâ ve API sınırları için [Üretim Güvenliği](/tr/docs/production-safety) sayfasına bakın.
|
||||
|
||||
<Cards>
|
||||
<Card title="Sürücü Yöneticisi" href="/tr/docs/driver-management">
|
||||
Web'in gerektirdiği DuckDB, JDBC ve Agent sürücülerini kurun, çalışma zamanı durumlarını inceleyin.
|
||||
</Card>
|
||||
<Card title="Veritabanı Yedekleme" href="/tr/docs/database-backup">
|
||||
Masaüstü zamanlanmış yedekleme desteğini ve Web dağıtımlarının neden dış bir yedekleme planına ihtiyaç duyduğunu öğrenin.
|
||||
</Card>
|
||||
</Cards>
|
||||
@@ -0,0 +1,190 @@
|
||||
---
|
||||
title: Yapay Zekâ Asistanı
|
||||
description: Şema bağlamıyla SQL üretmek, veriyi çözümlemek ve denetimli Agent iş akışları çalıştırmak için bulut, uyumlu API ya da yerel CLI modellerini bağlayın.
|
||||
---
|
||||
|
||||
Yapay Zekâ Asistanı; etkin veritabanını, şemayı, SQL'i, hataları, sonuç önizlemesini ve açıkça belirtilen nesneleri SQL üretimi, açıklama, iyileştirme, hata düzeltme ve veri analizi için bağlam hâline getirir.
|
||||
|
||||
<Callout type="warn">Sor modu öneri üretir. Agent modu, kullanıcı açıkça gerçek veri istediğinde sorgu araçlarını çağırabilir. Her model çıktısı yanlış olabilir. SQL çalıştırmadan önce hedefi, alanları, filtreleri, parametreleri ve etkilenen kapsamı inceleyin.</Callout>
|
||||
|
||||
## Model Tümleştirmeleri
|
||||
|
||||
### API Sağlayıcıları
|
||||
|
||||
DBX şunlar için hazır ayarlar içerir:
|
||||
|
||||
- Claude
|
||||
- OpenAI
|
||||
- Gemini
|
||||
- DeepSeek
|
||||
- Qwen
|
||||
- MiniMax
|
||||
- Ollama
|
||||
- OpenAI Uyumlu
|
||||
- Anthropic Uyumlu
|
||||
- Özel
|
||||
|
||||
Uyumlu ve özel yapılandırmalar; uç noktayı, modeli, API biçemini, kimlik doğrulama yöntemini, proxy'yi, bağlam penceresini ve ek HTTP başlıklarını ayarlayabilir. API biçemleri arasında OpenAI biçemli tamamlamalar, Responses API'si ve Anthropic Messages bulunur. Desteklendiğinde DBX modelleri keşfeder ve asistan ya da Agent kullanımına uygun olmayan uç noktaları eler.
|
||||
|
||||
### Yerel CLI Agent'ları
|
||||
|
||||
Masaüstü ayrıca yerelde kurulu ve kimliği doğrulanmış şunları çağırabilir:
|
||||
|
||||
- Claude Code CLI
|
||||
- Codex CLI
|
||||
- Pi Coding Agent
|
||||
|
||||
Çalıştırılabilir yolu ve ek ortam değişkenlerini yapılandırabilirsiniz. CLI Agent'ları Masaüstü bilgisayarında çalışır ve etkin veritabanına DBX kapsamındaki MCP araçlarıyla erişir. Docker/Web bu yerel CLI sağlayıcılarını gizler, çünkü sunucu tarayıcının çalıştığı bilgisayarda bu komutların kurulu olduğunu varsayamaz.
|
||||
|
||||
## Yapılandırma Ekleme
|
||||
|
||||
<Steps>
|
||||
<Step>
|
||||
### Yapay Zekâ Ayarlarını Açın
|
||||
|
||||
Düzenleyici ayarlarında adlandırılmış bir yapay zekâ yapılandırması ekleyin. Aynı sağlayıcı için birden çok uç nokta ya da kimlik bilgisi kaydedilebilir.
|
||||
|
||||
</Step>
|
||||
<Step>
|
||||
### Sağlayıcıyı ve Modeli Seçin
|
||||
|
||||
Bir hazır ayarı, uyumlu API'yi, özel bir uç noktayı ya da yerel CLI'yi kullanın. Modeller mümkün olduğunda sağlayıcıdan ya da CLI'den keşfedilir; aksi hâlde elle girilebilir. Elle girilen modeller geçerli yapılandırmayla kaydedilir ve uyumlu bir sağlayıcı model keşfi sunmadığında ya da keşif başarısız olduğunda seçilebilir kalır.
|
||||
|
||||
</Step>
|
||||
<Step>
|
||||
### Kimlik Doğrulamayı ve Akıl Yürütmeyi Yapılandırın
|
||||
|
||||
API modları bir API anahtarı, kimlik doğrulama yöntemi, uç nokta, proxy ve özel HTTP başlıkları kabul eder. Başlıkları ağ geçidi kimlik doğrulaması ya da kiracı yönlendirmesi için kullanın, örneğin `X-GoModel-User-Path: /dbx-assistant`; bunlar model keşfi, bağlantı testleri, sohbet ve Agent istekleriyle gönderilir. Desteklenen modeller; tek bir evrensel ayar yerine sağlayıcının yeteneklerine göre çaba, akıl yürütme ya da düşünme denetimleri sunar.
|
||||
|
||||
</Step>
|
||||
<Step>
|
||||
### Test Edin ve Kaydedin
|
||||
|
||||
Test; başarıyı, gecikmeyi, geçerli modeli ve kimlik doğrulama, hız sınırı, zaman aşımı ya da eksik model gibi sınıflandırılmış hataları bildirir.
|
||||
|
||||
</Step>
|
||||
</Steps>
|
||||
|
||||
API anahtarları, özel başlık değerleri, CLI ortam değişkenleri ve özel uç noktalar hassas olabilir. Yapılandırma ekran görüntülerini, dışa aktarımlarını ya da hata ayıklama günlüklerini güvenmediğiniz taraflarla paylaşmayın.
|
||||
|
||||
## Sor ve Agent
|
||||
|
||||
| Mod | Ne için uygundur | Araç ve çalıştırma davranışı |
|
||||
| --- | --- | --- |
|
||||
| Sor | SQL üretme, açıklama, iyileştirme, düzeltme ya da çevirme ve mevcut bağlamdan öneri verme | Veritabanını kendiliğinden sorgulamaz; son yanıtlar önerileri doğrulanmış sonuçlardan ayırmalıdır |
|
||||
| Agent | "Sonucu getir", "gerçek veriyi karşılaştır" ya da "önce şemayı incele" gibi yinelemeli kanıt gerektiren istekler | Tabloları listeleyebilir, sütunları okuyabilir, veri örnekleyebilir ve salt okunur sorgular çalıştırabilir; yazmalar tam onay gerektirir |
|
||||
|
||||
Agent yalnızca özgün istek açıkça gerçek veri ya da sonuç istediğinde bir sorgu çalıştırmalıdır. "Bir sorgu yaz" isteği, Agent modunda bile SQL'i çalıştırmadan döndürmelidir.
|
||||
|
||||
## Agent Turları ve Yeniden Denemeler
|
||||
|
||||
- **En fazla Agent turu** varsayılan olarak 30'dur ve 5 ile 500 arasında ayarlanabilir. Model, araç ve düzeltme döngüsü yinelemelerini sınırlar
|
||||
- **En fazla API yeniden denemesi** varsayılan olarak 2'dir ve hız sınırları, zaman aşımları ile geçici ağ hataları için 0 ile 10 arasında ayarlanabilir. Claude Code, Codex ve Pi CLI sağlayıcıları bu API yeniden deneme ayarını kullanmaz
|
||||
- Agent; tur sınırına ulaştığında, iptal edildiğinde, bağlantı koptuğunda ya da araç politikası tarafından reddedildiğinde durur ve tamamlanan adımlar ile hataları saklar
|
||||
|
||||
Tur sınırını artırmak gecikmeyi, veritabanı okumalarını ve model maliyetini yükseltir. Sınırı artırmadan önce açık istemleri, açıkça belirtilmiş tabloları ve daha dar bir kapsamı tercih edin.
|
||||
|
||||
## Şema, Tablo ve SQL Dosyası Bağlamı
|
||||
|
||||
Yapay zekâ bağlamı şunları içerebilir:
|
||||
|
||||
- Veritabanı türü, bağlantı adı, veritabanı ve şema
|
||||
- Düzenleyicideki geçerli ya da seçili SQL ve en son hata
|
||||
- Tablolar, sütunlar, dizinler, yabancı anahtarlar ve sınırlı sayıda örnek satır
|
||||
- Geçerli sonucun sınırlı bir önizlemesi
|
||||
- Seçili istem şablonları
|
||||
- Başvurulan kayıtlı SQL dosyası içeriği
|
||||
|
||||
Tabloları ve kayıtlı SQL dosyalarını aramak için istemde `@` yazın:
|
||||
|
||||
- `@users`, `users` tablosunun meta verisini önceler
|
||||
- `@public.orders`, şema nitelikli bir tablo seçer
|
||||
- Birden çok tablo ya da SQL dosyası birlikte seçilebilir
|
||||
|
||||
Büyük şemalar kısaltılır. Açıkça belirtmek, modelin tüm nesneler arasında tahmin yürütmesini istemekten daha güvenilirdir; ayrıca belirteç sayısını ve meta veri isteklerini azaltır.
|
||||
|
||||
## Genel Yönergeler ve İstem Şablonları
|
||||
|
||||
Ayarlar şunları saklayabilir:
|
||||
|
||||
- Her isteğe eklenen **genel yönergeler**: adlandırma kuralları, saat dilimi, yumuşak silme uygulamaları ya da üretim kısıtları gibi
|
||||
- Yeniden kullanılabilir senaryolar için **istem şablonları**: "yalnızca PostgreSQL uyumlu SQL" ya da "her analize dizin önerileri ekle" gibi
|
||||
|
||||
Aynı anda birden çok şablon etkin olabilir. DBX, istek gönderildiğinde seçili şablonların ve genel yönergelerin anlık görüntüsünü alır; böylece sonraki düzenlemeler çalışan bir görevi değiştirmez.
|
||||
|
||||
Şablonlar ayrıca **bir veya daha fazla veritabanı türü için varsayılan** olarak işaretlenebilir (Ayarlar → Yapay Zekâ'da şablonun yanındaki yıldız simgesi). Yapay zekâ paneli o veritabanı türündeki bir bağlantıda açıldığında — ya da farklı bir bağlantıya, veritabanına veya şemaya geçildikten sonra — eşleşen varsayılanlar, elle seçimle aynı toplam içerik sınırına tabi olarak otomatik uygulanır. Geçerli veritabanı türü için varsayılan yapılandırılmamışsa, yeni açılan panel o veritabanı türüyle en son kullanılan şablonları geri yükler; hiçbir şablon seçili değilken gönderim yapmak bu hatırlanan seçimi temizler. Bağlantı, veritabanı ya da şema değiştirmek yalnızca açık varsayılanları uygular — hiçbiri yapılandırılmamışsa seçim geri yüklenmez, boş başlar. Elle yapılan seçim kaldırma, panel yeniden açılana ya da ad alanı değişene kadar her zaman önceliklidir.
|
||||
|
||||
Şablonlar model bağlamına girer. İçlerine parola, belirteç ya da gereksiz iş verisi koymayın. Kuralları kısa ve çelişkisiz tutun, çünkü modeller çelişen yönergeleri beklendiği gibi çözemeyebilir.
|
||||
|
||||
## Yazmalar ve Üretim Güvenliği
|
||||
|
||||
Yapay Zekâ Agent'ının yürütme sınırları yalnızca istemle değil, arka uç tarafından uygulanır:
|
||||
|
||||
1. Salt okunur araçlar gerektiğinde çağrılabilir
|
||||
2. Salt okunur olmayan SQL önce açık bir öneri olarak gösterilmelidir
|
||||
3. Kullanıcı onayı yetkiyi aynı bağlantıya, aynı veritabanına ve tam SQL metnine bağlar
|
||||
4. Yetki yalnızca bir sonraki çalıştırma için geçerlidir ve hiçbir zaman kalıcı bir yazma izni olmaz
|
||||
5. Yapay zekâ Agent'ları üretim veritabanları için yazma ya da DDL yetkisi alamaz; yalnızca DBX'te elle incelenmek üzere SQL döndürebilir
|
||||
|
||||
Bağlantının salt okunur koruması, üretim koruması ve veritabanı kimlik bilgileri üst sınır olmayı sürdürür. Hedef değişikliği, SQL değişikliği, boş onay ya da arka uçtaki risk sınıflandırmasının başarısız olması yetkiyi geçersiz kılar.
|
||||
|
||||
<Callout type="info">Yapay Zekâ Agent'ı hiçbir zaman "bundan sonra yazabilirsin" izni almaz ve MCP politikasını, bağlantının salt okunur korumasını ya da veritabanı yetkilerini atlayamaz. Sınırın tamamı için [Üretim Güvenliği](/tr/docs/production-safety) sayfasına bakın.</Callout>
|
||||
|
||||
## Akıl Yürütme Çabası ve Düşünme
|
||||
|
||||
Sağlayıcılar farklı mekanizmalar sunar: sıralı çaba düzeyleri, akıl yürütme düzeyleri, boole düşünme, tam sayı bütçeleri ya da serbest metin seçenekleri. DBX, etkin modelin yeteneğine göre denetimleri gösterir ve seçimi yapılandırma ile model başına hatırlar.
|
||||
|
||||
- Basit üretim ve açıklama için sağlayıcı varsayılanını ya da daha düşük çabayı kullanın
|
||||
- Çok tablolu akıl yürütme, zor iyileştirme ya da hata tanılaması için çabayı artırın
|
||||
- Daha yüksek çaba genellikle gecikmeyi ve maliyeti artırır, doğruluğu garanti etmez
|
||||
|
||||
Bir arayüz etiketinin sağlayıcılar arasında birebir aynı anlama geldiğini varsaymayın.
|
||||
|
||||
## Konuşmalar, Geçmiş ve Dışa Aktarma
|
||||
|
||||
- İstem geçmişinde gezinmek için ↑ ve ↓ tuşlarını kullanın
|
||||
- Konuşmalar bağlantı ve veritabanı bağlamıyla kaydedilebilir
|
||||
- Son yapay zekâ analiz mesajları bağlantı adı ve zaman damgasıyla Markdown olarak dışa aktarılabilir
|
||||
- Markdown dışa aktarımı yalnızca son yanıtı içerir; içsel akıl yürütme ve Agent adımları eklenmez
|
||||
|
||||
Dışa aktarımlar yine tablo adları, SQL, sonuç parçaları ve iş verisi içerebilir. Paylaşmadan önce inceleyip maskeleyin.
|
||||
|
||||
## Yaygın Görevler
|
||||
|
||||
### SQL Üretme
|
||||
|
||||
> `@orders` ve `@customers` tablolarını kullanarak son 30 gün için en yüksek gelirli 10 müşteriyi veren bir sorgu üret. Yalnızca SQL döndür, çalıştırma.
|
||||
|
||||
"Çalıştırma" demek amacı netleştirir. Tarih işlevlerini, şema nitelemesini, join anahtarlarını, null işlemeyi ve satır sınırlarını inceleyin.
|
||||
|
||||
### Gerçek Veriyi Çözümleme
|
||||
|
||||
> `@orders` tablosundan son yedi günün günlük sipariş sayılarını sorgula, salt okunur sorguyu çalıştır ve olağan dışı sıçramaları açıkla.
|
||||
|
||||
Bu, açıkça gerçek sonuç istediği için Agent moduna uygundur.
|
||||
|
||||
### Bir Hatayı Düzeltme
|
||||
|
||||
Başarısız SQL'i, veritabanı hatasını ve ilgili tabloları verin. Yapay zekâ sütunları ve lehçe bağlamını inceleyebilir, ancak sürüme özgü davranış, yetkiler, kilitler ve yürütme planları yine insan doğrulaması gerektirir.
|
||||
|
||||
## Gizlilik ve Sorun Giderme
|
||||
|
||||
- Bulut sağlayıcıları; modele gönderilen istemi, şema özetini, SQL'i ve sınırlı sonuç bağlamını alır; kendi gizlilik koşulları geçerlidir
|
||||
- Ollama ve yerel CLI yerelde çalışabilir, ancak model işleminin ya da CLI eklentilerinin kendi ağ ve günlük davranışları olabilir
|
||||
- Proxy'ler, uyumlu uç noktalar ve özel ağ geçitleri istek içeriğini günlüğe yazabilir
|
||||
- Bağlantı testi hatalarında uç noktayı, kimlik doğrulama yöntemini, model adını, proxy'yi ve API biçemi uyumluluğunu denetleyin
|
||||
- Agent sürekli başarısız oluyorsa yalnızca tur sınırını artırmak yerine bağlamı azaltın, tam tabloları belirtin, görevi daraltın ve araç hatalarını inceleyin
|
||||
|
||||
## İlgili Özellikler
|
||||
|
||||
<Cards>
|
||||
<Card title="Üretim Güvenliği" href="/tr/docs/production-safety">
|
||||
Yapay zekâ, MCP, salt okunur bağlantılar ve üretim koruması için ortak sınırları inceleyin.
|
||||
</Card>
|
||||
<Card title="MCP Tümleştirmesi" href="/tr/docs/mcp">
|
||||
Dış yapay zekâ kodlama asistanlarını DBX üzerinden veritabanlarına bağlayın.
|
||||
</Card>
|
||||
<Card title="Sorgu Düzenleyici" href="/tr/docs/query-editor">
|
||||
Yapay zekânın erişebildiği SQL, sonuç ve meta veri bağlamını öğrenin.
|
||||
</Card>
|
||||
</Cards>
|
||||
@@ -0,0 +1,8 @@
|
||||
---
|
||||
title: Değişiklik Günlüğü
|
||||
description: DBX sürüm notlarını sürüm sürüm izleyin; GitHub Releases ile eşitlenir.
|
||||
---
|
||||
|
||||
Değişiklik günlüğü, R2 üzerindeki en güncel sürüm verisinden yüklenir; böylece dokümantasyon sitesi yeniden derlenmeden bir sürümün ardından tazelenebilir.
|
||||
|
||||
[Canlı değişiklik günlüğünü aç](/tr/changelog)
|
||||
@@ -0,0 +1,244 @@
|
||||
---
|
||||
title: DBX CLI
|
||||
description: Terminallerden, betiklerden, CI'dan ve Codex'ten bağlantıları, şemaları, sorgu sonuçlarını ve yapay zekâ bağlamını okumak için yerel DBX CLI'yi kullanın.
|
||||
---
|
||||
|
||||
<Callout type="info">DBX CLI; terminal, betik ve kodlama agent'ı iş akışları için ayrı bir komut satırı paketidir. DBX bağlantı depolamasını ve SQL güvenlik kurallarını MCP sunucusuyla paylaşır.</Callout>
|
||||
|
||||
## Kurulum
|
||||
|
||||
### npm
|
||||
|
||||
```bash
|
||||
npm install -g @dbx-app/cli
|
||||
```
|
||||
|
||||
### Homebrew
|
||||
|
||||
```bash
|
||||
brew tap t8y2/tap
|
||||
brew install dbx-cli
|
||||
```
|
||||
|
||||
npm başlatıcısı için Node.js 18.18.0 ya da üstü gereklidir. CLI'nin kendisi `better-sqlite3` ya da bir Node.js yerel modül ABI'sine bağlı değildir. Homebrew kullanıcılarının Node.js'i ayrıca yönetmesi gerekmez.
|
||||
|
||||
### Bağımsız yerel ikili dosya
|
||||
|
||||
`packages-v*` GitHub Sürümü; macOS, Linux ve Windows için yerel CLI arşivleri sunar. Platformunuza uyan arşivi indirin, `CLI-SHA256SUMS` ile doğrulayın, çıkarın ve `dbx` komutunu doğrudan çalıştırın. Bağımsız ikili dosyalar Node.js gerektirmez.
|
||||
|
||||
```bash
|
||||
tar -xzf dbx-cli-linux-x64-gnu.tar.gz
|
||||
chmod +x dbx
|
||||
./dbx --version
|
||||
```
|
||||
|
||||
Özel ya da taşınabilir bir DBX veri dizini kullanırken `DBX_DATA_DIR` değişkenini ayarlayın.
|
||||
|
||||
Kurulu sürümü denetleyin:
|
||||
|
||||
```bash
|
||||
dbx --version
|
||||
```
|
||||
|
||||
## Yaygın Komutlar
|
||||
|
||||
```bash
|
||||
dbx doctor
|
||||
dbx capabilities
|
||||
dbx connections list --json
|
||||
dbx connections list --format csv
|
||||
dbx schema list local --json
|
||||
dbx schema describe local users --json
|
||||
dbx query local "select count(*) as total from users" --json
|
||||
dbx query local "select id, name from users" --format csv
|
||||
dbx query local "select * from users" --limit 50 --timeout 10s --json
|
||||
dbx query local --file ./query.sql --json
|
||||
dbx context local --tables users,orders
|
||||
dbx open local users
|
||||
```
|
||||
|
||||
## Tanılama
|
||||
|
||||
Yerel DBX yollarını, bağlantı deposunun sağlığını ve masaüstü köprüsünün kullanılabilir olup olmadığını incelemek için `dbx doctor` kullanın:
|
||||
|
||||
```bash
|
||||
dbx doctor
|
||||
dbx doctor --json
|
||||
```
|
||||
|
||||
İsteğe bağlı platform paketi kurulmamışsa `--no-optional` olmadan yeniden kurun:
|
||||
|
||||
```bash
|
||||
npm uninstall -g @dbx-app/cli
|
||||
npm install -g @dbx-app/cli
|
||||
```
|
||||
|
||||
Hangi veritabanı türlerinin doğrudan sorgulanabildiğini ve hangilerinin şu anda DBX Masaüstü gerektirdiğini görmek için `dbx capabilities` kullanın:
|
||||
|
||||
```bash
|
||||
dbx capabilities
|
||||
dbx capabilities --json
|
||||
```
|
||||
|
||||
CLI ikili dosyası şu anda PostgreSQL, Redshift, MySQL, Doris, StarRocks, Manticore Search, SQLite, rqlite, KWDB ve QuestDB türlerini doğrudan sorgulanabilir olarak listeler. Kurulu sürüm için asıl kaynak `dbx capabilities` çıktısıdır. Diğer türler; çalışan bir DBX Masaüstü köprüsünü ya da kendi Agent/dış sürücü altyapılarını gerektirir.
|
||||
|
||||
## Çalıştırma Modları
|
||||
|
||||
### Yerel Depolama
|
||||
|
||||
CLI varsayılan olarak Masaüstü ve MCP'nin kullandığı aynı `dbx.db` bağlantı deposunu okur. `DBX_DATA_DIR`, `dbx.db` dosyasını içeren dizini göstermelidir.
|
||||
|
||||
- Doğrudan sorgulanabilir türler Masaüstü kapalıyken de çalışabilir
|
||||
- Köprü gerektiren türler, Masaüstü'nün çalışmasını ve veri dizinindeki köprü port dosyası aracılığıyla bulunabilmesini gerektirir
|
||||
- Agent/JDBC, DuckDB ve diğer dış sürücü yolları yine DBX üzerinden kurulmuş bileşenleri gerektirir
|
||||
- `dbx open` her zaman bir Masaüstü arayüz işlemidir ve uygulama kullanılamadığında `DBX_NOT_RUNNING` döndürür
|
||||
|
||||
### DBX Web ve Docker
|
||||
|
||||
Yerel bağlantı deposu yerine dağıtılmış bir DBX Web arka ucunu kullanmak için `DBX_WEB_URL` değişkenini ayarlayın:
|
||||
|
||||
```bash
|
||||
DBX_WEB_URL=https://dbx.example.com \
|
||||
DBX_WEB_PASSWORD='giris-parolaniz' \
|
||||
dbx connections list --json
|
||||
```
|
||||
|
||||
`DBX_WEB_PASSWORD`, Web giriş parolasıdır. Web modunda bağlantılar, yetkiler, sürücüler ve dosya yolları sunucu ortamına aittir. `dbx open` yine yerel bir Masaüstü köprüsünü hedefler ve uzak bir Web otomasyon API'si olarak görülmemelidir.
|
||||
|
||||
## Varsayılan Bağlantı
|
||||
|
||||
Sorgu ve bağlam komutlarında bağlantı adını atlamak için `DBX_CONNECTION` değişkenini ayarlayın:
|
||||
|
||||
```bash
|
||||
DBX_CONNECTION=local dbx query "select 1" --json
|
||||
DBX_CONNECTION=local dbx context --tables users,orders
|
||||
```
|
||||
|
||||
## Çıktı Biçimleri
|
||||
|
||||
Kararlı, makine tarafından okunabilir çıktı için `--json` ya da `--format json` kullanın. Başka komut satırı araçlarına aktarılacak sorgu, bağlantı ve şema verisi için `--format csv` kullanın.
|
||||
|
||||
```bash
|
||||
dbx query local "select id, name from users" --format csv
|
||||
```
|
||||
|
||||
Hatalar stderr'e yazılır ve sıfır olmayan bir çıkış kodu döndürülür.
|
||||
|
||||
## Sorgu Denetimleri
|
||||
|
||||
`dbx query`, SQL bağlantıları için SQL çalıştırır ve MongoDB bağlantıları için desteklenen Mongo kabuk komutlarını kabul eder. Redis bu komutla çalıştırılmaz; bunun yerine MCP Redis aracını ya da DBX çalışma alanını kullanın. Sorgu modu varsayılan olarak salt okunurdur.
|
||||
|
||||
```bash
|
||||
dbx query local "select * from users" --limit 50 --timeout 10s --json
|
||||
```
|
||||
|
||||
Süreler `ms`, `s` ya da `m` kabul eder; örneğin `500ms`, `10s` veya `1m`.
|
||||
|
||||
Tehlikeli olmayan yazma ifadeleri için `--allow-writes` kullanın:
|
||||
|
||||
```bash
|
||||
dbx query local "update users set name = 'Ada' where id = 1" --allow-writes
|
||||
```
|
||||
|
||||
`DROP`, `TRUNCATE` ve `ALTER` gibi tehlikeli SQL hem `--allow-writes` hem `--allow-dangerous-sql` gerektirir. Açık işlem ifadeleri CLI tarafından engellenmeye devam eder; sabitlenmiş çok adımlı oturumlar için [MCP durumlu oturumlarını](/tr/docs/mcp) ya da DBX düzenleyicisini kullanın.
|
||||
|
||||
Üretim veritabanlarına yapılan yazmalar ve DDL, iki bayrak da verilse bile engellenir. Üretim algılaması, SQL risk sınıflandırması, bağlantının salt okunur koruması ve veritabanı yetkileri bağımsız üst sınırlardır; bayraklar bir üretim atlatması değildir.
|
||||
|
||||
## Tire ile Başlayan SQL
|
||||
|
||||
Tire ile başlayan SQL'den önce `--` geçirin:
|
||||
|
||||
```bash
|
||||
dbx query local --json -- "-- comment
|
||||
select 1"
|
||||
```
|
||||
|
||||
## Hata Kodları
|
||||
|
||||
CLI JSON hataları kararlı kodlar kullanır:
|
||||
|
||||
| Kod | Anlamı |
|
||||
| ------------------------ | --------------------------------------------------- |
|
||||
| `UNKNOWN_OPTION` | Desteklenmeyen bir bayrak verildi |
|
||||
| `INVALID_OPTION` | Bir bayrağın değeri eksik ya da geçersiz |
|
||||
| `INVALID_ARGUMENT` | Konumsal argümanlar eksik ya da çelişkili |
|
||||
| `CONNECTION_STORE_ERROR` | DBX bağlantı deposu var ama okunamadı |
|
||||
| `CONNECTION_NOT_FOUND` | İstenen adla eşleşen DBX bağlantısı yok |
|
||||
| `SQL_BLOCKED` | SQL güvenlik kuralları çalıştırmayı engelledi |
|
||||
| `DBX_NOT_RUNNING` | DBX Masaüstü köprüsü kullanılamıyor |
|
||||
| `ERROR` | Beklenmeyen çalışma zamanı hatası |
|
||||
|
||||
## Masaüstü Derin Bağlantıları
|
||||
|
||||
DBX Masaüstü; istemciyi tarayıcılardan, bastion sunuculardan ya da betiklerden başlatmak için derin bağlantıları destekler.
|
||||
|
||||
Başka bir iletişim kutusu açmadan DBX'i başlatın ya da öne getirin:
|
||||
|
||||
```bash
|
||||
open 'dbx://open'
|
||||
```
|
||||
|
||||
Bir web düğmesi protokole doğrudan bağlanabilir:
|
||||
|
||||
```html
|
||||
<a href="dbx://open">DBX'te Aç</a>
|
||||
```
|
||||
|
||||
Bağlantı alanları önceden doldurulmuş yeni bağlantı iletişim kutusunu açmak için `dbx://connection/new` kullanın.
|
||||
|
||||
DSN modu:
|
||||
|
||||
```bash
|
||||
open 'dbx://connection/new?url=postgres%3A%2F%2Fapp%3Asecret%40db.internal%3A5432%2Forders'
|
||||
```
|
||||
|
||||
Alan modu:
|
||||
|
||||
```bash
|
||||
open 'dbx://connection/new?type=mysql&host=127.0.0.1&port=3306&user=root&password=secret&database=test'
|
||||
```
|
||||
|
||||
Desteklenen alanlar:
|
||||
|
||||
| Alan | Anlamı |
|
||||
| ------------ | ---------------------------------------------------------------------------------------- |
|
||||
| `type` | Veritabanı türü; servis türleri arasında `etcd`, `consul`, `nacos-v2`, `nacos-v3`, `r-nacos` bulunur |
|
||||
| `url` | Veritabanı DSN'i; URL kodlaması önerilir |
|
||||
| `name` | DBX'te görünen ad; verilmezse DBX önce `database`, sonra `host` değerini kullanır |
|
||||
| `host` | Ana makine adı ya da IP adresi |
|
||||
| `port` | Port |
|
||||
| `user` | Kullanıcı adı |
|
||||
| `password` | Parola |
|
||||
| `database` | Veritabanı adı; Redis için bu `0` gibi bir VT dizini olabilir |
|
||||
| `url_params` | Ek bağlantı parametreleri, örneğin `sslmode=require` |
|
||||
| `ssl` | `true` olduğunda SSL'i etkinleştirir |
|
||||
| `one_time` | `true` olduğunda otomatik bağlanır, bağlantı kesildikten sonra bağlantıyı siler |
|
||||
|
||||
Tek seferlik bağlantı örneği:
|
||||
|
||||
```bash
|
||||
open 'dbx://connection/new?type=redis&host=127.0.0.1&port=6379&user=default&password=secret&database=0&one_time=true'
|
||||
```
|
||||
|
||||
Nacos ve servis kaydı örnekleri:
|
||||
|
||||
```bash
|
||||
open 'dbx://connection/new?type=consul&host=127.0.0.1&port=8500&password=acl-token'
|
||||
open 'dbx://connection/new?type=nacos-v3&host=127.0.0.1&port=8848&user=nacos&password=secret'
|
||||
open 'dbx://connection/new?type=r-nacos&url=http%3A%2F%2F127.0.0.1%3A8848%2Fnacos&user=admin&password=secret'
|
||||
```
|
||||
|
||||
`nacos`, `nacos-v2` için; `rnacos`, `r-nacos` için takma addır. URL modunda servis uç noktası yolları korunur; üst düzeydeki `host`, `port`, `user`, `password` ve `ssl` alanları `url` içindeki değerleri geçersiz kılar. Consul için `password`, ACL belirtecidir. `password` verildiğinde Nacos `user` alanını gerektirir. `v` alanını atlamak ya da `v=1` kullanmak geçerli derin bağlantı protokolünü seçer; diğer sürümler reddedilir.
|
||||
|
||||
<Callout type="info">Sistem düzeyindeki `dbx://` başlatmalarını test etmeden önce DBX Masaüstü'nü bir kez kurup açın; böylece işletim sistemi URL şemasını kaydedebilir. macOS'ta test etmek için `open 'dbx://open'` ya da `open 'dbx://connection/new?...'` kullanın.</Callout>
|
||||
|
||||
<Callout type="warning">Bir derin bağlantı, tarayıcı ve terminal geçmişinde bir veritabanı parolasını ya da Consul ACL belirtecini açığa çıkarabilir. Kimlik bilgisi taşıyan bağlantıları ortak günlüklere, kabuk geçmişine, biletlere ya da sohbet mesajlarına koymayın.</Callout>
|
||||
|
||||
## Codex
|
||||
|
||||
Codex, CLI'yi doğrudan kabuk araçlarından çağırabilir:
|
||||
|
||||
```bash
|
||||
dbx schema describe local users --json
|
||||
dbx context local --tables users,orders | codex exec "Write a retention query"
|
||||
```
|
||||
@@ -0,0 +1,176 @@
|
||||
---
|
||||
title: DBX Yapılandırma Bulut Eşitlemesi
|
||||
description: DBX bağlantılarını, ayarlarını ve kayıtlı SQL'i WebDAV, GitHub Gist ya da Gitee parçacıklarıyla eşitleyin.
|
||||
---
|
||||
|
||||
<Callout type="info">
|
||||
DBX; bağlantıları, uygulama ayarlarını ve kayıtlı SQL'i tek bir anlık görüntüde paketleyebilir. Masaüstü WebDAV ya da özel parçacıklarla eşitleyebilir; Web/Docker WebDAV ile eşitleyip anlık görüntüyü başka bir DBX örneğinde geri yükleyebilir.
|
||||
</Callout>
|
||||
|
||||
<Callout type="warn">Bulut Eşitleme, DBX yapılandırmasını yedekler. Bağlantılarınızın arkasındaki iş veritabanlarını okumaz ya da yedeklemez. Şema ve veri için [Veritabanı Dışa Aktarma](/tr/docs/database-export), zamanlanmış Masaüstü MySQL/PostgreSQL yedekleri için [Veritabanı Yedekleme](/tr/docs/database-backup) sayfasını kullanın.</Callout>
|
||||
|
||||
**Ayarlar → Eşitleme** altından bir sağlayıcı seçin:
|
||||
|
||||
- **WebDAV**: Zaten bir NAS, Nextcloud ya da başka bir WebDAV hizmeti kullanıyorsanız en uygunudur. Zamanlanmış yüklemeleri destekler.
|
||||
- **GitHub / Gitee parçacıkları**: Anlık görüntüyü kendi sunucunuza gerek kalmadan özel bir Gist ya da kod parçacığında saklar. Şu anda yalnızca Masaüstü'nde sunulur ve yüklemeler ile indirmeler elle yapılır.
|
||||
|
||||
## Neler Eşitlenir
|
||||
|
||||
| Öğe | Varsayılan davranış |
|
||||
| --- | --- |
|
||||
| Veritabanı bağlantıları ve gizli olmayan seçenekler | Eşitlenir |
|
||||
| Kenar çubuğu düzeni ve sabitlenmiş düğümler | Eşitlenir |
|
||||
| Kayıtlı SQL kitaplığı | Eşitlenir |
|
||||
| Masaüstü ve düzenleyici ayarları | Eşitlenir |
|
||||
| Veritabanı, SSH, proxy, HTTP tüneli, bağlantı dizesi ve yapay zekâ API gizli bilgileri | Varsayılan olarak hariç; şifrelenip eşitlenebilir |
|
||||
| JDBC sürücüleri, eklentiler ve yerel dosyalar | Eşitlenmez |
|
||||
|
||||
<Callout type="warn">
|
||||
İndirme; yerel bağlantı meta verisini ve kayıtlı SQL'i uzak anlık görüntüyle değiştirir. Geri yüklemeden önce parçacık kimliğini ya da WebDAV yolunu doğrulayın.
|
||||
</Callout>
|
||||
|
||||
## GitHub Gist
|
||||
|
||||
### Erişim Belirteci Oluşturma
|
||||
|
||||
Bir GitHub **ayrıntılı kişisel erişim belirteci** önerilir:
|
||||
|
||||
[GitHub ayrıntılı belirteç oluşturma sayfasını açın](https://github.com/settings/personal-access-tokens/new)
|
||||
|
||||
<Steps>
|
||||
<Step>
|
||||
### Belirteç ayarlarını açın
|
||||
|
||||
GitHub'a giriş yapın ve **Settings → Developer settings → Personal access tokens → Fine-grained tokens** bölümünü açın.
|
||||
</Step>
|
||||
<Step>
|
||||
### Bir belirteç oluşturun
|
||||
|
||||
**Generate new token**'ı seçin, ardından bir ad ve sona erme tarihi belirleyin.
|
||||
</Step>
|
||||
<Step>
|
||||
### Yetki verin
|
||||
|
||||
**Account permissions** altında **Gists** yetkisini **Read and write** yapın. Depo yetkileri gerekmez.
|
||||
</Step>
|
||||
<Step>
|
||||
### Belirteci kaydedin
|
||||
|
||||
Belirteci hemen kopyalayın. GitHub belirtecin tamamını yalnızca bir kez gösterir.
|
||||
</Step>
|
||||
</Steps>
|
||||
|
||||
Klasik bir belirteç de çalışır, ancak yalnızca `gist` kapsamını verin.
|
||||
|
||||
### İlk Yükleme
|
||||
|
||||
<Steps>
|
||||
<Step>
|
||||
### GitHub'ı seçin
|
||||
|
||||
**Ayarlar → Eşitleme → GitHub / Gitee** bölümünü açın ve **GitHub Gist**'i seçin.
|
||||
</Step>
|
||||
<Step>
|
||||
### Belirteci girin
|
||||
|
||||
Erişim belirtecini yapıştırın. **Bu aygıtta şifreli olarak sakla** seçeneğini açmanız önerilir.
|
||||
</Step>
|
||||
<Step>
|
||||
### Gist'i oluşturun
|
||||
|
||||
**Parçacık Kimliği** alanını boş bırakın ve **Yükle**'yi seçin. DBX özel bir Gist oluşturur ve dönen kimliği saklar.
|
||||
</Step>
|
||||
</Steps>
|
||||
|
||||
DBX, Gist içinde şifreli bir `dbx-sync.json` dosyası saklar. Parçacık şifreleme parolası anlık görüntünün tamamını korur, bu yüzden URL; bağlantı ayrıntılarını, SQL'i ya da ayarları açığa çıkarmaz. Eski sürümlerden kalan düz metin parçacıkları taşıma için hâlâ bir kez indirilebilir.
|
||||
|
||||
<Callout type="warn">
|
||||
Eski sürümlerin oluşturduğu düz metin parçacıkları yerinde güvenle taşınamaz: aynı Gist'i güncellemek revizyon geçmişini kaldırmaz. Bunun yerine **Eski parçacığı taşı** işlemini kullanın. DBX önce mevcut uzak anlık görüntüyü yeni bir parçacığa şifreler, yeni kimliği yerelde saklar ve silmeden önce eski parçacığı yeniden okur. Başka bir aygıt eski içeriği değiştirdiyse DBX otomatik temizliği durdurur ve hangi eski parçacığın elle silinmesi gerektiğini bildirir. Eski anlık görüntü şifreli kimlik bilgileri içeriyorsa, DBX bunları temizlemeden önce doğrulayabilsin diye özgün kimlik bilgisi parolasını girin. Eski parçacığın açığa çıkarmış olabileceği tüm kimlik bilgilerini değiştirin.
|
||||
</Callout>
|
||||
|
||||
### Başka Bir Aygıtta Geri Yükleme
|
||||
|
||||
1. Özel Gist'i açın ve kimliğini URL'den kopyalayın. URL normalde `https://gist.github.com/<gerçek-kullanıcı-adı>/<gist-kimliği>` biçimindedir; son bölüm kimliktir. Ayrıca `https://gist.github.com/<gist-kimliği>` adresini açıp GitHub'ın gerçek kullanıcı adını içeren URL'ye yönlendirmesini de sağlayabilirsiniz.
|
||||
2. Yeni aygıtta aynı GitHub belirtecini ve Gist kimliğini girin.
|
||||
3. Erişimi doğrulamak için **Test Et**'i seçin.
|
||||
4. **İndir**'i seçip geri yüklemeyi onaylayın.
|
||||
|
||||
## Gitee Parçacıkları
|
||||
|
||||
### Kişisel Erişim Belirteci Oluşturma
|
||||
|
||||
[Gitee kişisel erişim belirteci sayfasını açın](https://gitee.com/profile/personal_access_tokens)
|
||||
|
||||
<Steps>
|
||||
<Step>
|
||||
### Belirteç ayarlarını açın
|
||||
|
||||
Gitee'ye giriş yapın ve **Ayarlar → Kişisel Erişim Belirteçleri** bölümünü açın.
|
||||
</Step>
|
||||
<Step>
|
||||
### Bir belirteç oluşturun
|
||||
|
||||
**Yeni belirteç üret**'i seçin ve bir açıklama girin.
|
||||
</Step>
|
||||
<Step>
|
||||
### Yetki verin
|
||||
|
||||
Yalnızca kod parçacığı (`gists`) yetkisini seçin. Yetkiler gruplanmışsa parçacıkları okuyup yazmaya izin veren en küçük yetkiyi seçin.
|
||||
</Step>
|
||||
<Step>
|
||||
### Belirteci kaydedin
|
||||
|
||||
Üretilen belirteci hemen kopyalayın ve bir parola yöneticisinde saklayın.
|
||||
</Step>
|
||||
</Steps>
|
||||
|
||||
### Yükleme ve Geri Yükleme
|
||||
|
||||
1. **Ayarlar → Eşitleme → GitHub / Gitee** altında **Gitee Parçacığı**'nı seçin.
|
||||
2. Kişisel erişim belirtecini girin. İlk yüklemede parçacık kimliğini boş bırakın; DBX özel bir parçacık oluşturur ve kimliğini saklar.
|
||||
3. Başka bir yerde geri yüklemek için aynı parçacık kimliğini girip **İndir**'i seçin.
|
||||
|
||||
Gitee parçacıkları da bir `dbx-sync.json` dosyası kullanır.
|
||||
|
||||
## Eşitleme Parolası ve Gizli Bilgiler
|
||||
|
||||
GitHub Gist ve Gitee parçacıkları anlık görüntünün tamamını her zaman bir **parçacık şifreleme parolasıyla** şifreler. Parola hiçbir zaman yüklenmez ya da kaydedilmez ve kurtarılamaz. Bu parola, isteğe bağlı olarak eşitlenen kimlik bilgilerini şifreleyen paroladan bağımsızdır.
|
||||
|
||||
Anlık görüntüler varsayılan olarak kimlik bilgilerini dışarıda bırakır. Parolaları başka bir aygıtta geri yüklemek için:
|
||||
|
||||
1. **Yüklerken şifreli kimlik bilgilerini dâhil et** seçeneğini açın.
|
||||
2. Kimlik bilgileri için ayrı bir **eşitleme parolası** girin.
|
||||
3. Anlık görüntüyü yükleyin.
|
||||
4. Diğer aygıtta **İndirirken şifreli kimlik bilgilerini geri yükle** seçeneğini açın ve aynı kimlik bilgisi parolasını girin. Yerel parolaları değiştirmemek için kapalı bırakın.
|
||||
|
||||
DBX, şifreleme anahtarını **Argon2id** ile türetir ve **AES-256-GCM** şifrelemesi kullanır. Sağlayıcı erişim belirteçleri aygıta özgü bir anahtarla şifrelenir ve hiçbir zaman `dbx-sync.json` dosyasına yazılmaz.
|
||||
|
||||
<Callout type="warn">
|
||||
İki parola da kurtarılamaz. Şifreli bir GitHub/Gitee parçacığı, parçacık şifreleme parolası olmadan geri yüklenemez. WebDAV için, şifreli gizli bilgiler içermeyen bir anlık görüntü parola ifadesi olmadan da geri yüklenebilir.
|
||||
</Callout>
|
||||
|
||||
## WebDAV
|
||||
|
||||
WebDAV uç noktasını, kullanıcı adını, uygulama parolasını ve uzak anlık görüntü yolunu girin. Varsayılan yol `DBX/sync/snapshot.json` şeklindedir.
|
||||
|
||||
Web/Docker modunda WebDAV isteklerini DBX sunucusu gönderir, bu yüzden tarayıcı CORS kısıtları geçerli olmaz. WebDAV uygulama parolaları geçerli DBX örneğinde şifrelenir ve eşitleme anlık görüntülerine hiçbir zaman dâhil edilmez.
|
||||
|
||||
WebDAV, ilgili DBX istemcisi açık kaldığı sürece zamanlanmış yüklemeleri destekler. Web/Docker kullanırken en az bir DBX sayfasını açık tutun. İndirmeler, geçerli örnekteki verinin yanlışlıkla değiştirilmesini önlemek için her zaman onay ister.
|
||||
|
||||
## Sorun Giderme
|
||||
|
||||
### HTTP 401 ya da 403
|
||||
|
||||
Belirteç geçersiz, süresi dolmuş ya da parçacık okuma/yazma yetkisi yok. En az yetkili yeni bir belirteç oluşturup yeniden test edin.
|
||||
|
||||
### HTTP 404
|
||||
|
||||
Parçacık kimliği yanlış ya da geçerli belirteç özel parçacığa erişemiyor.
|
||||
|
||||
### İlk yüklemeden sonra kimlik nerede?
|
||||
|
||||
DBX bunu otomatik olarak saklar. Ayrıca GitHub Gist ya da Gitee parçacık sayfasının URL'sinde bulabilirsiniz.
|
||||
|
||||
### Birden çok aygıt otomatik eşitlenebilir mi?
|
||||
|
||||
Parçacık eşitlemesi şu anda elle yükleme ve indirme kullanır; eşzamanlı değişiklikleri birleştirmez. Başka bir aygıttaki değişiklikleri değiştirmemek için yüklemeden önce en son anlık görüntüyü indirin.
|
||||
@@ -0,0 +1,84 @@
|
||||
---
|
||||
title: Yapılandırma Dışa/İçe Aktarma
|
||||
description: Veritabanı bağlantılarını AES-256-GCM ile şifrelenmiş parolalarla dışa aktarın. Makineler arasında güvenle taşıyın.
|
||||
---
|
||||
|
||||
<Callout type="info">Veritabanı bağlantılarınızı şifrelenmiş parolalarla (AES-256-GCM) dışa aktarın. Makineler arasında güvenle taşıyın. Şifreli dışa aktarma varsayılan olarak kalır.</Callout>
|
||||
|
||||
<Callout type="warn">Bu işlem, iş veritabanınızın şemasını veya verisini değil, DBX bağlantı yapılandırmasını dışa aktarır ve bir veritabanı yedeği değildir. Veritabanı içeriği için [Veritabanı Dışa Aktarma](/tr/docs/database-export) ya da [Veritabanı Yedekleme](/tr/docs/database-backup) sayfalarını kullanın.</Callout>
|
||||
|
||||
## Dışa Aktarma
|
||||
|
||||
<Steps>
|
||||
<Step>
|
||||
### Dışa Aktarmayı Başlatın
|
||||
|
||||
Kenar çubuğu başlığındaki **Dışa Aktar** düğmesine tıklayın.
|
||||
</Step>
|
||||
<Step>
|
||||
### Bağlantıları Seçin
|
||||
|
||||
Bir veya daha fazla bağlantı seçin. Varsayılan olarak tüm bağlantılar seçilidir. Yalnızca seçili bağlantılar, kenar çubuğu grupları ile sıraları ve başvurulan tünel profilleri dışa aktarılır.
|
||||
</Step>
|
||||
<Step>
|
||||
### Koruma Biçimini Seçin
|
||||
|
||||
Parolalarınızı şifrelemek için bir parola ifadesi girin. Güvenilir bir ortamda tek seferlik bir taşıma için bunun yerine **Şifresiz dışa aktar** seçeneğini seçip uyarıyı onaylayabilirsiniz. Düz metin dosyası veritabanı parolalarını, SSH Tünel kimlik bilgilerini ve diğer hassas bilgileri içerebilir.
|
||||
</Step>
|
||||
<Step>
|
||||
### Dosyayı Kaydedin
|
||||
|
||||
Bir kayıt konumu seçin. Dışa aktarılan dosya yalnızca seçili bağlantıları, ilgili düzeni ve başvurulan tünel profillerini içerir. Şifreli dışa aktarma önerilir.
|
||||
</Step>
|
||||
</Steps>
|
||||
|
||||
## İçe Aktarma
|
||||
|
||||
<Steps>
|
||||
<Step>
|
||||
### İçe Aktarmayı Başlatın
|
||||
|
||||
Kenar çubuğu başlığındaki **İçe Aktar** düğmesine tıklayın.
|
||||
</Step>
|
||||
<Step>
|
||||
### Dosyayı Seçin ve Şifreyi Çözün
|
||||
|
||||
Dışa aktarılmış dosyayı seçin. DBX, şifreli ve düz yapılandırma dosyalarını otomatik olarak ayırt eder. Şifreli dosyalarda önce parola ifadesi istenir; böylece DBX hiçbir şey yazmadan dosyanın şifresini çözüp önizleyebilir.
|
||||
</Step>
|
||||
<Step>
|
||||
### Bağlantıları Seçin
|
||||
|
||||
Dosyadaki hangi bağlantıların içe aktarılacağını seçin. Varsayılan olarak tüm bağlantılar seçilidir.
|
||||
</Step>
|
||||
<Step>
|
||||
### Tamamlandı
|
||||
|
||||
Yalnızca seçili bağlantılar, parolaları geri yüklenmiş biçimde içe aktarılır. Ad + sunucu + port ile yinelenenler ayıklanır. Seçili bağlantıların kenar çubuğu grupları ve sırası içe aktarmadan sonra da uygulanabilir.
|
||||
</Step>
|
||||
</Steps>
|
||||
|
||||
## Güvenlik
|
||||
|
||||
- Parolalar **PBKDF2** anahtar türetmesiyle **AES-256-GCM** kullanılarak şifrelenir
|
||||
- Parola ifadesi olmadan şifreli bir dosyanın şifresi çözülemez
|
||||
- Düz metin dışa aktarma şifreli değildir; veritabanı parolalarını, SSH Tünel kimlik bilgilerini ve diğer gizli bilgileri açığa çıkarabilir. Bunu yalnızca güvenilir bir ortamda geçici taşıma için kullanın
|
||||
- Dışa aktarma dosyası standart JSON'dur; USB bellek, bulut depolama vb. ile taşınabilir
|
||||
- DBX; sıradan bağlantı alanlarını, veritabanı parolaları, SSH parolaları, SSH anahtar parolaları ve tam bağlantı dizeleri gibi gizli bilgilerden ayrı saklar. Şifreli dışa aktarma birleşik veriyi korur; düz metin dışa aktarma bu gizli bilgileri okunabilir JSON olarak yazar.
|
||||
- Parola ifadesini bir sır gibi koruyun. Hem dışa aktarma dosyasına hem de parola ifadesine sahip olan herkes kayıtlı bağlantıları geri yükleyebilir.
|
||||
|
||||
## Geriye Dönük Uyumluluk
|
||||
|
||||
İçe aktarma, şifreli veya düz yapılandırma dosyalarını otomatik olarak algılar. Ayrıca eski sürümlerden gelen düz JSON dosyalarını (parolasız) ve ham bağlantı yapılandırma dizilerini de destekler.
|
||||
|
||||
## Neler Dâhil
|
||||
|
||||
| Öğe | Dâhil mi |
|
||||
| -------------------------------------------------------------------------- | -------------------------------------------------------------------------- |
|
||||
| Bağlantı adı, türü, sunucusu, portu, veritabanı, rengi | Evet |
|
||||
| URL parametreleri, SSL, SSH, proxy, görünür veritabanı ayarları | Evet |
|
||||
| Veritabanı parolası, SSH parolası, SSH anahtar parolası, bağlantı dizesi | Evet; şifreli dışa aktarmada şifrelenir, düz metinde okunabilir olur |
|
||||
| Üretici JDBC sürücü JAR dosyaları | Hayır; sürücüleri hedef makinede yeniden kurun veya içe aktarın |
|
||||
| Seçili bağlantıların kenar çubuğu grupları ve sırası | Evet; içe aktarmadan sonra uygulayıp uygulamayacağınızı seçin |
|
||||
| Kayıtlı SQL ve arayüz/düzenleyici ayarları | Hayır; taşımak için [Bulut Eşitleme](/tr/docs/cloud-sync) kullanın |
|
||||
|
||||
JDBC taşımaları için bağlantı ayarlarını buradan dışa aktarın, ardından hedef makinede eklentiyi kurup sürücü JAR dosyalarını içe aktarmak için [JDBC Eklentisi](/tr/docs/plugins) sayfasını izleyin.
|
||||
@@ -0,0 +1,124 @@
|
||||
---
|
||||
title: Bağlantı İçe Aktarma
|
||||
description: Navicat, DBeaver ve DataGrip'ten bağlantıları, grupları ve tanınan veritabanı profillerini içe aktarın.
|
||||
---
|
||||
|
||||
DBX, diğer veritabanı araçlarından bağlantıları içe aktarabilir; böylece araç değiştirirken onlarca bağlantıyı elle yeniden oluşturmanız gerekmez.
|
||||
|
||||
## Desteklenen Biçimler
|
||||
|
||||
| Kaynak | Biçim | Neler İçe Aktarılır |
|
||||
| ------- | ------------------------------ | ---------------------------------------------------- |
|
||||
| Navicat | `.ncx` dışa aktarma dosyaları | Sunucu, port, kullanıcı adı, veritabanı türü, bağlantı adı |
|
||||
| DBeaver | Bağlantı yapılandırma dosyaları | Sunucu, port, kullanıcı adı, veritabanı türü, bağlantı adı |
|
||||
| DataGrip | `dataSources.xml` gibi proje ya da genel dosyalar | JDBC URL'si, sürücü, bağlantı adı, gruplar ve okunabilir kimlik bilgileri |
|
||||
|
||||
<Callout type="info">İçe aktarılan bağlantılar özgün bağlantı adını ve türünü korur. Diğer araçların şifreli biçimde sakladığı parolaların şifresi çözülemez — içe aktarmadan sonra parolaları yeniden girmeniz gerekir.</Callout>
|
||||
|
||||
## Navicat Bağlantılarını İçe Aktarma
|
||||
|
||||
<Steps>
|
||||
<Step>
|
||||
### Navicat'ten Dışa Aktarın
|
||||
|
||||
Navicat'te taşımak istediğiniz bağlantıları seçin. **Dosya → Bağlantıları Dışa Aktar** ile `.ncx` dosyasını kaydedin.
|
||||
|
||||
</Step>
|
||||
<Step>
|
||||
### İçe Aktarma İletişim Kutusunu Açın
|
||||
|
||||
DBX'te **Ayarlar → Bağlantıları İçe Aktar** bölümüne gidin ya da kenar çubuğu grup başlığına sağ tıklayıp **Bağlantıları İçe Aktar**'ı seçin.
|
||||
|
||||
</Step>
|
||||
<Step>
|
||||
### NCX Dosyasını Seçin
|
||||
|
||||
Navicat'ten dışa aktardığınız `.ncx` dosyasını seçin.
|
||||
|
||||
</Step>
|
||||
<Step>
|
||||
### İnceleyin ve Tamamlayın
|
||||
|
||||
DBX dosyayı ayrıştırır ve bulunan tüm bağlantıları listeler. Listeyi inceleyin, gereken yerlerde parolaları yeniden girin ve kaydedin.
|
||||
|
||||
</Step>
|
||||
</Steps>
|
||||
|
||||
## DBeaver Bağlantılarını İçe Aktarma
|
||||
|
||||
<Steps>
|
||||
<Step>
|
||||
### DBeaver Yapılandırmasını Bulun
|
||||
|
||||
DBeaver bağlantıları çalışma alanı dizininde saklar. Tam yol işletim sisteminize ve DBeaver sürümünüze bağlıdır. Yaygın konumlardan biri `~/.local/share/DBeaverData/workspace6/General/.dbeaver/` dizinidir.
|
||||
|
||||
</Step>
|
||||
<Step>
|
||||
### İçe Aktarma İletişim Kutusunu Açın
|
||||
|
||||
DBX'te **Ayarlar → Bağlantıları İçe Aktar** bölümüne gidin.
|
||||
|
||||
</Step>
|
||||
<Step>
|
||||
### DBeaver Dosyalarını Seçin
|
||||
|
||||
DBeaver bağlantı yapılandırma dosyalarını seçin (`.dbeaver-data-sources.xml` veya benzeri).
|
||||
|
||||
</Step>
|
||||
<Step>
|
||||
### İnceleyin ve Tamamlayın
|
||||
|
||||
DBX yapılandırmadan bağlantı ayrıntılarını çıkarır. Şifresi çözülemeyen parolaları yeniden girin.
|
||||
|
||||
</Step>
|
||||
</Steps>
|
||||
|
||||
## DataGrip Bağlantılarını İçe Aktarma
|
||||
|
||||
<Steps>
|
||||
<Step>
|
||||
### Yapılandırmayı Seçin
|
||||
|
||||
DBX'te **DataGrip İçe Aktar**'ı seçin ve bir DataGrip projesinden ya da genel yapılandırmadan `dataSources.xml` dosyasını seçin. Aynı dizindeki eşleşen yerel dosya ek alanlar sağlayabilir.
|
||||
|
||||
</Step>
|
||||
<Step>
|
||||
### Tür Algılamayı İnceleyin
|
||||
|
||||
DBX; sürücü başvurularını, veritabanı ürün adlarını, JDBC alt protokollerini ve sürücü sınıflarını birlikte değerlendirir. KingbaseES gibi veritabanları kendi DBX profiline eşlenir; bilinmeyen sürücüler genel JDBC olarak kalır.
|
||||
|
||||
</Step>
|
||||
<Step>
|
||||
### Grupları İnceleyin
|
||||
|
||||
DataGrip grup yolları DBX bağlantı grupları olarak içe aktarılır, böylece proje düzeniniz korunur.
|
||||
|
||||
</Step>
|
||||
<Step>
|
||||
### Kimlik Bilgilerini Tamamlayın
|
||||
|
||||
macOS'ta DBX, mümkün olduğunda DataGrip'in Anahtar Zinciri parolalarını okur. Diğer şifreli veya erişilemeyen kimlik bilgileri elle girilmelidir.
|
||||
|
||||
</Step>
|
||||
</Steps>
|
||||
|
||||
## İçe Aktarmadan Sonra
|
||||
|
||||
İçe aktarılan bağlantılar kenar çubuğunda elle oluşturulanların yanında görünür. Şunları yapmalısınız:
|
||||
|
||||
- İçe aktarılan ayarların çalıştığını doğrulamak için **her bağlantıyı test edin**
|
||||
- Özgün parolası içe aktarılamayan bağlantılar için **parola belirleyin**
|
||||
- Üretim, hazırlık ve geliştirme ortamlarını ayırt etmek için **bağlantı renkleri atayın**
|
||||
- Gerektiren bağlantılar için **SSH tünellerini yapılandırın**
|
||||
- Sunucuda çok sayıda veritabanı varsa **görünür veritabanı filtrelerini ayarlayın**
|
||||
|
||||
## İçe Aktarılamayanlar
|
||||
|
||||
| Ayar | Nedeni |
|
||||
| ---------------------------- | ------------------------------------------------------------------- |
|
||||
| Şifreli parolalar | Her araç kendine özgü şifreleme kullanır; parolalar yeniden girilmelidir |
|
||||
| SSH tünel anahtarları | Anahtar dosyası yolları makineler arasında değişebilir; anahtar dosyasını yeniden seçin |
|
||||
| Özel sürücü yapılandırmaları | Sürücü yolları ve sürümleri araca özgüdür |
|
||||
| Proxy ayarları | Bağlantının Proxy sekmesinden yeniden yapılandırın |
|
||||
|
||||
İçe aktarma bağlantı taslakları oluşturur; erişilebilir olduklarını kanıtlamaz. Kaydetmeden önce veritabanı profilini, JDBC URL'sini, SSL, SSH, proxy ve veritabanı alanlarını inceleyin, ardından içe aktarılan her bağlantıyı test edin.
|
||||
@@ -238,6 +238,7 @@ rg "要查找的文字" apps/desktop/src crates src-tauri packages
|
||||
```text
|
||||
docs/content/docs/example.mdx
|
||||
docs/content/docs/example.cn.mdx
|
||||
docs/content/docs/example.tr.mdx
|
||||
```
|
||||
|
||||
启动文档站:
|
||||
@@ -259,6 +260,7 @@ pnpm dev
|
||||
```text
|
||||
docs/content/docs/meta.json
|
||||
docs/content/docs/meta.cn.json
|
||||
docs/content/docs/meta.tr.json
|
||||
```
|
||||
|
||||
提交前先运行快速内容检查,再执行完整文档构建:
|
||||
|
||||
@@ -220,7 +220,7 @@ The service ports listen on `127.0.0.1` by default. Set `DB_BIND_ADDRESS=0.0.0.0
|
||||
| `packages/app-tests/` | Tests for shared frontend logic |
|
||||
| `packages/cli/` | DBX CLI |
|
||||
| `packages/mcp-server/` | MCP Server |
|
||||
| `docs/content/docs/` | Bilingual website documentation |
|
||||
| `docs/content/docs/` | Multilingual website documentation |
|
||||
| `agents/drivers/` | Java/JDBC and selected native database agents |
|
||||
|
||||
Search for a feature name, visible label, or error message when you do not know the file yet:
|
||||
@@ -233,11 +233,12 @@ rg "text to find" apps/desktop/src crates src-tauri packages
|
||||
|
||||
### Path A: Update the Website Docs
|
||||
|
||||
Documentation is the easiest first contribution. English and Chinese pages use the same base filename:
|
||||
Documentation is the easiest first contribution. Every language uses the same base filename:
|
||||
|
||||
```text
|
||||
docs/content/docs/example.mdx
|
||||
docs/content/docs/example.cn.mdx
|
||||
docs/content/docs/example.tr.mdx
|
||||
```
|
||||
|
||||
Start the docs site:
|
||||
@@ -259,6 +260,7 @@ Open the local address printed in the terminal. When adding a page, also registe
|
||||
```text
|
||||
docs/content/docs/meta.json
|
||||
docs/content/docs/meta.cn.json
|
||||
docs/content/docs/meta.tr.json
|
||||
```
|
||||
|
||||
Run the fast content check and then the full documentation build before submitting:
|
||||
@@ -268,7 +270,7 @@ pnpm --dir docs content:check
|
||||
make docs-build
|
||||
```
|
||||
|
||||
`content:check` verifies bilingual page pairs, navigation coverage and ordering, frontmatter, duplicate titles, and internal links. `make docs-build` runs the check again and validates the Next.js production build.
|
||||
`content:check` verifies that every page exists in each language, navigation coverage and ordering, frontmatter, duplicate titles, and internal links. `make docs-build` runs the check again and validates the Next.js production build.
|
||||
|
||||
### Path B: Change the Desktop Frontend
|
||||
|
||||
|
||||
@@ -0,0 +1,497 @@
|
||||
---
|
||||
title: Kaynaktan Derleme ve Katkı
|
||||
description: DBX'i sıfırdan kurun, masaüstü uygulamasını çalıştırın, ilk değişikliğinizi yapın, test edin ve bir pull request açın.
|
||||
---
|
||||
|
||||
Bu eğitim, DBX'e ilk kez katkı verecekler içindir. Sonunda şunları yapmış olacaksınız:
|
||||
|
||||
1. Node.js, pnpm, Rust ve yerel derleme bağımlılıklarını kurmak
|
||||
2. DBX Masaüstü'nü forklamak, klonlamak ve çalıştırmak
|
||||
3. İlgili kodu bulmak ve küçük bir değişikliği tamamlamak
|
||||
4. Değişikliğe uygun denetimleri ve testleri çalıştırmak
|
||||
5. Bir dal push edip pull request açmak
|
||||
|
||||
<Callout type="info">
|
||||
Dokümantasyon, çeviriler, küçük arayüz düzeltmeleri ve test edebileceğiniz bir veritabanına ilişkin issue'lar iyi ilk katkılardır. Her pull request'i tek ve doğrulanabilir bir soruna odaklı tutun.
|
||||
</Callout>
|
||||
|
||||
## 1. Bir Issue Seçin ve Üstlenin
|
||||
|
||||
[DBX Issues](https://github.com/t8y2/dbx/issues) sayfasını açın ve atanmış kimsesi olmayan, yorumlarında etkin bir katkıcı bulunmayan bir issue seçin. İyi ilk katkılar şu özelliklerden birini taşır:
|
||||
|
||||
- Yeniden üretme adımları ve beklenen davranış zaten açıktır
|
||||
- Kapsam küçük bir dokümantasyon, çeviri ya da arayüz değişikliğidir
|
||||
- Kullandığınız ve gerçek bir örnekte doğrulayabildiğiniz bir veritabanını etkiler
|
||||
|
||||
Yalnızca etiketlere güvenmeyin. İsteğin hâlâ geçerli olduğunu ve başka bir yerde uygulanmadığını doğrulamak için issue'nun tamamını, yorumları, ekran görüntülerini ve önceki tartışmayı okuyun.
|
||||
|
||||
Issue üzerinde kimse çalışmıyorsa şunu tek başına bir yorum olarak yazın:
|
||||
|
||||
```text
|
||||
/claim
|
||||
```
|
||||
|
||||
Üstlenme iş akışı, issue uygun olduğunda onu size atar. Önerdiğiniz çözüm mevcut davranışı değiştiriyorsa büyük bir yama yapmadan önce yaklaşımı issue içinde kısaca açıklayın.
|
||||
|
||||
Sonradan devam edemezseniz tek başına bir yorum olarak `/unclaim` yazın (`/unclaimed` de kabul edilir). İş akışı yalnızca kendi atamanızı kaldırır; böylece başka bir katkıcı issue'yu üstlenebilir.
|
||||
|
||||
## 2. Araç Zincirini Kurun
|
||||
|
||||
DBX Masaüstü; Tauri, Vue ve Rust kullanır. Depo şu anda şunları gerektirir:
|
||||
|
||||
| Araç | Sürüm |
|
||||
| --- | --- |
|
||||
| Node.js | 22.13.0 ya da üstü |
|
||||
| pnpm | 10.27.0 |
|
||||
| Rust | 1.88 ya da üstü |
|
||||
| Git | Güncel kararlı sürüm |
|
||||
| Make | macOS ve Linux'ta gerekli; Windows'ta isteğe bağlı |
|
||||
|
||||
### Node.js ve pnpm Kurun
|
||||
|
||||
[Node.js web sitesinden](https://nodejs.org/) Node.js 22 ya da daha yeni bir LTS sürümü kurun, ardından deponun kullandığı pnpm sürümünü etkinleştirin:
|
||||
|
||||
```bash
|
||||
corepack enable
|
||||
corepack prepare pnpm@10.27.0 --activate
|
||||
node --version
|
||||
pnpm --version
|
||||
```
|
||||
|
||||
Node.js kurulumunuzda Corepack yoksa şunu kullanın:
|
||||
|
||||
```bash
|
||||
npm install --global pnpm@10.27.0
|
||||
```
|
||||
|
||||
### Rust Kurun
|
||||
|
||||
`rustup` kurmak için [resmî Rust kurulum kılavuzunu](https://www.rust-lang.org/tools/install) izleyin. Terminali yeniden açıp kurulumu doğrulayın:
|
||||
|
||||
```bash
|
||||
rustc --version
|
||||
cargo --version
|
||||
```
|
||||
|
||||
### Yerel Bağımlılıkları Kurun
|
||||
|
||||
Platform ayrıntılarının tamamı için [resmî Tauri ön koşullarına](https://v2.tauri.app/start/prerequisites/) bakın. DBX ayrıca ODBC geliştirme kitaplıklarını kullanır.
|
||||
|
||||
<Tabs groupId="contributing-platform" items={["macOS", "Ubuntu / Debian", "Windows"]}>
|
||||
<Tab value="macOS">
|
||||
Xcode Komut Satırı Araçlarını ve unixODBC'yi kurun:
|
||||
|
||||
```bash
|
||||
xcode-select --install
|
||||
brew install unixodbc
|
||||
```
|
||||
|
||||
Gerekiyorsa önce [Homebrew web sitesinden](https://brew.sh/) Homebrew kurun.
|
||||
|
||||
</Tab>
|
||||
<Tab value="Ubuntu / Debian">
|
||||
Derleyici araç zincirini, Tauri WebKit/GTK bağımlılıklarını ve unixODBC'yi kurun:
|
||||
|
||||
```bash
|
||||
sudo apt update
|
||||
sudo apt install -y \
|
||||
build-essential curl wget file pkg-config \
|
||||
libwebkit2gtk-4.1-dev libgtk-3-dev libxdo-dev \
|
||||
libayatana-appindicator3-dev librsvg2-dev patchelf \
|
||||
libssl-dev unixodbc-dev
|
||||
```
|
||||
|
||||
</Tab>
|
||||
<Tab value="Windows">
|
||||
1. [Microsoft C++ Build Tools](https://visualstudio.microsoft.com/visual-cpp-build-tools/) kurun.
|
||||
2. Yükleyicide **Desktop development with C++** seçeneğini işaretleyin.
|
||||
3. Bir Windows 10/11 SDK ve WebView2'nin kurulu olduğundan emin olun. Windows 11 normalde WebView2 içerir.
|
||||
4. Pakete gömülü OpenSSL'i derlemek için gereken [Strawberry Perl](https://github.com/StrawberryPerl/Perl-Dist-Strawberry/releases) kurulumunu yapın:
|
||||
|
||||
```powershell
|
||||
winget install StrawberryPerl.StrawberryPerl
|
||||
```
|
||||
|
||||
DBX varsayılan olarak `sqlite-sqlcipher` özelliğini etkinleştirir; bu, SQLCipher ve OpenSSL'i kaynaktan derler. Windows'ta OpenSSL `Configure` betiğini çalıştırmak için Perl gerekir. Kurulumdan sonra `perl` komutunun `PATH` üzerinde olması için terminalinizi yeniden açın.
|
||||
|
||||
5. Bu sayfadaki Windows komutlarını PowerShell'de çalıştırın.
|
||||
|
||||
Eşdeğer pnpm komutları aşağıda verildiği için Windows'ta Make isteğe bağlıdır.
|
||||
|
||||
</Tab>
|
||||
</Tabs>
|
||||
|
||||
## 3. Depoyu Forklayın ve Klonlayın
|
||||
|
||||
GitHub'da [t8y2/dbx](https://github.com/t8y2/dbx) deposunu açıp **Fork**'a tıklayın.
|
||||
|
||||
`<github-adiniz>` yerine hesap adınızı yazın:
|
||||
|
||||
```bash
|
||||
git clone https://github.com/<github-adiniz>/dbx.git
|
||||
cd dbx
|
||||
git remote add upstream https://github.com/t8y2/dbx.git
|
||||
git remote -v
|
||||
```
|
||||
|
||||
Her issue için ayrı bir dal kullanın:
|
||||
|
||||
```bash
|
||||
git switch -c fix/issue-1234-kisa-aciklama
|
||||
```
|
||||
|
||||
Başka bir göreve başlamadan önce `main` dalınızı eşitleyin:
|
||||
|
||||
```bash
|
||||
git switch main
|
||||
git fetch upstream
|
||||
git rebase upstream/main
|
||||
git push origin main
|
||||
```
|
||||
|
||||
## 4. DBX'i İlk Kez Çalıştırın
|
||||
|
||||
### macOS ve Linux
|
||||
|
||||
Depo kökünden şunu çalıştırın:
|
||||
|
||||
```bash
|
||||
make
|
||||
```
|
||||
|
||||
`make`, bağımlılıkları lockfile'dan kurar ve Tauri masaüstü geliştirme ortamını başlatır. İlk Rust derlemesi uzun sürebilir; sonraki başlatmalar çok daha hızlıdır.
|
||||
|
||||
Hafif bir masaüstü derlemesi için varsayılan Rust özelliklerini kapatın ve yalnızca DuckDB yardımcı bileşenini, DynamoDB'yi ve pakete gömülü SQLite'ı etkinleştirin:
|
||||
|
||||
```bash
|
||||
make dev-fast
|
||||
```
|
||||
|
||||
Geliştirme derlemeleri, kurulu bir DBX örneğiyle birlikte çalışabilir. İkisi de aynı yerel DBX verisini kullanır, bu yüzden bağlantılar ve geçmiş her iki pencerede de görünür. Aynı bağlantıyı, kayıtlı SQL'i ya da genel ayarı iki pencerede aynı anda değiştirmekten kaçının.
|
||||
|
||||
MCP köprüsünü test ederken en son başlatılan örnek, ortak `mcp-bridge-port` keşif dosyasının sahibi olur ve MCP isteklerini alır. Redis PubSub `4224` portunu (ya da ayarlanmışsa `DBX_PORT`) tercih eder ve otomatik olarak kullanılabilir bir yerel porta düşer; ön yüz gerçekte bağlanılan portu kullanır.
|
||||
|
||||
### Windows
|
||||
|
||||
PowerShell'de çalıştırın:
|
||||
|
||||
```powershell
|
||||
pnpm install --frozen-lockfile
|
||||
pnpm dev:tauri
|
||||
```
|
||||
|
||||
Aynı hafif derleme için:
|
||||
|
||||
```powershell
|
||||
pnpm tauri dev -- --no-default-features --features duckdb-sidecar,dynamodb,sqlite-bundled
|
||||
```
|
||||
|
||||
### Ortamın Çalıştığını Doğrulayın
|
||||
|
||||
Başarılı bir çalıştırma, terminalde derleyici hatası olmadan DBX masaüstü penceresini açar. Üç hızlı denetim yapın:
|
||||
|
||||
1. Ayarlar'ı açın
|
||||
2. Yerel bir test bağlantısı oluşturun ya da açın
|
||||
3. Kurulumun yinelenebilir olduğunu doğrulamak için uygulamayı kapatıp yeniden başlatın
|
||||
|
||||
`1420` portu zaten kullanımdaysa önceki DBX/Vite geliştirme işlemini durdurup yeniden başlatın.
|
||||
|
||||
## Yerel veritabanı test ortamları
|
||||
|
||||
Bir veritabanı sürücüsünde, bağlantı akışında, meta veri sorgusunda ya da veritabanına özgü arayüzde yapılan değişiklikler, mümkün olduğunda gerçek bir örneğe karşı denetlenmelidir. Depo bunun için sürümü sabitlenmiş yerel Docker Compose tarifleri sunar:
|
||||
|
||||
```bash
|
||||
make db-list
|
||||
make db DB=mysql@8.4
|
||||
make db-verify DB=mysql@8.4
|
||||
make db-down DB=mysql@8.4
|
||||
```
|
||||
|
||||
Servis portları varsayılan olarak `127.0.0.1` üzerinde dinler. Bir makineyi ortak bir ağa açmadan önce `DB_BIND_ADDRESS=0.0.0.0` ayarlayın, güçlü bir `DB_PASSWORD` seçin ve güvenlik duvarı denetimlerini kullanın. Desteklenen tüm tarifler, geçersiz kılmalar ve sıfırlama güvenlik gereksinimleri için [Veritabanı Test Laboratuvarı](/tr/docs/database-lab) sayfasına bakın.
|
||||
|
||||
## 5. Depo Düzenini Anlayın
|
||||
|
||||
| Yol | Orada neyi değiştirirsiniz |
|
||||
| --- | --- |
|
||||
| `apps/desktop/src/` | Vue sayfaları, bileşenler, durum, etkileşimler ve çeviriler |
|
||||
| `src-tauri/` | Tauri masaüstü komutları, sistem tümleştirmesi ve paketleme |
|
||||
| `crates/dbx-core/` | Bağlantılar, sorgular, meta veri ve ortak Rust veritabanı mantığı |
|
||||
| `crates/dbx-web/` | Docker/Web arka ucu |
|
||||
| `packages/app-tests/` | Ortak ön yüz mantığı testleri |
|
||||
| `packages/cli/` | DBX CLI |
|
||||
| `packages/mcp-server/` | MCP Sunucusu |
|
||||
| `docs/content/docs/` | Çok dilli web sitesi dokümantasyonu |
|
||||
| `agents/drivers/` | Java/JDBC ve belirli yerel veritabanı agent'ları |
|
||||
|
||||
Dosyayı henüz bilmiyorsanız bir özellik adını, görünen etiketi ya da hata mesajını arayın:
|
||||
|
||||
```bash
|
||||
rg "aranacak metin" apps/desktop/src crates src-tauri packages
|
||||
```
|
||||
|
||||
## 6. İlk Değişikliğinizi Yapın
|
||||
|
||||
### Yol A: Web Sitesi Dokümanlarını Güncelleyin
|
||||
|
||||
Dokümantasyon en kolay ilk katkıdır. Her dil aynı temel dosya adını kullanır:
|
||||
|
||||
```text
|
||||
docs/content/docs/example.mdx
|
||||
docs/content/docs/example.cn.mdx
|
||||
docs/content/docs/example.tr.mdx
|
||||
```
|
||||
|
||||
Dokümantasyon sitesini başlatın:
|
||||
|
||||
```bash
|
||||
make docs
|
||||
```
|
||||
|
||||
Windows'ta:
|
||||
|
||||
```powershell
|
||||
cd docs
|
||||
pnpm install --frozen-lockfile --ignore-workspace
|
||||
pnpm dev
|
||||
```
|
||||
|
||||
Terminalde yazılan yerel adresi açın. Bir sayfa eklerken onu şuralara da kaydedin:
|
||||
|
||||
```text
|
||||
docs/content/docs/meta.json
|
||||
docs/content/docs/meta.cn.json
|
||||
docs/content/docs/meta.tr.json
|
||||
```
|
||||
|
||||
Göndermeden önce hızlı içerik denetimini ve ardından tam dokümantasyon derlemesini çalıştırın:
|
||||
|
||||
```bash
|
||||
pnpm --dir docs content:check
|
||||
make docs-build
|
||||
```
|
||||
|
||||
`content:check`; her dil için sayfa eşlerini, gezinme kapsamını ve sırasını, frontmatter'ı, yinelenen başlıkları ve iç bağlantıları doğrular. `make docs-build` bu denetimi yeniden çalıştırır ve Next.js üretim derlemesini doğrular.
|
||||
|
||||
### Yol B: Masaüstü Ön Yüzünü Değiştirin
|
||||
|
||||
Ön yüz kodu `apps/desktop/src/` altındadır. Masaüstü uygulamasının tamamını çalıştırın ya da yalnızca web ön yüzünü başlatın:
|
||||
|
||||
```bash
|
||||
make dev-web
|
||||
```
|
||||
|
||||
Değişiklikten sonra en azından şunları çalıştırın:
|
||||
|
||||
```bash
|
||||
pnpm typecheck
|
||||
pnpm lint
|
||||
pnpm test
|
||||
```
|
||||
|
||||
Arayüz değişikliklerinde açık ve koyu temaları, dar pencereleri, boş veriyi, yükleme ve hata durumlarını denetleyin. Pull request'e ekran görüntüsü ya da kayıt ekleyin.
|
||||
|
||||
### Yol C: Rust Arka Ucunu Değiştirin
|
||||
|
||||
Ortak Rust mantığı başlıca `crates/dbx-core/` altındadır; masaüstü komutları `src-tauri/` içindedir. DuckDB ilgisizse hızlı denetimlerle başlayın:
|
||||
|
||||
```bash
|
||||
make cargo-check-fast
|
||||
make cargo-test-fast
|
||||
```
|
||||
|
||||
Veritabanı davranışı değişiklikleri yalnızca sahte nesnelerle değil, gerçek bir veritabanına karşı doğrulanmalıdır. Pull request'e veritabanı türünü ve sürümünü, yeniden üretme SQL'ini, önceki davranışı ve düzeltilmiş davranışı ekleyin.
|
||||
|
||||
### Yol D: Bir Agent Sürücüsünü Değiştirin
|
||||
|
||||
Agent'lar; DBX ile stdin/stdout JSON-RPC üzerinden iletişim kuran ayrı işlemlerdir. Java/JDBC agent'ları normalde JDK 21 kullanır; yerel agent'lar Go ya da Rust kullanır. Önce şunları okuyun:
|
||||
|
||||
- [`agents/README.md`](https://github.com/t8y2/dbx/blob/main/agents/README.md)
|
||||
- [`agents/docs/agent-authoring.md`](https://github.com/t8y2/dbx/blob/main/agents/docs/agent-authoring.md)
|
||||
|
||||
#### Mevcut Bir Java/JDBC Agent'ını Değiştirme
|
||||
|
||||
Depo kökünden `agents/` dizinine girin ve yalnızca hedef modülü derleyin:
|
||||
|
||||
```bash
|
||||
cd agents
|
||||
java --version
|
||||
./gradlew :<sürücü-modülü>:test :<sürücü-modülü>:shadowJar
|
||||
```
|
||||
|
||||
Shadow JAR şuraya yazılır:
|
||||
|
||||
```text
|
||||
agents/drivers/<sürücü-modülü>/build/libs/
|
||||
```
|
||||
|
||||
Başarılı bir derleme, yerel DBX uygulamasının yeni kodu kullandığı anlamına gelmez. DBX, kullanıcı ana dizini altındaki `.dbx/agents/drivers/<db_type>/agent.jar` dosyasını çalıştırır; bu yüzden çalışma zamanı JAR'ını yedekleyip değiştirin:
|
||||
|
||||
<Tabs groupId="agent-runtime-replace" items={["macOS / Linux", "Windows PowerShell"]}>
|
||||
<Tab value="macOS / Linux">
|
||||
```bash
|
||||
cp ~/.dbx/agents/drivers/<db_type>/agent.jar \
|
||||
~/.dbx/agents/drivers/<db_type>/agent.jar.bak
|
||||
cp drivers/<driver-module>/build/libs/*-all.jar \
|
||||
~/.dbx/agents/drivers/<db_type>/agent.jar
|
||||
```
|
||||
</Tab>
|
||||
<Tab value="Windows PowerShell">
|
||||
```powershell
|
||||
Copy-Item "$HOME\.dbx\agents\drivers\<db_type>\agent.jar" `
|
||||
"$HOME\.dbx\agents\drivers\<db_type>\agent.jar.bak"
|
||||
$jar = Get-ChildItem "drivers\<driver-module>\build\libs\*-all.jar" | Select-Object -First 1
|
||||
Copy-Item $jar.FullName "$HOME\.dbx\agents\drivers\<db_type>\agent.jar" -Force
|
||||
```
|
||||
</Tab>
|
||||
</Tabs>
|
||||
|
||||
Eski agent işleminin sonlanması ve yeni JAR'ın yüklenmesi için DBX'i yeniden başlatın ya da veritabanı bağlantısını kesip yeniden bağlanın. Issue'daki yeniden üretme akışını gerçek veritabanı sürümüne karşı yineleyin.
|
||||
|
||||
#### `agents/versions.json` Ne Zaman Değiştirilir
|
||||
|
||||
<Callout type="warn">
|
||||
Mevcut bir sürücüyü değiştirirken `agents/versions.json` dosyasını düzenlemeyin. Agent yayın iş akışı; çalışma zamanı dosyalarını önceki `agents-v*` etiketiyle karşılaştırır, o yayının yayın sonrası sürüm eşitleme commit'ini geçerli sürüm temeli olarak kullanır ve değişen modüllerin yama sürümünü otomatik artırır. Değişmeyen modüller, önceki değişmez yayından doğrulanmış dosyaları yeniden kullanır.
|
||||
</Callout>
|
||||
|
||||
- `agents/drivers/<modül>/` altındaki bir değişiklik, yayında o modülün sürümünü otomatik artırır
|
||||
- `agents/common/src/main/` ya da `agents/common/build.gradle` altındaki bir değişiklik, ortak çalışma zamanını paketleyen her modülün sürümünü artırır
|
||||
- Yeni bir sürücü modülü, `agents/versions.json` dosyasına `"rabbitmq": "0.1.0"` gibi bir başlangıç girdisi eklemelidir
|
||||
- Yeni bir Java/JDBC sürücüsü ayrıca `agents/settings.gradle` dosyasını, desteklenen agent tablosunu, derleme yapılandırmasını ve testleri güncellemelidir
|
||||
- Yeni bir yerel sürücü, Gradle'ın hallettiğini varsaymak yerine derleme ve yayın dosyalarını agent yazım/yayın denetim listesine göre kaydetmelidir
|
||||
- `versions.json` içindeki anahtarlar yayımlanan modüllerle eşleşmelidir; altyapı modülleri `common` ve `test-support` için sürüm girdisi yoktur
|
||||
|
||||
Normal hata düzeltme pull request'leri, değişikliğin etkili olması için sürümü elle artırmaz. Sürüm artırımları ve yayın dosyaları agent yayın iş akışına aittir.
|
||||
|
||||
#### Yerel Agent'lar
|
||||
|
||||
`oracle`, `kingbase` ve `xugu` gibi yerel agent'lar `agent.jar` yerine bir `agent` çalıştırılabiliri kullanır. Go testlerini çalıştırıp modülden derleyin, ardından yerel çalışma zamanı çalıştırılabilirini değiştirmek için README dosyasını izleyin:
|
||||
|
||||
```bash
|
||||
cd agents/drivers/<yerel-modül>
|
||||
go test ./...
|
||||
go build -o agent .
|
||||
```
|
||||
|
||||
Yeni bir veritabanı agent'ı için olgun, lisans açısından uyumlu bir Go ya da Rust sürücüsünü tercih edin. Güvenilir bir yerel sürücü yoksa Java/JDBC kullanın.
|
||||
|
||||
#### Eksiksiz Agent Doğrulaması
|
||||
|
||||
`agents/` dizininden şunları çalıştırın:
|
||||
|
||||
```bash
|
||||
python3 -m unittest discover -s scripts -p '*_test.py'
|
||||
python3 scripts/validate_agents.py
|
||||
./gradlew test shadowJar --continue
|
||||
python3 scripts/validate_agent_jars.py
|
||||
```
|
||||
|
||||
`validate_agents.py`; modül bildirimlerini, `versions.json` dosyasını, Gradle yapılandırmasını, Main-Class meta verisini, çalışma zamanı sınıflandırmasını ve yasak artıkları denetler. `validate_agent_jars.py`, derlenen JAR dosyalarının beklenen giriş sınıflarını içerdiğini doğrular.
|
||||
|
||||
## 7. Commit Etmeden Önce Değişikliği Denetleyin
|
||||
|
||||
Yamayı inceleyin ve derleme çıktıları, veritabanı dosyaları, gizli bilgiler ya da ilgisiz biçimlendirme içermediğinden emin olun:
|
||||
|
||||
```bash
|
||||
git status
|
||||
git diff
|
||||
```
|
||||
|
||||
Değişen alana uygun denetimleri çalıştırın:
|
||||
|
||||
| Değişen alan | En az denetim |
|
||||
| --- | --- |
|
||||
| Web sitesi dokümanları | `make docs-build` |
|
||||
| Ön yüz/arayüz | `pnpm typecheck && pnpm lint && pnpm test` |
|
||||
| Rust | `make cargo-check-fast && make cargo-test-fast` |
|
||||
| CLI/MCP/Node Çekirdeği | `pnpm test:packages` |
|
||||
| Agent | Agent betik doğrulaması, ilgili Gradle/Go testleri, dosya doğrulaması ve gerçek bir yerel çalışma zamanı testi |
|
||||
|
||||
Bir değişiklik birden çok alanı kapsıyorsa denetimleri birlikte çalıştırın. Bir hata düzeltmesinde, hatanın gittiğini kanıtlamak için özgün yeniden üretme adımlarını yineleyin ve gerilemeler için komşu normal davranışları test edin.
|
||||
|
||||
## 8. Commit Edin ve Push Edin
|
||||
|
||||
Kısa, geleneksel bir commit mesajı kullanın:
|
||||
|
||||
```bash
|
||||
git add <bu-göreve-ait-değişen-dosyalar>
|
||||
git commit -m "fix(scope): describe the change"
|
||||
git push -u origin HEAD
|
||||
```
|
||||
|
||||
Yaygın önekler:
|
||||
|
||||
- Hata düzeltmesi için `fix(scope):`
|
||||
- Özellik için `feat(scope):`
|
||||
- Dokümantasyon için `docs:`
|
||||
- Testler için `test(scope):`
|
||||
|
||||
İlgisiz sorunları aynı commit'te ya da pull request'te birleştirmeyin.
|
||||
|
||||
## 9. Bir Pull Request Açın
|
||||
|
||||
Fork'unuzu GitHub'da açın ve **Compare & pull request**'e tıklayın. Hedef depoyu `t8y2/dbx`, hedef dalı `main` yapın.
|
||||
|
||||
Pull request açıklaması şunları içermelidir:
|
||||
|
||||
1. İlgili issue, örneğin `Fixes #1234`
|
||||
2. Neyin değiştiği
|
||||
3. Bu yaklaşımın neden seçildiği
|
||||
4. Çalıştırdığınız testler
|
||||
5. Arayüz değişiklikleri için ekran görüntüleri ya da kayıtlar
|
||||
6. Veritabanı değişiklikleri için veritabanı adı, sürümü ve doğrulama adımları
|
||||
|
||||
CI başarısız olursa başarısız işi açıp günlüklerini inceleyin. Düzeltmeyi aynı dala push edin; başka bir pull request açmanız gerekmez.
|
||||
|
||||
Bağlantılı PR'ınız varsayılan dala merge edildiği hâlde issue açık kalırsa, tek başına bir issue yorumu olarak `/close` yazın. İş akışı issue'yu yalnızca siz onun geçerli atanmış kişisiyseniz ve issue'ya çapraz başvuran merge edilmiş bir PR'ın yazarıysanız kapatır.
|
||||
|
||||
## 10. İncelemeden Sonra Pull Request'i Güncelleyin
|
||||
|
||||
İnceleme geri bildirimi aldıktan sonra aynı dalda çalışmayı sürdürün:
|
||||
|
||||
```bash
|
||||
git add <değişen-dosyalar>
|
||||
git commit -m "fix(scope): address review feedback"
|
||||
git push
|
||||
```
|
||||
|
||||
İnceleme sırasında `main` belirgin biçimde değiştiyse eşitleyip yeniden push edin:
|
||||
|
||||
```bash
|
||||
git fetch upstream
|
||||
git rebase upstream/main
|
||||
git push --force-with-lease
|
||||
```
|
||||
|
||||
<Callout type="warn">
|
||||
Düz `--force` değil, `--force-with-lease` kullanın. Bu, henüz almadığınız uzak commit'lerin üzerine yazmayı reddeder.
|
||||
</Callout>
|
||||
|
||||
## Sorun Giderme
|
||||
|
||||
### İlk Rust Derlemesi Yavaş
|
||||
|
||||
Bu beklenen bir durumdur. Varsayılan Rust özelliklerinin kapalı olduğu, yalnızca DuckDB yardımcı bileşeni ve DynamoDB'nin etkin olduğu hafif bir masaüstü derlemesi için `make dev-fast` kullanın. `make cargo-check-fast` ve `make cargo-test-fast` tüm isteğe bağlı varsayılan özellikleri atlar, bu yüzden DuckDB'ye özgü yolları doğrulamaz.
|
||||
|
||||
### pnpm Yanlış Sürümü Bildiriyor
|
||||
|
||||
Depo sürümünü yeniden etkinleştirin:
|
||||
|
||||
```bash
|
||||
corepack prepare pnpm@10.27.0 --activate
|
||||
```
|
||||
|
||||
### Arayüz Değişikliği Yansıtmıyor
|
||||
|
||||
`apps/desktop/src/` altını değiştirdiğinizi, Vite/Tauri işleminin hâlâ çalıştığını ve terminalde ya da tarayıcı konsolunda derleme hatası olmadığını doğrulayın. Rust komut değişiklikleri normalde yeniden derlemeyi tetikler.
|
||||
|
||||
### Hangi Testleri Çalıştıracağınızı Bilmiyorsunuz
|
||||
|
||||
Değişen dizin için en az denetimle başlayın, ardından issue'nun gerçek yeniden üretme akışını uygulayın. Kapsam yine de belirsizse tamamladığınız doğrulamaları ve bilinen boşlukları pull request'te listeleyin; böylece maintainer'lar yol gösterebilir.
|
||||
|
||||
## Yardım Alın
|
||||
|
||||
- Engeli özgün issue'da anlatın ve tam hatayı ile işletim sistemi sürümünü ekleyin
|
||||
- [Discord](https://discord.gg/W7NyVDRt6a) sunucusuna katılın
|
||||
- Depodaki [CONTRIBUTING.md](https://github.com/t8y2/dbx/blob/main/CONTRIBUTING.md) dosyasını okuyun
|
||||
|
||||
Yalnızca "derleme başarısız oldu" demeyin. Komutu, günlükteki ilk anlamlı hatayı, işletim sisteminizi ve Node.js, pnpm ile Rust sürümlerinizi ekleyin.
|
||||
@@ -0,0 +1,180 @@
|
||||
---
|
||||
title: Veri Izgarası
|
||||
description: DBX'te sorgu sonuçlarına veya tablo verisine gözatın; filtreleyin, düzenleyin, doğrulayın, kopyalayın ve dışa aktarın.
|
||||
---
|
||||
|
||||
Veri ızgarası sorgu sonuçlarını ve tablo verisini gösterir. Hem salt okunur analizi hem de küçük, denetimli değişiklikleri kapsar: büyük sonuç kümelerine gözatma, filtreleme ve sıralama, karmaşık değerleri inceleme, toplu kopyalama ve DBX hedef satırları güvenilir biçimde belirleyebildiğinde önizlenebilir `INSERT`, `UPDATE` ya da `DELETE` ifadeleri üretme.
|
||||
|
||||
<Callout type="info">Redis, MongoDB, vektör veritabanları, HBase ve diğer sistemler kendi özel veri arayüzlerini kullanır. Bu sayfa ilişkisel ve SQL uyumlu sonuç ızgaralarına odaklanır.</Callout>
|
||||
|
||||
## Gözatma ve Düzen
|
||||
|
||||
DBX sanal kaydırma kullanır ve yalnızca görünür alanı çizer. Yaygın gözatma işlemleri şunlardır:
|
||||
|
||||
- Yeniden boyutlandırmak için sütun kenarlarını sürükleme ya da içeriğe sığdırmak için çift tıklama
|
||||
- Sütunları yeniden sıralamak için başlıkları sürükleme ve düzeni tablo ya da sorgu başına kaydetme
|
||||
- Yatay kaydırırken sütunları solda veya sağda dondurma
|
||||
- Sütunları ada ya da açıklamaya göre gösterme, gizleme ve arama
|
||||
- Izgara yazı tipini, boyutunu, satır yüksekliğini ve sütun genişliği yoğunluğunu ayarlama
|
||||
- Standart ile devrik görünüm arasında geçiş yapma
|
||||
- Bağlantı adını, sonuç kaynağını, veri türlerini ve sütun açıklamalarını inceleme
|
||||
|
||||
Sütun genişlikleri, sırası, dondurulma durumu ve bazı görüntüleme tercihleri oturumlar arasında korunabilir. Geçerli ızgara düzenini sıfırlamak için görünüm seçeneklerini kullanın.
|
||||
|
||||
## Filtreleme, Arama ve Sıralama
|
||||
|
||||
| Yöntem | Çalıştırma yeri | Ne için uygundur |
|
||||
| --- | --- | --- |
|
||||
| Izgara araması | Yüklenmiş sonuç | Metni, değerleri ya da sütun açıklamalarını hızlıca bulma |
|
||||
| Yerel değer filtresi | Yüklenmiş sonuç | Yeni bir veritabanı sorgusu olmadan geçici değer, liste ya da aralık filtreleme |
|
||||
| `WHERE` | Veritabanı | Büyük tablolar, kesin koşullar ve dizin destekli filtreleme |
|
||||
| `ORDER BY` | Veritabanı | Sayfalar arası kararlı sıralama ve yinelenebilir sonuçlar |
|
||||
| Geçerli sayfa sıralaması | İstemci sayfası | Sorguyu değiştirmeden yüklenmiş satırları geçici olarak karşılaştırma |
|
||||
|
||||
`WHERE` ve `ORDER BY` girdileri uzun ifadeleri, daraltma/genişletme davranışını ve meta veriye dayalı koşul önerilerini destekler. Tablolar açılırken kullanılan varsayılan sıralama ayarlardan yapılandırılabilir.
|
||||
|
||||
<Callout type="info">Büyük tablolarda veritabanı tarafındaki `WHERE` ve `ORDER BY` ifadelerini tercih edin. İstemci araması, değer filtreleri ve geçerli sayfa sıralaması, veritabanının döndürdüğü veri miktarını azaltmaz.</Callout>
|
||||
|
||||
## Sonuçlar Ne Zaman Düzenlenebilir
|
||||
|
||||
Sonuçlar yalnızca DBX hedef tabloyu belirleyebildiğinde ve incelenebilir SQL üretmek için yeterli anahtar ya da satır kimliği bilgisine sahip olduğunda düzenlenebilir.
|
||||
|
||||
| Sonuç türü | Tipik davranış |
|
||||
| --- | --- |
|
||||
| Nesne ağacından açılan tablo verisi | Veritabanı ve tablo destekliyorsa düzenlenebilir |
|
||||
| Basit `SELECT` | Tek bir hedef tablo ve güvenilir satır kimliği çözülebildiğinde düzenlenebilir |
|
||||
| Join'ler, toplamalar, ifadeler, hesaplanan sütunlar | Genellikle salt okunur |
|
||||
| Birincil anahtar ya da güvenilir benzersiz kimlik yok | Güvensiz koşullardan kaçınmak için genellikle salt okunur |
|
||||
| Salt okunur işaretli bağlantı | Tanınan tüm değişiklikler reddedilir |
|
||||
|
||||
Salt okunur hücreler yine ayrıntı açabilir, kopyalanabilir ve dışa aktarılabilir. Bir sonucun neden düzenlenemediğini görmek için veri başlığını ya da hücre ayrıntılarını denetleyin.
|
||||
|
||||
## Düzenleme, Ekleme ve Silme
|
||||
|
||||
- Uzun içerik için çift tıklayarak ya da ayrıntı panelini kullanarak **bir hücreyi düzenleyin**
|
||||
- Bir veya daha fazla bekleyen ekleme olarak **satır ekleyin**
|
||||
- Sekmeyle ayrılmış pano verisinden yeni satırlara **toplu yapıştırın**
|
||||
- Satırları, isteğe bağlı olarak birincil anahtarları hariç tutarak yeni kayıtlar olarak **çoğaltın**
|
||||
- Seçili kayıtları silinmek üzere işaretleyerek **satırları silin**
|
||||
- Boş dize yazmak yerine açıkça **NULL yapın**
|
||||
- Veritabanı ve sütun destekliyorsa yeni alanlarda **varsayılanları kullanın**
|
||||
- Seçili hücreler için yerleşik test verisi üreteçleriyle **değer üretin**
|
||||
- MySQL tablo verisi görünümlerinde, girdiğiniz bir koşulla eşleşen her veritabanı satırında yazılabilir bir sütunu ayarlamak için **`WHERE` ile güncelleyin**; buna yüklenmiş sayfanın dışındaki satırlar da dâhildir
|
||||
|
||||
DBX; tanınan tarih/saat, enum, JSON ve ilgili türler için özel denetimler kullanır. Toplu düzenlemeden önce seçili bölgenin hedef sütun türleriyle eşleştiğini doğrulayın.
|
||||
|
||||
## SQL Önizlemesi ve Kaydetme
|
||||
|
||||
Satır düzeyindeki ilişkisel değişiklikler kaydedilene kadar yerelde kalır. DBX ardından üretilen `INSERT`, `UPDATE` ve `DELETE` ifadelerini gösterir.
|
||||
|
||||
MySQL'deki koşul genelinde toplu güncelleme farklıdır, çünkü eşleşen satırların tümü ızgaraya yüklenmiş olmayabilir. Toplu düzenleme iletişim kutusunda geçerli tablo filtresini kullanın ya da sütunları, işleçleri ve değerleri seçerek eşleşme koşulları oluşturun; birden çok kuralı `AND` veya `OR` ile birleştirin. Gelişmiş bir seçenek olarak özel bir `WHERE` ifadesi de kullanılabilir. Devam etmeden önce tahmini etkilenen satır sayısını önizleyebilirsiniz; bu bir anlık görüntüdür ve güncelleme çalıştığında gerçek sayı farklı olabilir. DBX, tam `UPDATE ... WHERE ...` ifadesini bir tehlike onayında gösterir ve onaydan hemen sonra çalıştırır. Koşulu veritabanı çalıştırma anında değerlendirir ve DBX yüklenmemiş satırlar için güvenilir geri alma SQL'i üretemez.
|
||||
|
||||
Kaydetmeden önce şu ayrıntıları inceleyin:
|
||||
|
||||
- `UPDATE` ve `DELETE` koşullarının yalnızca amaçlanan satırları belirleyip belirlemediği
|
||||
- Yeni satırların zorunlu her alanı içerip içermediği
|
||||
- `NULL`, boş dizeler, varsayılanlar ve üretilen değerlerin doğru olup olmadığı
|
||||
- Toplu bir seçimin fark edilmemiş satırlar içerip içermediği
|
||||
- Etkin bağlantı ve veritabanının doğru olup olmadığı
|
||||
|
||||
Üretim koruması etkinken kaydetme yine ortak üretim yazma onay akışına girer. Bkz. [Üretim ve Yazma Güvenliği](/tr/docs/production-safety).
|
||||
|
||||
<Callout type="warn">SQL önizlemesi son bir inceleme noktasıdır; bir değişiklik onay sistemi değildir. Önemli üretim değişiklikleri yine en az yetkili hesaplar, yedekler ve ekip süreçleri gerektirir.</Callout>
|
||||
|
||||
## Hücre Ayrıntıları ve Karmaşık Değer Önizlemesi
|
||||
|
||||
Hücre ayrıntıları, ızgaraya iyi sığmayan değerleri ele alır:
|
||||
|
||||
- Uzun ya da çok satırlı metin, SQL ve sözdizimi vurgulu JSON
|
||||
- JSON biçimlendirme, sıkıştırma ve yol inceleme
|
||||
- Onaltılık ve ASCII olarak gösterilen ikili veri
|
||||
- Görsel URL'leri, görsel ikili verileri ve tanınan görsel verileri
|
||||
- Tarihler, saatler ve saat dilimi farkındalıklı değerler için özel düzenleme ve biçimlendirme
|
||||
- Tanınan SRID'ler dâhil geometri/uzamsal değerler için metin, koordinat ve harita önizlemeleri
|
||||
- Kısaltılmış değerler, salt okunur açıklamaları ve sütun meta verisi
|
||||
|
||||
Biçimlendirme ve önizleme işlemleri genellikle yalnızca görünümü etkiler. Gerçek düzenlemeler yine bekleyen değişiklik olur ve SQL üretir.
|
||||
|
||||
## Devrik Görünüm
|
||||
|
||||
Devrik görünüm satırlarla sütunları yer değiştirir ve şunlar için uygundur:
|
||||
|
||||
- Çok alanı olan tek bir kayıt
|
||||
- Veri türlerini, açıklamaları, varsayılanları ve boş olabilirliği karşılaştırma
|
||||
- Geniş değerleri olan birkaç kaydı inceleme
|
||||
|
||||
Seçim, kopyalama, ayrıntılar, düzenleme ve gezinme kullanılabilir kalır. Veritabanı tarafındaki sıralama ve filtreleme yine özgün sonuç yönelimini kullanır.
|
||||
|
||||
## Sütun Biçimlendiricileri
|
||||
|
||||
Sütun biçimlendiricileri veriyi değiştirmeden görünümü değiştirir. Seçenekler şunlardır:
|
||||
|
||||
- Genel ya da sütuna özgü tarih/saat biçimleri
|
||||
- JSON yolu çıkarma
|
||||
- Değer maskeleme
|
||||
- Özel görüntüleme şablonları
|
||||
- Sayısal, boole ve veritabanı türüne özgü sunum
|
||||
|
||||
Özgün değer görünümüne dönmek için biçimlendiriciyi temizleyin.
|
||||
|
||||
## Seçim, Kopyalama ve Gezinme
|
||||
|
||||
Izgara; tek tek hücreleri, dikdörtgen aralıkları, tam satırları ve çoklu satır seçimlerini destekler. Ardından şunları yapabilirsiniz:
|
||||
|
||||
- Uyumlu değerler için sayı ya da toplam gibi seçim özetlerini görüntüleme
|
||||
- TSV, CSV, JSON, Markdown, SQL `INSERT` ya da `UPDATE` olarak kopyalama
|
||||
- Hücreleri, aralıkları, satırları ya da sonuçları başlıklarla kopyalama
|
||||
- Kopyalanan sütun adları için tanımlayıcı tırnaklamasını seçme
|
||||
- İş birimlerine yönelik çıkarımlarda kopyalanan adlar olarak sütun açıklamalarını kullanma
|
||||
- Tek bir çok satırlı `INSERT` ya da ayrı `INSERT` ifadeleri üretme
|
||||
- Yeni kayıtlar için şablon oluştururken birincil anahtarları hariç tutma
|
||||
|
||||
DBX bir yabancı anahtar ilişkisini çözebildiğinde bir hücre, başvurulan kayda gidebilir. Bu, meta veriye ve hedef bağlantı yetkilerine bağlıdır.
|
||||
|
||||
## Dışa Aktarma
|
||||
|
||||
| Biçim | Ne için uygundur |
|
||||
| --- | --- |
|
||||
| CSV / TSV | Elektronik tablolar, betikler ve metin değiş tokuşu |
|
||||
| JSON | API hata ayıklama ve programatik işleme |
|
||||
| Markdown | Issue'lar, pull request'ler, dokümantasyon ve sohbet |
|
||||
| XLSX | Excel teslimi; bir sayfa sınırına ulaşıldığında ek çalışma sayfaları oluşturulur |
|
||||
| SQL | Seçili veriyi `INSERT` ya da `UPDATE` ifadeleri olarak yeniden kullanma |
|
||||
|
||||
Sorgu sonucu dışa aktarımı geçerli sonucu ve seçim kapsamını izler. Dışa aktarmadan önce geçerli sayfayı, filtreleri, sıralamayı ve seçimi doğrulayın; böylece görünen veri tablonun tamamı sanılmaz.
|
||||
|
||||
## Otomatik Yenileme, Sayfalama ve Büyük Sonuçlar
|
||||
|
||||
- Tablolar açılırken kullanılan sayfa boyutu yapılandırılabilir ve kalıcıdır
|
||||
- Otomatik yenileme, küçük ve sık değişen sonuç kümeleri için kullanışlıdır
|
||||
- Sorgu sonuçları birden çok çalıştırmayı saklayabilir ya da karşılaştırma için sonuçları sabitleyebilir
|
||||
- Sanal çizim arayüzü akıcı tutar, ancak veritabanı ve aktarım maliyeti yine döndürülen satır sayısına bağlıdır
|
||||
- Sıralama, filtreleme ya da yenileme veriyi yeniden yükleyebilir; kaydedilmemiş düzenlemeler bunu engelleyebilir ya da etkileyebilir
|
||||
|
||||
<Callout type="warn">Veri düzenlerken otomatik yenilemeyi kullanmayın ve bunu bir izleme sistemi olarak görmeyin. Yenileme sıklığını artırmadan önce büyük sorguları daraltın.</Callout>
|
||||
|
||||
## Sorun Giderme
|
||||
|
||||
| Belirti | Denetleyin |
|
||||
| --- | --- |
|
||||
| Sonuç yalnızca görüntülenebiliyor | Join ya da toplama, eksik birincil anahtar, salt okunur bağlantı ya da sürücünün düzenlemeyi desteklememesi |
|
||||
| Filtrelemeden sonra satır sayısı azalmıyor | Veritabanı tarafındaki `WHERE` yerine istemci araması/filtresi kullanılmış |
|
||||
| Sıralama yalnızca geçerli sayfayı etkiliyor | Yerel sıralama etkin; sayfalar arası kararlı sıralama için `ORDER BY` kullanın |
|
||||
| Yapıştırılan sütunlar kaymış | Pano sütun sayısı, seçili başlangıç sütunu, gizli sütunlar ve alan sırası |
|
||||
| Görsel ya da uzamsal önizleme kullanılamıyor | Değer kodlaması, MIME/ikili türü, geometri kodlaması ya da bilinmeyen SRID |
|
||||
| Dışa aktarma sayısı beklenenden farklı | Geçerli sayfa, seçim, istemci filtresi ve veritabanı sorgu kapsamı |
|
||||
|
||||
<Cards>
|
||||
<Card title="Sorgu yazın" href="/tr/docs/query-editor">
|
||||
Izgara üretmek için tamamlamayı, yürütme hedeflerini, çoklu sonuçları ve geçmişi kullanın.
|
||||
</Card>
|
||||
<Card title="Toplu içe aktarın" href="/tr/docs/table-import">
|
||||
CSV, TSV, JSON ya da Excel'den büyük veri kümelerini içe aktarın.
|
||||
</Card>
|
||||
<Card title="Veritabanları arasında aktarın" href="/tr/docs/data-transfer">
|
||||
Tablo verisini bağlantılar ya da veritabanı motorları arasında kopyalayın.
|
||||
</Card>
|
||||
<Card title="Üretim yazmalarını koruyun" href="/tr/docs/production-safety">
|
||||
Salt okunur bağlantıları, üretim onayını ve MCP yetkilerini yapılandırın.
|
||||
</Card>
|
||||
</Cards>
|
||||
@@ -0,0 +1,127 @@
|
||||
---
|
||||
title: Veri Aktarımı
|
||||
description: Tabloları bağlantılar, veritabanları, şemalar ya da veritabanı motorları arasında kopyalayın ve her tablonun sonucunu izleyin.
|
||||
---
|
||||
|
||||
Veri Aktarımı; tabloları ya da koleksiyonları bir kaynaktan başka bir bağlantıya, veritabanına ya da şemaya kopyalar. Ortam göçü, test verisi hazırlama ve tek seferlik birleştirme için kullanın. Sürekli çoğaltma, CDC ya da çift yönlü eşitleme değildir.
|
||||
|
||||
<Callout type="warn">Motorlar arası aktarım, DBX'in alan ve tür dönüşümünden geçer. Sonucu yine de hedefteki yetkiler, kısıtlar, tetikleyiciler, varsayılanlar ve motor anlamı belirler. Önemli göçleri önce prova edin; ardından satır sayılarını ve anahtar alanları doğrulayın.</Callout>
|
||||
|
||||
## İki Giriş Noktası
|
||||
|
||||
### Veri Aktarımı Sihirbazı
|
||||
|
||||
Sihirbaz birden çok tablo için tasarlanmıştır. Kaynak ve hedef bağlantıyı, kataloğu, veritabanını ve şemayı seçin, ardından tablo oluşturmayı, yazma modunu, hedef ad harf durumunu ve toplu iş boyutunu yapılandırın.
|
||||
|
||||
### Kenar Çubuğunda Kopyala ve Yapıştır
|
||||
|
||||
Nesne ağacında bir veya daha fazla tabloyu kopyaladıktan sonra hedef bir konuma yapıştırın:
|
||||
|
||||
- Aynı bağlam içinde yapı ve veri, yalnızca yapı ya da yalnızca veri seçin ve her hedef adı düzenleyin
|
||||
- Başka bir bağlantıya, veritabanına ya da şemaya yapıştırmak, kaynak tablolar ve hedef önceden doldurulmuş biçimde Veri Aktarımı sihirbazını açar
|
||||
- Tüm satır kopyalaması, üretilen ya da hesaplanan sütunları hariç tutar; PostgreSQL identity ve SQL Server identity sütunları için yola özgü işleme uygular
|
||||
|
||||
## Sihirbaz İş Akışı
|
||||
|
||||
<Steps>
|
||||
<Step>
|
||||
### Kaynağı Seçin
|
||||
|
||||
Kaynak bağlantıyı, uygunsa kataloğu, veritabanını ve şemayı seçin. DBX aktarılabilir temel tabloları listeler; MongoDB yolları koleksiyonları listeler.
|
||||
|
||||
</Step>
|
||||
<Step>
|
||||
### Hedefi Seçin
|
||||
|
||||
Başka bir bağlantı, veritabanı ya da şema seçin. Kaynak ile hedef tam olarak aynı konum olamaz.
|
||||
|
||||
</Step>
|
||||
<Step>
|
||||
### Tabloları Seçin
|
||||
|
||||
Tümünü seçin, arayın ya da bir alt küme belirleyin. Tek bir istek yalnızca tek bir kaynak bağlamındaki tabloları içerebilir.
|
||||
|
||||
</Step>
|
||||
<Step>
|
||||
### Seçenekleri Yapılandırın
|
||||
|
||||
Hedef tablo oluşturmayı, yazma modunu, hedef ad harf durumunu ve toplu iş boyutunu gözden geçirin.
|
||||
|
||||
</Step>
|
||||
<Step>
|
||||
### Arka Planda Çalıştırın ve İnceleyin
|
||||
|
||||
İletişim kutusu kapandıktan sonra da görev çalışmayı sürdürür. İlerleme merkezi; geçerli tabloyu, tablo dizinini, satırları, süreyi, başarısız tabloları ve iptal durumunu bildirir.
|
||||
|
||||
</Step>
|
||||
</Steps>
|
||||
|
||||
## Aktarım Seçenekleri
|
||||
|
||||
| Seçenek | Ayrıntılar |
|
||||
| --- | --- |
|
||||
| Hedef tabloları oluştur | Tablo yoksa ve yol destekliyorsa kaynak meta verisinden hedef yapıyı üretir |
|
||||
| Ekle | Hedefteki mevcut satırları korur ve kaynak satırlarını ekler |
|
||||
| Üzerine yaz | Kaynak satırlarını yazmadan önce her hedef tabloyu temizler |
|
||||
| Upsert | Hedef yol destekliyorsa ve kullanılabilir bir anahtar varsa anahtara göre günceller ya da ekler |
|
||||
| Hedef tablo adı harf durumu | Koru, küçük harf ya da büyük harf; dönüştürülen hedef adlar benzersiz kalmalıdır |
|
||||
| Toplu iş boyutu | Sayfalı okumaları ve gruplu yazmaları denetler; arayüz varsayılanı 1000'dir |
|
||||
|
||||
Tablo oluşturma kapalıysa uyumlu hedef tabloların önceden var olması gerekir. Tablo oluşturma açık olsa bile, hedef bir kaynak türünü, varsayılanı, kısıtı ya da nesneyi desteklemiyorsa motorlar arası DDL elle değişiklik gerektirebilir.
|
||||
|
||||
## PostgreSQL Yapısı ve Sahipliği
|
||||
|
||||
Tablo oluşturmanın açık olduğu PostgreSQL'den PostgreSQL'e aktarımlarda DBX; desteklenen dizileri, dizinleri, yabancı anahtarları ve belirli şema düzeyindeki nesneler ile bağımlılıkları işler. Kaynak sahipleri hedef örnekte yoksa DBX size şunları sorar:
|
||||
|
||||
- Etkilenen sahiplik meta verisini atlamak
|
||||
- Eksik sahipleri geçerli hedef kullanıcıya atamak
|
||||
- İptal edip önce gereken hedef rolleri oluşturmak
|
||||
|
||||
Bu, `pg_dump` ve `pg_restore` araçlarının tam karşılığı değildir. Uzantılar, yetkiler, politikalar, tetikleyiciler ya da bağımlılık grafikleri karmaşıksa PostgreSQL'in kendi araçlarını kullanın.
|
||||
|
||||
## Hata İşleme
|
||||
|
||||
Çok tablolu bir görev, ilk tablo hatasından sonra tüm kuyruğu atmaz. DBX hatayı kaydeder, sonraki tabloları dener ve ya başarıyla ya da sonlandırıcı bir hata özetiyle biter.
|
||||
|
||||
- İlerleme, tablo başına hata ayrıntılarını saklar
|
||||
- Hatalar görüntüleme sınırını aştığında arayüz kaç girdinin atlandığını bildirir
|
||||
- Başka bir etkin aktarım aynı tabloyu hedefliyorsa yeni görev reddedilir
|
||||
- İptal, sonraki okuma ve yazmaları durdurur; ancak hedefe uygulanmış veri otomatik olarak geri alınmaz
|
||||
|
||||
Bu nedenle biten bir görev, her tablonun başarılı olduğu anlamına gelmez. Sonlanma durumunu, hata listesini, hedef satır sayılarını ve anahtar alanları denetleyin.
|
||||
|
||||
## Veritabanı Kapsamı
|
||||
|
||||
DBX, kaynak ve hedef bağlantıları sürücü yetenek bildirimi üzerinden filtreler. Uygulama; SQL'den SQL'e, MongoDB'den MongoDB'ye ve belirli MongoDB/SQL dönüşüm yollarını içerir. Bağlanılabilen her veritabanı Veri Aktarımı'nı desteklemez.
|
||||
|
||||
Yetenekler bileşime göre de değişir:
|
||||
|
||||
- Bazı motorlar satır aktarabilir ama kaynak DDL'i yeniden kullanamaz
|
||||
- Upsert, hedef motora ve bulunabilir anahtarlara bağlıdır
|
||||
- Kataloglar, şemalar, kimlik sütunları, diziler, JSON ve ikili değerler motora özgüdür
|
||||
- Özel arama, vektör, mesaj kuyruğu ve yapılandırma merkezi bağlantıları bu genel tablo aktarımı giriş noktasını kullanmaz
|
||||
|
||||
Bir bağlantı seçicide görünmüyorsa, geçerli sürücüsü Veri Aktarımı desteği bildirmemiştir; bu yalnızca gizlenmiş bir arayüz işlemi değildir.
|
||||
|
||||
## Aktarmadan Önce
|
||||
|
||||
- Hedef bağlantıda salt okunur koruma olup olmadığını denetleyin; salt okunur hedefler engellenir
|
||||
- Kaynakta okuma, hedefte oluşturma/yazma yetkilerini doğrulayın
|
||||
- Harf durumu dönüşümünden sonra hedef ad çakışmalarını denetleyin
|
||||
- Birincil anahtarları, benzersiz kısıtları, yabancı anahtarları, tetikleyicileri ve zorunlu alanları inceleyin
|
||||
- Üretim verisinin daha alt bir ortama girmeden önce maskelenmesi gerekip gerekmediğine karar verin
|
||||
- Veri kümesi etkileşimli bir aktarım için fazla büyükse motorun kendi dışa/içe aktarma ya da çevrimiçi göç araçlarını kullanın
|
||||
|
||||
## İlgili Özellikler
|
||||
|
||||
<Cards>
|
||||
<Card title="Tablo İçe Aktarma" href="/tr/docs/table-import">
|
||||
Dosyaları mevcut bir tabloya aktarın ya da toplu olarak yeni tablolar oluşturun.
|
||||
</Card>
|
||||
<Card title="Veritabanı Dışa Aktarma" href="/tr/docs/database-export">
|
||||
Çevrimdışı aktarım için incelenebilir SQL dosyaları üretin.
|
||||
</Card>
|
||||
<Card title="Üretim Güvenliği" href="/tr/docs/production-safety">
|
||||
Salt okunur korumayı, üretim korumasını ve yetki sınırlarını öğrenin.
|
||||
</Card>
|
||||
</Cards>
|
||||
@@ -0,0 +1,162 @@
|
||||
---
|
||||
title: Zamanlanmış Veritabanı Yedekleri
|
||||
description: DBX Masaüstü'nde MySQL ve PostgreSQL için elle, saatlik, günlük ya da haftalık SQL yedekleme zamanlamaları oluşturun.
|
||||
---
|
||||
|
||||
Zamanlanmış veritabanı yedekleri; MySQL ve PostgreSQL bağlantıları için SQL dosyaları üretmek üzere DBX veritabanı dışa aktarma motorunu kullanır. Geliştirme, test ve küçük ile orta ölçekli veritabanlarının yinelenen mantıksal yedekleri için uygundur; tablo kapsamı, saklama, çalıştırma geçmişi ve elle çalıştırma özelliklerini içerir.
|
||||
|
||||
Yalnızca bir kez çalışması gereken bir yedek için zamanlama oluşturmak yerine Ayarlar'daki **Şimdi yedekle** seçeneğini kullanın. Aynı bağlantıyı, hedefi, veritabanını, tabloyu ve içerik kapsamını yapılandırıp **Yedeklemeyi başlat**'ı seçin. Bu tek seferlik çalıştırma bir zamanlama oluşturmaz ya da değiştirmez, sonraki çalıştırmayı hesaplamaz ve zamanlanmış çalıştırmalarla aynı yedekleme geçmişinde görünür.
|
||||
|
||||
<Callout type="warn">Zamanlanmış yedekler şu anda DBX Masaüstü'nün açık kalmasını gerektirir. Bağımsız bir sunucu zamanlayıcısı değildir ve fiziksel yedeklerin, zaman noktasına geri dönüşün, WAL/binlog arşivlemesinin ya da bulut sağlayıcısının yedekleme hizmetlerinin yerini almaz.</Callout>
|
||||
|
||||
## Destek Kapsamı
|
||||
|
||||
| Öğe | Geçerli davranış |
|
||||
| --- | --- |
|
||||
| Veritabanları | MySQL ve PostgreSQL |
|
||||
| Platform | DBX Masaüstü |
|
||||
| Çıktı | Veritabanı/şema hedefi başına bir `.sql` dosyası |
|
||||
| Sıklık | Her N saatte bir, günün belirli bir saatinde ya da haftanın belirli bir günü ve saatinde |
|
||||
| İçerik | Tablo yapısı, veri, veritabanı nesneleri ve isteğe bağlı `DROP TABLE IF EXISTS` |
|
||||
| Tablo kapsamı | Tümü, desene göre dâhil etme ya da desene göre hariç tutma |
|
||||
| Saklama | Yapılandırılmış sayıda başarılı yedekleme dosyasını sakla |
|
||||
|
||||
## Tek Seferlik Yedekleme Çalıştırma
|
||||
|
||||
<Steps>
|
||||
<Step>
|
||||
### Tek seferlik yedekleme formunu açın
|
||||
|
||||
Ayarlar'daki veritabanı yedekleme sayfasını açın ve **Şimdi yedekle**'yi seçin.
|
||||
|
||||
</Step>
|
||||
<Step>
|
||||
### Yedeklemeyi yapılandırın
|
||||
|
||||
Bir MySQL ya da PostgreSQL bağlantısı, hedef dizin, veritabanı kapsamı, tablo kapsamı ve yedekleme içeriği seçin. Tek seferlik yedeklemenin zamanlama adı, sıklığı, saklama sayısı ya da etkinlik durumu yoktur.
|
||||
|
||||
</Step>
|
||||
<Step>
|
||||
### Başlatın ve doğrulayın
|
||||
|
||||
**Yedeklemeyi başlat**'ı seçin. Çalıştırma ortak veritabanı dışa aktarma motorunu kullanır ve **Yedekleme geçmişi** bölümünde görünür; ilerleme, iptal, üretilen dosyalar ve hatalar zamanlanmış çalıştırmalarla aynı davranışı gösterir.
|
||||
|
||||
</Step>
|
||||
</Steps>
|
||||
|
||||
## Zamanlama Oluşturma
|
||||
|
||||
<Steps>
|
||||
<Step>
|
||||
### Yedekleme ayarlarını açın
|
||||
|
||||
Ayarlar'daki veritabanı yedekleme sayfasını açın ve bir zamanlama oluşturun.
|
||||
|
||||
</Step>
|
||||
<Step>
|
||||
### Bağlantıyı ve veritabanlarını seçin
|
||||
|
||||
Bir MySQL ya da PostgreSQL bağlantısı seçin. Sistem dışı tüm veritabanlarını yedekleyin ya da belirli veritabanlarını seçin.
|
||||
|
||||
</Step>
|
||||
<Step>
|
||||
### Tablo kapsamını yapılandırın
|
||||
|
||||
Tüm tabloları seçin, eşleşen desenleri dâhil edin ya da eşleşen desenleri hariç tutun. Desenler `*` ve `?` destekler ve `şema.tablo` ya da `veritabanı.şema.tablo` biçimiyle eşleşebilir.
|
||||
|
||||
</Step>
|
||||
<Step>
|
||||
### Dizini ve sıklığı belirleyin
|
||||
|
||||
Yerel bir hedef dizin seçin ve saatlik, günlük ya da haftalık zamanlamayı yapılandırın. DBX bir sonraki çalıştırmayı önizler.
|
||||
|
||||
</Step>
|
||||
<Step>
|
||||
### İçeriği ve saklamayı seçin
|
||||
|
||||
Yapıyı, veriyi, nesneleri ve `DROP TABLE IF EXISTS` seçeneğini belirleyin, ardından kaç geçmiş yedeğin saklanacağını seçin.
|
||||
|
||||
</Step>
|
||||
<Step>
|
||||
### Kaydedin ve doğrulayın
|
||||
|
||||
Zamanlamayı önce elle çalıştırın. Otomatik çalıştırmayı etkinleştirmeden önce bağlantı yetkilerini, tablo kapsamını, hedef dizini ve üretilen dosyaları doğrulayın.
|
||||
|
||||
</Step>
|
||||
</Steps>
|
||||
|
||||
## Tablo Desenleri
|
||||
|
||||
Desenleri virgül, noktalı virgül ya da satır sonuyla ayırın. Örneğin:
|
||||
|
||||
```text
|
||||
public.*
|
||||
audit_*
|
||||
orders_202?
|
||||
```
|
||||
|
||||
- **Dâhil et**, yalnızca eşleşen tabloları dışa aktarır
|
||||
- **Hariç tut**, diğer her şeyi dışa aktarır ve eşleşen tabloları atlar
|
||||
- PostgreSQL adları büyük/küçük harfe duyarlıdır
|
||||
- MySQL eşleştirmesi `lower_case_table_names` ayarını izler
|
||||
|
||||
Bir dâhil etme kuralı hiçbir tabloyla eşleşmezse, boş ama başarılı bir yedek bildirmek yerine çalıştırma başarısız olur.
|
||||
|
||||
## Tutarlılık ve Çalıştırma
|
||||
|
||||
Her yedekleme, veritabanı/şema hedeflerini dışa aktarmadan önce tutarlı bir anlık görüntü oturumu kurar. DBX ardından salt okunur anlık görüntü işlemini geri alır ve iş değişikliklerini uygulamaz.
|
||||
|
||||
Yedekleme çalıştırmaları ortak dışa aktarma görev alanında görünür ve şunları gösterir:
|
||||
|
||||
- Geçerli veritabanı ve nesne
|
||||
- Başarı, hata ya da iptal durumu
|
||||
- Elle mi zamanlanmış mı tetiklendiği
|
||||
- Üretilen dosya listesi
|
||||
- Hata ayrıntıları ve zaman damgaları
|
||||
|
||||
İptal, kalan dışa aktarımları durdurur. Hata ya da iptal durumunda DBX o çalıştırmadan kalan kısmi dosyaları kaldırmaya çalışır; böylece eksik çıktı başarılı bir yedek sanılmaz.
|
||||
|
||||
## Saklama ve Geçmiş
|
||||
|
||||
Her zamanlamanın bir saklama sayısı vardır. Sınırın ötesindeki eski çalıştırmalar geçmişten ayıklanır ve dosyaları silinir. Tek tek yedekleme çalıştırmaları ve dosyaları elle de kaldırılabilir.
|
||||
|
||||
<Callout type="warn">Hedef dizinin yine bağımsız bir işletim sistemi, NAS ya da nesne depolama yedeğine ihtiyacı vardır. Aynı diskteki başka bir klasöre kaydetmek; disk arızasına, fidye yazılımına ya da makinenin kaybına karşı koruma sağlamaz.</Callout>
|
||||
|
||||
## Geri Yükleme Provaları
|
||||
|
||||
Üretilen `.sql` dosyaları [SQL Dosyası Çalıştırma](/tr/docs/sql-file) ile içe aktarılabilir. Yalıtılmış bir ortamda düzenli olarak şunları doğrulayın:
|
||||
|
||||
- Dosyanın tamamı okunabiliyor ve çalıştırılabiliyor
|
||||
- Şema, dizinler, nesneler ve satır sayıları doğru
|
||||
- Karakter kümesi, saat dilimi, dizi/identity değerleri ve yetkiler için gereken izleyen adımlar var
|
||||
- Uygulama geri yüklenen veritabanına bağlanabiliyor
|
||||
|
||||
Başarılı bir yedekleme çalıştırması dosya üretiminin tamamlandığı anlamına gelir; geri yüklemeye hazır olduğunu kanıtlamaz.
|
||||
|
||||
## Zamanlanmış Yedekleme ile Veritabanı Dışa Aktarma
|
||||
|
||||
| Özellik | Ne için uygundur |
|
||||
| --- | --- |
|
||||
| [Veritabanı Dışa Aktarma](/tr/docs/database-export) | Tek seferlik göç, değişiklik öncesi yedek ve elle kapsam seçimi |
|
||||
| Zamanlanmış Veritabanı Yedekleme | Sabit bir bağlantı ve kapsam için yinelenen mantıksal yedekler |
|
||||
| Veritabanının kendi yedeklemesi | Büyük üretim veritabanları, PITR, artımlı/fiziksel yedekleme, yüksek erişilebilirlik ve uyumluluk gereksinimleri |
|
||||
|
||||
## Güvenlik Önerileri
|
||||
|
||||
- Yalnızca yedekleme için gereken okuma yetkilerine sahip bir veritabanı hesabı kullanın
|
||||
- Hedefi verinin hassasiyet düzeyine göre koruyun ve şifreleyin
|
||||
- İş verisi içeren SQL dosyalarını hiçbir zaman herkese açık bir depoya commit etmeyin
|
||||
- Veritabanları ya da tablolar yeniden adlandırıldıktan sonra kapsamı yeniden denetleyin
|
||||
- DBX Masaüstü kapalıysa, bilgisayar uykudaysa ya da hedef erişilemezse zamanlamalar sunucu zamanlayıcısı güvenilirliğiyle çalışmaz
|
||||
|
||||
<Cards>
|
||||
<Card title="Tek seferlik veritabanı dışa aktarma" href="/tr/docs/database-export">
|
||||
Yapıyı, veriyi, nesneleri ve veritabanı kapsamını elle seçin.
|
||||
</Card>
|
||||
<Card title="SQL dosyalarını geri yükleyin" href="/tr/docs/sql-file">
|
||||
Yedekleme dosyalarını ifade düzeyinde ilerleme ve hatalarla çalıştırın.
|
||||
</Card>
|
||||
<Card title="Üretim güvenliği" href="/tr/docs/production-safety">
|
||||
Salt okunur hesaplar, üretim koruması ve en az yetki politikaları kullanın.
|
||||
</Card>
|
||||
</Cards>
|
||||
@@ -0,0 +1,108 @@
|
||||
---
|
||||
title: Veritabanı Dokümantasyonu
|
||||
description: Bir şemaya dokümantasyon olarak gözatın; tabloları ve sütunları notlar ile renk kodlu gruplarla işaretleyin; dbdiagram.io veya CI sapma denetimleri için DBML dışa aktarın.
|
||||
---
|
||||
|
||||
Veritabanı dokümantasyonu, canlı bir şemayı okunabilir hâle getirir. DBX; tabloları, sütunları, dizinleri ve ilişkileri bir anlık görüntüde toplar, kendi yazdığınız notlarla birleştirir ve gözatılabilir bir başvuru üretir. Aynı anlık görüntü DBML'e serileştirilir, böylece diyagram araçları ve CI denetimleri tam olarak görüntüleyicinin gösterdiğini okur.
|
||||
|
||||
Notlar, göç dosyalarınızın yanına commit edebileceğiniz düz bir JSON dosyasında durur; bu da şema dokümantasyonunu pull request'lerde incelenebilir kılar.
|
||||
|
||||
## Dokümantasyonu Açma
|
||||
|
||||
[Nesne Gezgini](/tr/docs/object-browser) içinde bir tabloya sağ tıklayıp **Dokümantasyon**'u seçin. Görüntüleyici geçerli bağlantı, veritabanı ve şema üzerinde açılır.
|
||||
|
||||
Kenar çubuğu **Şemalar** ile **Tablo Grupları** arasında geçiş yapar. Arama; tabloları, sütunları ve grupları aynı anda kapsar. Her tablo sayfası sütunları, dizinleri, **Başvurular** ve **Başvuranlar** bölümlerini listeler; böylece ilişkiler iki yönde de okunur.
|
||||
|
||||
## Notlar ve Gruplar
|
||||
|
||||
| Neyi işaretlersiniz | Nerede |
|
||||
| --- | --- |
|
||||
| Proje notu | Dokümantasyon ana sayfası |
|
||||
| Tablo notu | Tablo sayfası başlığı |
|
||||
| Sütun notu | Tablodaki sütun satırı |
|
||||
| Tablo grubu ve rengi | Tablo sayfasındaki grup seçici |
|
||||
|
||||
Notlar Markdown kabul eder ve dizinde satır içi görüntülenir. Her düzenleme otomatik kaydedilir; başlıkta önce **Kaydediliyor…**, sonra **Kaydedildi** görünür. Başarısız bir yazma yutulmaz, bildirilir; metniniz korunur, böylece sonraki düzenleme yeniden dener.
|
||||
|
||||
Gruplar sabit bir renk değil, bir **renk tonu** saklar. Açıklık ve doygunluk etkin temadan gelir; böylece bir grup hem açık hem koyu modda okunabilir kalır — ve aynı ton, DBML'e aktarıldığında `[color: #rrggbb]` değerine dönüşür.
|
||||
|
||||
## Yerel Notlar ve Veritabanı Açıklamaları
|
||||
|
||||
Hem veritabanında `COMMENT ON` değeri hem de DBX'te yazılmış notu olan bir sütun, sizin notunuzu **YEREL** işaretiyle gösterir ve veritabanı açıklamasını altında korur. Veritabanında hiçbir şeyin üzerine yazılmaz — DBX dokümantasyon için asla DDL çalıştırmaz ve özgün açıklama her zaman geri alınabilir.
|
||||
|
||||
## Notlar Nerede Saklanır
|
||||
|
||||
Varsayılan olarak her bağlantının DBX veri dizini içinde kendi notlar dosyası vardır, bu yüzden özellik hiçbir kurulum gerektirmeden çalışır.
|
||||
|
||||
Bunun yerine deponuzdaki bir dosyayı göstermek için bağlantının **Gelişmiş** ayarlarındaki **Not dosyası** alanını ayarlayın (`docs_notes_path` olarak saklanır). Notlar dosyası şöyle görünür:
|
||||
|
||||
```json
|
||||
{
|
||||
"formatVersion": 1,
|
||||
"project": { "name": "Billing", "note": "# Billing\n\nOne schema per tenant." },
|
||||
"groups": [{ "id": "core", "name": "Core", "hue": 210 }],
|
||||
"tables": {
|
||||
"public.orders": {
|
||||
"group": "core",
|
||||
"note": "One row per checkout.",
|
||||
"columns": { "status": { "note": "Lifecycle state." } }
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
Anahtarlar `şema.tablo` ve `şema.tablo.sütun` biçimindedir ve motorun tanımlayıcı harf durumunu nasıl ele aldığına göre normalleştirilir. Yazmalar atomiktir — dosya hedefinin yanına yazılıp yeniden adlandırılır — bu yüzden yarıda kesilen bir kaydetme, metninizin yerinde yarım yazılmış bir dosya bırakamaz.
|
||||
|
||||
<Callout type="warn">Notlar dosyasının bulunmaması sorun değildir; boş başlar. Bozuk bir dosya ise bilinçli olarak kesin hatadır: devam etmek, yazıları sessizce atarken görünüşte eksiksiz bir dokümantasyon üretirdi.</Callout>
|
||||
|
||||
## Uyarılar
|
||||
|
||||
Dokümantasyon sessizce değil, görünür biçimde bozulur. Görüntüleyici şu durumlarda bir bant gösterir:
|
||||
|
||||
| Durum | Anlamı |
|
||||
| --- | --- |
|
||||
| Bir tablo belgelenemedi | Bir tablonun meta verisi okunamadı. Şemanın geri kalanı yine de oluşturuldu. |
|
||||
| İlişki bilgisi yok | Motor yabancı anahtar meta verisi bildirmiyor, bu yüzden bağlantı türetilemedi. |
|
||||
| Veritabanı açıklamaları kullanılamıyor | Motorun açıklama desteği yok, bu yüzden her açıklama kendi notlarınızdan geliyor. |
|
||||
| Bazı notlar artık hiçbir şeyle eşleşmiyor | Bir not, artık var olmayan bir tabloya ya da sütuna başvuruyor. Hiçbir şey silinmedi. |
|
||||
| DBML'de gösterilemiyor | Bir yapı DBX'te belgeleniyor ancak dışa aktarılan DBML'de ifade edilemiyor. |
|
||||
|
||||
## DBML Dışa Aktarma
|
||||
|
||||
```bash
|
||||
dbx dbml <connection> [--out path] [--notes path] [--schema name] [--database name] [--tables a,b]
|
||||
```
|
||||
|
||||
`--out` verilmezse DBML stdout'a yazılır, böylece boru hattına verilebilir. Notlar ve gruplar yalnızca `--notes` bir dosya belirttiğinde birleştirilir; bayrak açık olduğu için yoldaki bir yazım hatası sessizce notsuz çıktı üretmek yerine hata verir.
|
||||
|
||||
Çıktı; `Table`, çıkarsanmış kardinaliteyle `Ref`, `Enum` ve `TableGroup` bloklarını içerir ve doğrudan [dbdiagram.io](https://dbdiagram.io) üzerine yapıştırılabilir.
|
||||
|
||||
Sonucu commit edin ve incelenmemiş şema sapmasında CI'ın başarısız olmasını sağlayın:
|
||||
|
||||
```yaml
|
||||
- run: dbx dbml prod --notes docs/dbx-docs.json --out docs/schema.dbml
|
||||
- run: git diff --exit-code docs/schema.dbml
|
||||
```
|
||||
|
||||
## Destek ve Sınırlar
|
||||
|
||||
- Yalnızca ilişkisel motorlar. Belge veritabanlarının ve anahtar-değer depolarının DBML karşılığı yoktur ve kapsam dışıdır.
|
||||
- Tablolar, sütunlar, dizinler, ilişkiler ve enum'lar belgelenir. Tetikleyiciler, yordamlar, işlevler, diziler ve yetkiler belgelenmez.
|
||||
- DBML dışa aktarımı tek yönlüdür. Bir `.dbml` dosyası bir çıktıdır, asla doğruluk kaynağı değildir — DBX onu içe aktarmaz.
|
||||
- Yabancı anahtar meta verisi olmayan motorlar, ilişki bağlantısı içermeyen bir dokümantasyon üretir; bu boş bir sayfa yerine uyarı olarak bildirilir.
|
||||
- Şema geçmişi ve tablo başına "son güncelleme" izlenmez. Anlık görüntüler sürüm damgalıdır, böylece bu daha sonra eklenebilir.
|
||||
|
||||
<Cards>
|
||||
<Card title="Nesne gezgini" href="/tr/docs/object-browser">
|
||||
Dokümantasyonun açıldığı ve nesne kaynağının bulunduğu yer.
|
||||
</Card>
|
||||
<Card title="Şema gezgini" href="/tr/docs/schema-browser">
|
||||
Sütunları, yabancı anahtarları ve açıklamaları doğrudan inceleyin.
|
||||
</Card>
|
||||
<Card title="Alan soy ağacı" href="/tr/docs/field-lineage">
|
||||
Bir sütunun nereden geldiğini ve bir değişikliğin neyi etkilediğini izleyin.
|
||||
</Card>
|
||||
<Card title="CLI" href="/tr/docs/cli">
|
||||
Başsız dokümantasyon dışa aktarımı dâhil tam komut başvurusu.
|
||||
</Card>
|
||||
</Cards>
|
||||
@@ -0,0 +1,124 @@
|
||||
---
|
||||
title: Veritabanı Dışa Aktarma
|
||||
description: Bir veya daha fazla veritabanından yapıyı, veriyi ve okunabilir veritabanı nesnelerini akış hâlinde SQL dosyalarına aktarın.
|
||||
---
|
||||
|
||||
Veritabanı Dışa Aktarma; küçük yedekler, göçler, test veri kümeleri ya da riskli değişiklikler öncesi anlık görüntüler için incelenebilir SQL betikleri üretir. Tek bir veritabanı/şema aktarabilir ya da bir bağlantıdaki birden çok veritabanı için ayrı dışa aktarımları düzenleyebilir.
|
||||
|
||||
<Callout type="info">SQL dışa aktarma mantıksal bir dışa aktarmadır; veritabanına özgü fiziksel bir yedek değildir. Büyük üretim sistemleri, zaman noktasına geri dönüş, artımlı yedekleme ya da katı tutarlılık için resmî veritabanı araçlarını kullanın. Zamanlanmış ve tutarlı MySQL ile PostgreSQL dışa aktarımları için bkz. [Veritabanı Yedekleme](/tr/docs/database-backup).</Callout>
|
||||
|
||||
## Dışa Aktarılan İçerik
|
||||
|
||||
| İçerik | Ayrıntılar |
|
||||
| --- | --- |
|
||||
| Tablo yapısı | `CREATE TABLE`, sütunlar, birincil anahtarlar, dizinler, kısıtlar ve sürücü üzerinden görünen diğer DDL |
|
||||
| Tablo verisi | Gruplar hâlinde okunan ve tablonun tamamı belleğe alınmadan `INSERT` ifadeleri olarak yazılan satırlar |
|
||||
| Veritabanı nesneleri | Motorun okunabilir tanım sunduğu görünümler, diziler, uzantılar, yordamlar ve işlevler |
|
||||
| Veritabanı oluşturma | İsteğe bağlı MySQL `CREATE DATABASE IF NOT EXISTS` ve `USE` ön bölümü |
|
||||
| İçe aktarma yardımcıları | Yabancı anahtar denetimleri, kimlik sütunu yazmaları, yordam ayırıcıları ve benzeri gereksinimler için motora özgü hazırlık ve temizlik |
|
||||
|
||||
Yalnızca seçili tablolar dışa aktarılırken yapı ve veri o alt kümeyle sınırlıdır. Birkaç tablo seçildi diye şema genelindeki yordamlar dâhil edilmez. Nesne kapsamı her zaman veritabanına ve sürücüye bağlıdır.
|
||||
|
||||
## Tek Veritabanı Dışa Aktarma
|
||||
|
||||
<Steps>
|
||||
<Step>
|
||||
### Bağlantı ve Veritabanı Seçin
|
||||
|
||||
Uygun olduğunda bir veritabanı ve şema seçin, ardından dâhil edilecek tabloları belirleyin.
|
||||
|
||||
</Step>
|
||||
<Step>
|
||||
### İçeriği ve DDL'i Yapılandırın
|
||||
|
||||
Yapıyı, veriyi, nesneleri, mevcut tabloyu silme davranışını, MySQL veritabanı oluşturmayı ve otomatik artan değer işleyişini seçin.
|
||||
|
||||
</Step>
|
||||
<Step>
|
||||
### Çıktıyı Seçin
|
||||
|
||||
Masaüstü, seçtiğiniz yerel bir `.sql` yoluna yazar. Docker/Web geçici sunucu deposuna yazar ve sonucu tarayıcı üzerinden indirir.
|
||||
|
||||
</Step>
|
||||
<Step>
|
||||
### Arka Planda Üretin ve İnceleyin
|
||||
|
||||
İlerleme; hazırlığı, geçerli nesneyi, nesne dizinini, dışa aktarılan satırları, hataları ve iptali bildirir. Görev ilerleme merkezinde görünür kalır.
|
||||
|
||||
</Step>
|
||||
</Steps>
|
||||
|
||||
Başarılı bir Masaüstü dışa aktarımından sonra görev sonucu, çıktıyı dosya yöneticisinde gösterebilir. Web, indirmeden sonra geçici sunucu dosyasını kaldırır.
|
||||
|
||||
## Tüm Veritabanlarını Dışa Aktarma
|
||||
|
||||
Geçerli bağlantıdan birden çok veritabanı aramak ve seçmek için Tüm Veritabanlarını Dışa Aktar seçeneğini etkinleştirin:
|
||||
|
||||
- Şeması olmayan motorlar normalde veritabanı başına bir `.sql` dosyası üretir
|
||||
- PostgreSQL gibi şema farkındalıklı motorlar şema başına bir plan oluşturur; bir veritabanında birden çok şema varsa dosya adları hem veritabanını hem şemayı içerir
|
||||
- Masaüstü, her plan öğesini seçtiğiniz çıktı dizinine yazar
|
||||
- Docker/Web her dosyayı sunucuda üretir ve tarayıcı indirmelerini tetikler
|
||||
- Bir plan öğesi başarısız olur ya da iptal edilirse sonraki öğeler durur; hâlihazırda tamamlanan dosyalar otomatik olarak kaldırılmaz
|
||||
|
||||
Tüm veritabanı dışa aktarımı, bağımsız mantıksal dışa aktarımların sıralı olarak düzenlenmesidir. Tek bir veritabanları arası işlem ya da örnek genelinde tutarlı bir anlık görüntü değildir.
|
||||
|
||||
## Yapı Seçenekleri
|
||||
|
||||
### Mevcut Tabloları Sil
|
||||
|
||||
Etkinleştirildiğinde DBX, ilgili `CREATE TABLE` ifadesinden önce veritabanına uyarlanmış `DROP TABLE IF EXISTS` ifadeleri yazar. Betiği çalıştırmak hedefteki veriyi silebilir, bu yüzden bu seçeneği dikkatle inceleyin.
|
||||
|
||||
### MySQL Veritabanı Oluştur
|
||||
|
||||
MySQL dışa aktarımları başa `CREATE DATABASE IF NOT EXISTS` ve `USE` ekleyebilir. İçe aktaran hesabın uygun yetkileri olmalıdır. Beklenmedik veritabanı oluşturmayı ya da bağlam değişimini önlemek için seçenek varsayılan olarak kapalıdır.
|
||||
|
||||
### MySQL Otomatik Artan Başlangıcı
|
||||
|
||||
Varsayılan olarak tablo düzeyindeki `AUTO_INCREMENT=N` korunur. Otomatik Artanı Atla seçeneği yalnızca bu tablo seçeneğini kaldırır; sütunun `AUTO_INCREMENT` özniteliğini kaldırmaz. Bu, yeni bir ortamın kendi başlangıç dizi değerini seçmesi istendiğinde kullanışlıdır.
|
||||
|
||||
## Veri Yazma ve Tutarlılık
|
||||
|
||||
DBX sayfalı ya da akış tabanlı okuma kullanır ve satırları artımlı olarak yazar. Etkileşimli dışa aktarımlar şu anda 1000 satırlık toplu iş boyutu kullanır. Üretilen insert ifadeleri, veritabanı yeteneklerine göre çok satırlı ya da tek satırlı olabilir.
|
||||
|
||||
Dışa aktarma yolu şunları yapmaya çalışır:
|
||||
|
||||
- MySQL yabancı anahtar denetimlerini devre dışı bırakıp sonra geri yüklemek
|
||||
- Gerektiğinde desteklenen kimlik sütunlarına yapılan açık yazmaları sarmalamak
|
||||
- Dizeleri, tarihleri, JSON'u, dizileri, ikili değerleri ve `NULL` değerini hedef lehçeye göre biçimlendirmek
|
||||
- Veritabanının gerektirdiği yordam ayırıcılarını ya da toplu iş sınırlarını eklemek
|
||||
- Aynı tablonun grupları arasındaki sapmayı azaltmak için desteklenen bağlantılarda kararlı bir oturum kullanmak
|
||||
|
||||
Etkileşimli SQL dışa aktarımı yine de her veritabanı ve nesne genelinde tek bir küresel anlık görüntü sözü veremez. Tutarlılık gerektiğinde [Veritabanı Yedekleme](/tr/docs/database-backup) ya da veritabanının kendi araçlarını kullanın.
|
||||
|
||||
## Hatalar ve İptal
|
||||
|
||||
- Bir tablo ya da nesne okunamadığında normal dışa aktarma yolları hatayı bir SQL yorumu olarak yazıp devam edebilir; meta veri, bağlantı veya dosya hataları görevi sonlandırabilir
|
||||
- İptal, nesneler ya da satır grupları arasında geçerli olur
|
||||
- Masaüstü, yeniden kullanmadan önce denetlenmesi gereken kısmi bir dosya bırakabilir
|
||||
- Web, hata ya da iptal sonrası geçici sunucu dosyalarını temizler ve başarılı bir indirme tetiklemez
|
||||
- Başarılı bir dışa aktarma yalnızca dosyanın üretildiğini doğrular; başka bir veritabanında başarılı bir geri yüklemeyi değil
|
||||
|
||||
## Geri Yükleme ve Doğrulama
|
||||
|
||||
Dışa aktarılmış bir betiği önizleyip çalıştırmak için [SQL Dosyası Çalıştırma](/tr/docs/sql-file) özelliğini kullanın. Geri yüklemeden önce şunları denetleyin:
|
||||
|
||||
- Hedef motor ve sürüm uyumluluğu
|
||||
- Dosyanın `DROP TABLE`, `CREATE DATABASE` ya da büyük insert grupları içerip içermediği
|
||||
- Oluşturma, nesne ve veri yazma yetkileri
|
||||
- İçe aktarmadan sonra tablo sayıları, satır sayıları, dizinler, kısıtlar, diziler ve kritik nesneler
|
||||
|
||||
<Callout type="warn">Dışa aktarılan dosyalar parola özetleri, belirteçler, kişisel bilgiler ve iş açısından hassas veriler içerebilir. Maskelenmemiş dışa aktarımları herkese açık depolara commit etmeyin ve güvenmediğiniz ortamlara göndermeyin.</Callout>
|
||||
|
||||
## İlgili Özellikler
|
||||
|
||||
<Cards>
|
||||
<Card title="Veritabanı Yedekleme" href="/tr/docs/database-backup">
|
||||
Masaüstü'nde tutarlı MySQL ve PostgreSQL SQL yedeklerini zamanlayın.
|
||||
</Card>
|
||||
<Card title="SQL Dosyası Çalıştırma" href="/tr/docs/sql-file">
|
||||
SQL dosyalarını önizleyin, toplu çalıştırın ve sonuçları inceleyin.
|
||||
</Card>
|
||||
<Card title="Veri Aktarımı" href="/tr/docs/data-transfer">
|
||||
Ara bir SQL dosyası olmadan tablo verisini bağlantılar arasında doğrudan kopyalayın.
|
||||
</Card>
|
||||
</Cards>
|
||||
@@ -0,0 +1,163 @@
|
||||
---
|
||||
title: Veritabanı Test Laboratuvarı
|
||||
description: DBX geliştirme ve doğrulaması için yinelenebilir, yerel veritabanı örnekleri başlatın.
|
||||
---
|
||||
|
||||
Veritabanı Test Laboratuvarı; DBX'i gerçek veritabanı sürümlerine karşı test etmek için küçük, sürümü sabitlenmiş Docker Compose ortamları sunar. Her tarif; adlandırılmış bir veri birimi, bir sağlık denetimi, doğrulama sırasında oluşturulan başlangıç verisi ya da duman testi verisi kullanır ve varsayılan olarak `127.0.0.1` üzerinde dinler.
|
||||
|
||||
<Callout type="warning">Varsayılan parola `123456`, ancak portlar varsayılan olarak yalnızca yerel makineden erişilebilir. Uzaktan erişime izin vermek için açıkça `DB_BIND_ADDRESS=0.0.0.0` ayarlayın, `DB_PASSWORD` değerini değiştirin ve olağan güvenlik duvarı denetimlerinizi uygulayın. Bu ortamlar geliştirme içindir, üretim dağıtımı için değil.</Callout>
|
||||
|
||||
## Kullanılabilir tarifler
|
||||
|
||||
| Veritabanı | Sürüm dizini | Resmî özgün imaj | Compose'un kullandığı CNB imajı | Varsayılan sunucu portu | Kapsayıcı adı |
|
||||
| --- | --- | --- | --- | ---: | --- |
|
||||
| ClickHouse | `clickhouse/24.8` | `clickhouse/clickhouse-server:24.8.14.39` | `docker.cnb.cool/znb/images/clickhouse-server:24.8.14.39` | `10600` | `dbx-clickhouse-24.8` |
|
||||
| Consul | `consul/2.0.2` | `hashicorp/consul:2.0.2` | `docker.cnb.cool/znb/images/consul:2.0.2` | `10900` | `dbx-consul-2.0.2` |
|
||||
| Elasticsearch | `elasticsearch/6.8` | `docker.elastic.co/elasticsearch/elasticsearch:6.8` | `docker.cnb.cool/znb/images/elasticsearch:6.8` | `11500` | `dbx-elasticsearch-6.8` |
|
||||
| etcd | `etcd/3.5` | `quay.io/coreos/etcd:v3.5.21` | `quay.io/coreos/etcd:v3.5.21` | `10710` | `dbx-etcd-3.5` |
|
||||
| etcd | `etcd/3.7` | `gcr.io/etcd-development/etcd:v3.7.0` | `docker.cnb.cool/znb/images/etcd:v3.7.0` | `10700` | `dbx-etcd-3.7` |
|
||||
| Kafka | `kafka/4.3` | `apache/kafka:4.3.1` | `docker.cnb.cool/znb/images/kafka:4.3.1` | `11300` | `dbx-kafka-4.3` |
|
||||
| MariaDB | `mariadb/10.11` | `mariadb:10.11.11` | `docker.cnb.cool/znb/images/mariadb:10.11.11` | `10200` | `dbx-mariadb-10.11` |
|
||||
| MongoDB | `mongodb/5.0` | `mongo:5.0.5` | `docker.cnb.cool/znb/images/mongo:5.0.5` | `10400` | `dbx-mongodb-5.0` |
|
||||
| MongoDB | `mongodb/8.2` | `mongo:8.2.3-noble` | `docker.cnb.cool/znb/images/mongo:8.2.3-noble` | `10401` | `dbx-mongodb-8.2` |
|
||||
| MySQL | `mysql/5.7` | `mysql:5.7.44` | `docker.cnb.cool/znb/images/mysql:5.7.44` | `10100` | `dbx-mysql-5.7` |
|
||||
| MySQL | `mysql/8.4` | `mysql:8.4.6` | `docker.cnb.cool/znb/images/mysql:8.4.6` | `10101` | `dbx-mysql-8.4` |
|
||||
| Nacos | `nacos/2.5` | `nacos/nacos-server:v2.5.2` | `docker.cnb.cool/znb/images/nacos-server:v2.5.2` | `11000` | `dbx-nacos-2.5` |
|
||||
| Nacos | `nacos/3.2` | `nacos/nacos-server:v3.2.3` | `docker.cnb.cool/znb/images/nacos-server:v3.2.3` | `11003` | `dbx-nacos-3.2` |
|
||||
| PostgreSQL | `postgresql/14.23` | `postgres:14.23` | `docker.cnb.cool/znb/images/postgres:14.23` | `10300` | `dbx-postgresql-14.23` |
|
||||
| PostgreSQL | `postgresql/17.4` | `postgres:17.4` | `docker.cnb.cool/znb/images/postgres:17.4` | `10301` | `dbx-postgresql-17.4` |
|
||||
| Pulsar | `pulsar/4.2` | `apachepulsar/pulsar:4.2.3` | `docker.cnb.cool/znb/images/pulsar:4.2.3` | `11400` | `dbx-pulsar-4.2` |
|
||||
| Qdrant | `qdrant/1.8` | `qdrant/qdrant:v1.8.3` | `docker.cnb.cool/znb/images/qdrant:v1.8.3` | `11200` | `dbx-qdrant-1.8` |
|
||||
| Redis | `redis/3.0.7` | `redis:3.0.7-alpine` | `docker.cnb.cool/znb/images/redis:3.0.7-alpine` | `10500` | `dbx-redis-3.0.7` |
|
||||
| Redis | `redis/7.4` | `redis:7.4.9-alpine` | `docker.cnb.cool/znb/images/redis:7.4.9-alpine` | `10501` | `dbx-redis-7.4` |
|
||||
| r-nacos | `rnacos/0.8` | `qingpan/rnacos:v0.8.5` | `docker.cnb.cool/znb/images/rnacos:v0.8.5` | `11100` | `dbx-rnacos-0.8` |
|
||||
| ZooKeeper | `zookeeper/3.9` | `zookeeper:3.9.5` | `docker.cnb.cool/znb/images/zookeeper:3.9.5` | `10800` | `dbx-zookeeper-3.9` |
|
||||
|
||||
Her ürün kendine ayrılmış bir `101xx`-`115xx` sunucu portu aralığını kullanır ve doğrulayıcı, bildirilen her varsayılan eşlemenin doğru aralıkta ve genel olarak benzersiz olduğunu denetler. Varsayılan parola `123456`, varsayılan veritabanı ise `dbx` şeklindedir. Redis'te adlandırılmış veritabanı olmadığından DB 0 ile `dbx:` duman testi anahtar öneki kullanılır. Compose, CNB imaj sütununu kullanır; resmî özgün imaj sütunu, kaynak izlenebilirliği ve doğrudan indirme için özgün imaj başvurusunu korur. Redis 3.0.7 yalnızca amd64 içindir; arm64 makinelerde komut bir mimari uyarısı yazar ve Docker öykünme kullanır. Diğer tüm tarifler hem amd64 hem arm64 destekler.
|
||||
|
||||
Nacos; `nacos` yöneticisini, `123456` parolasını ve varsayılan `public` ad alanını kullanır. V2; HTTP, gRPC ve Raft için `11000`, `11001` ve `11002` sunucu portlarını; V3 ise HTTP `11003`, web konsolu `11004`, gRPC `11005` ve Raft `11006` portlarını kullanır. İki sürüm varsayılan olarak birlikte çalışabilir.
|
||||
|
||||
```bash
|
||||
DB_PORT=11030 NACOS_CONSOLE_PORT=11031 NACOS_GRPC_PORT=11032 NACOS_RAFT_PORT=11033 make db DB=nacos@3.2
|
||||
```
|
||||
|
||||
r-nacos; `admin` yöneticisini ve `123456` parolasını kullanır. DBX tarifi HTTP, gRPC ve web konsolu sunucu portlarını varsayılan olarak `11100`, `11101` ve `11102` yapar; özgün tek düğümlü Compose dosyası ise `8848:8848`, `9848:9848` ve `10848:10848` portlarını yayımlar.
|
||||
|
||||
```bash
|
||||
DB_PORT=11130 RNACOS_GRPC_PORT=11131 RNACOS_CONSOLE_PORT=11132 make db DB=rnacos@0.8
|
||||
```
|
||||
|
||||
etcd; `root` kullanıcısını `123456` parolasıyla oluşturur, root rolünü verir ve ardından kimlik doğrulamayı etkinleştirir. Varsayılan istemci ve eş portları `10700` ile `10701`'dir. Özgün Docker komutunun portlarını kullanmak için şunu çalıştırın:
|
||||
|
||||
```bash
|
||||
DB_PORT=2379 ETCD_PEER_PORT=2380 make db DB=etcd@3.7
|
||||
```
|
||||
|
||||
Qdrant, yönetici API anahtarı olarak `123456` kullanır. DBX'te kullanıcı adını boş bırakın ve anahtarı parola olarak girin; böylece sürücü onu `api-key` HTTP başlığında gönderir. HTTP ve gRPC portları varsayılan olarak `11200` ve `11201`'dir. Özgün Docker komutundaki portları kullanmak için şunu çalıştırın:
|
||||
|
||||
```bash
|
||||
DB_PORT=6333 QDRANT_GRPC_PORT=6334 make db DB=qdrant@1.8
|
||||
```
|
||||
|
||||
ZooKeeper, `/dbx` düğümünü korumak için `root` / `123456` Digest kimlik bilgilerini kullanır. Varsayılan sunucu portu `10800`'dür; özgün Docker komutuyla eşleşmek için `DB_PORT=2181` kullanın. ZooKeeper'ın Digest ACL modeli, genel bir oturum açma anahtarı sunmak yerine tek tek düğümleri korur.
|
||||
|
||||
Kafka ve Pulsar bilinçli olarak kimlik doğrulaması olmayan, tek düğümlü geliştirme tarifleridir. Kafka PLAINTEXT, Pulsar ise tek düğüm modunu kullanır; bu yüzden hiçbirini uzaktan erişime açmayın. Kafka'nın olağan portu için `DB_PORT=9092 make db DB=kafka@4.3`, Pulsar'ın olağan portları için `DB_PORT=6650 PULSAR_WEB_PORT=8080 make db DB=pulsar@4.2` kullanın.
|
||||
|
||||
Redis 3.0.7 ve Redis 7.4.9 bilinçli olarak uyumluluğun iki ucunu kapsar. Redis 3, ACL'lerden, RESP3'ten, Stream'lerden ve pek çok modern komuttan öncedir; Redis 7 ise güncel protokolü ve komut kümesini kapsar. 6.2 ile 7.4'ü birlikte tutmak bu laboratuvara daha az uyumluluk kapsamı sağlardı.
|
||||
|
||||
Consul; `agent -dev -client=0.0.0.0 -ui` ile ACL'siz, tek düğümlü bir geliştirme agent'ı olarak çalışır. HTTP API'si ile arayüzü, gRPC ve DNS sunucu portları varsayılan olarak `10900`, `10901` ve `10902`'dir; DNS hem TCP hem UDP üzerinden yayımlanır. Olağan yerel portlar `8500`, `8502` ve `8600` ile eşleşmek için şu komutu kullanın:
|
||||
|
||||
```bash
|
||||
DB_PORT=8500 CONSUL_GRPC_PORT=8502 CONSUL_DNS_PORT=8600 make db DB=consul@2.0.2
|
||||
```
|
||||
|
||||
Elasticsearch 6.8; makine öğrenmesi özellikleri kapalı, kimlik doğrulaması olmayan tek düğümlü bir geliştirme kümesi olarak çalışır. HTTP API'si ve taşıma sunucu portları varsayılan olarak `11500` ve `11501`'dir; özgün portlar `9200` ve `9300` ile eşleşmek için şu komutu kullanın:
|
||||
|
||||
```bash
|
||||
DB_PORT=9200 ELASTICSEARCH_TRANSPORT_PORT=9300 make db DB=elasticsearch@6.8
|
||||
```
|
||||
|
||||
Depodaki her tarifin benzersiz bir varsayılan sunucu portu ayrımı vardır, bu yüzden sürümler ve ürünler aynı anda çalışabilir. `DB_PORT` değerini yalnızca yerel bir politika farklı bir sunucu portu gerektirdiğinde kullanın:
|
||||
|
||||
```bash
|
||||
DB_PORT=10150 make db DB=mysql@5.7
|
||||
make db DB=mysql@8.4
|
||||
```
|
||||
|
||||
## Bir ortamı başlatma ve doğrulama
|
||||
|
||||
Komutları depo kökünden çalıştırın. Kullanılabilir tarifleri listeleyin, ardından bir veritabanı ve sürüm seçin:
|
||||
|
||||
```bash
|
||||
make db
|
||||
make db-list
|
||||
make db DB=postgresql@17.4
|
||||
make db-verify DB=postgresql@17.4
|
||||
make db DB=rnacos@0.8
|
||||
make db DB=consul@2.0.2
|
||||
make db DB=elasticsearch@6.8
|
||||
```
|
||||
|
||||
Parametresiz `make db`, şu anda desteklenen tüm kopyala-yapıştır başlatma komutlarını ve isteğe bağlı parametreleri yazar. `DB=ürün@sürüm` ile Compose sağlık denetimini bekler ve DBX bağlantı alanlarını yazar. DBX'in desteklediği veritabanı türleri için ayrıca önceden doldurulmuş bir `dbx://connection/new` derin bağlantısı da yazar. Buna etcd, Consul, Nacos 2, Nacos 3 ve r-nacos dâhildir; Nacos tarifleri doğru bağlantı profilini otomatik seçer ve Nacos 3 ayrı konsol portu yerine API portunu kullanır. DBX Masaüstü'nde yeni bağlantı iletişim kutusunu açmak için bağlantıyı bir tarayıcıya kopyalayın ya da `open '<bağlantı>'` çalıştırın. İşletim sisteminin `dbx://` protokolünü kaydetmesi için DBX Masaüstü'nü kullanmadan önce bir kez kurup açın. Bağlantı bir veritabanı parolası ya da Consul ACL belirteci içerebilir, bu yüzden onu ortak terminal geçmişinde, günlüklerde ya da biletlerde saklamayın. Kafka ve Pulsar gibi uyumlu bir DBX bağlantı türü olmayan tarifler, derin bağlantı bulunmadığını açıkça bildirir. `db-verify` ayrıca tarifin duman testi komutunu veritabanı kapsayıcısı içinde çalıştırır ve beklenen çıktıyı denetler. Veritabanına özgü bir düzeltmeyi bildirmeden önce tercih edilen komut budur.
|
||||
|
||||
## Komutlar ve değişkenler
|
||||
|
||||
| Make hedefi | Amacı |
|
||||
| --- | --- |
|
||||
| `make db-list` | Veritabanı sürümlerini, kapsayıcıdan sunucuya port eşlemelerini, imajları ve desteklenen platformları listeler |
|
||||
| `make db DB=ürün@sürüm` | Ortamı oluşturur, hazır olmasını bekler ve bağlantı alanlarını yazar |
|
||||
| `make db-verify DB=ürün@sürüm` | Başlatır ve duman testlerini çalıştırır |
|
||||
| `make db-down DB=ürün@sürüm` | Veri birimini koruyarak ortamı durdurur |
|
||||
| `make db-reset DB=ürün@sürüm CONFIRM=1` | Ortamı ve veri birimini siler |
|
||||
| `make db-check` | Her tarifi ve Compose dosyasını doğrular |
|
||||
|
||||
`DB_BIND_ADDRESS` sunucu tarafındaki bağlanma adresini, `DB_PORT` sunucu tarafındaki portu, `DB_PASSWORD` ise varsayılan parolayı değiştirir. Örneğin:
|
||||
|
||||
```bash
|
||||
DB_PORT=13306 DB_PASSWORD=local-secret make db-verify DB=mysql@8.4
|
||||
```
|
||||
|
||||
Uzaktan erişim açıkça etkinleştirilmelidir:
|
||||
|
||||
```bash
|
||||
DB_BIND_ADDRESS=0.0.0.0 DB_PASSWORD=local-secret make db DB=mysql@8.4
|
||||
```
|
||||
|
||||
`db-reset` bilinçli olarak korumalıdır: `CONFIRM=1` ayarlanmadıkça adlandırılmış bir birimi kaldırmaz. Redis'te imaj başlangıç dizini geleneği yoktur; `init/README.md` dosyası, `verify` tarafından oluşturulan ve okunan duman testi anahtarını belgeler. Tanılama için gerektiğinde daha alt düzeydeki `info`, `status`, `logs` ve `shell` komutları `pnpm db:env -- <komut> <ürün> <sürüm>` biçiminde kullanılabilir.
|
||||
|
||||
## Sekme tamamlama
|
||||
|
||||
Depo; Make hedefleri ve `DB=ürün@sürüm` değerleri için dinamik tamamlama içerir. Geçerli tarif dizinlerini okuduğu için yeni eklenen sürümler, tamamlama betiklerini düzenlemeye gerek kalmadan görünür.
|
||||
|
||||
```bash
|
||||
# Bash
|
||||
source deploy/database/completion/dbx-make.bash
|
||||
|
||||
# Zsh
|
||||
autoload -Uz compinit && compinit
|
||||
source deploy/database/completion/_dbx-make.zsh
|
||||
|
||||
# PowerShell
|
||||
. .\deploy\database\completion\Dbx.Make.ps1
|
||||
```
|
||||
|
||||
Bu komutları yazdırmak için `make db-completion` çalıştırın. Uygun dosyayı kaynak olarak ekledikten sonra bir tarif seçmek için `make db DB=` ifadesinin ardından Tab tuşuna basın. Make hedeflerinin kendisi POSIX kabuk koşullarından kaçınır, bu yüzden PowerShell, Git Bash ya da WSL içinde GNU Make ile çalışırlar; Docker Desktop ile Node.js/pnpm kurulu olmalıdır.
|
||||
|
||||
## Tarif ekleme
|
||||
|
||||
`deploy/database/<ürün>/<sürüm>/` altına şunları içeren bir dizin ekleyin:
|
||||
|
||||
```text
|
||||
recipe.json
|
||||
compose.yaml
|
||||
init/
|
||||
```
|
||||
|
||||
`recipe.json`, DBX bağlantı alanlarını ve duman testi komut dizisini sağlar. Duman testleri için kabuk dizesi kullanmayın: komutlar argüman dizisi olarak çalıştırılır. Compose dosyaları bir imajı sabitlemeli, adlandırılmış bir birim ile sağlık denetimi kullanmalı, port bağlamalarını varsayılan olarak `${DB_BIND_ADDRESS:-127.0.0.1}` yapmalı ve `container_name` değerini `dbx-<ürün>-<sürüm>` olarak ayarlamalıdır.
|
||||
|
||||
Bitirmek için şunları çalıştırın:
|
||||
|
||||
```bash
|
||||
pnpm test:db-env
|
||||
make db-check
|
||||
```
|
||||
@@ -0,0 +1,114 @@
|
||||
---
|
||||
title: Veritabanı Desteği
|
||||
description: DBX bağlantı profillerini, sürücü çalışma zamanlarını, özel çalışma alanlarını ve yeteneğe bağlı gelişmiş özellikleri anlayın.
|
||||
---
|
||||
|
||||
Yeni bağlantı seçicisi 90+ veritabanı ve servis profili sunar. Bir profil; varsayılanları, form alanlarını, sunumu ve bir sürücü giriş noktasını tanımlar; ancak bağlanabilmek her gelişmiş özelliğin kullanılabildiği anlamına gelmez.
|
||||
|
||||
<Callout type="info">Güncel türler ve yetenekler için asıl kaynak, kurulu bağlantı seçicisi ve `crates/dbx-core/assets/database-drivers.manifest.json` dosyasıdır. Bu sayfa, kırılgan ve eksiksiz olma iddiasındaki bir matristen bilinçli olarak kaçınır.</Callout>
|
||||
|
||||
## Bağlantı Aileleri
|
||||
|
||||
### SQL ve Uyumlu Protokoller
|
||||
|
||||
- MySQL, PostgreSQL, SQLite, SQL Server, ClickHouse, Oracle ve Redshift gibi temel SQL motorları
|
||||
- MariaDB, TiDB, OceanBase, Doris, SelectDB, StarRocks, Manticore Search, GoldenDB ve Dolt gibi MySQL protokolü ya da sözdizimi profilleri
|
||||
- openGauss, GaussDB, KingbaseES, HighGo, Vastbase ve CockroachDB gibi PostgreSQL uyumlu profiller
|
||||
- DM, KWDB, YashanDB, GBase, Teradata, Vertica, Exasol, Firebird ve SAP HANA dâhil üreticiye özgü veritabanları
|
||||
- Snowflake, Trino, PrestoSQL, Hive, Spark, DB2, Informix, Databricks ve BigQuery gibi Agent/JDBC analitik motorları
|
||||
- Google Cloud Spanner gibi bulut tarafından yönetilen ilişkisel servisler (Agent/JDBC, GoogleSQL ve PostgreSQL lehçeleri)
|
||||
|
||||
Protokol uyumluluğu yalnızca bağlantıyı ve belirli lehçe davranışlarını kapsar. Sürümler, sistem katalogları, DDL, yetkiler ve yönetim API'leri farklılık gösterir; bu yüzden DBX, özellikleri yalnızca aile adına bakarak açmak yerine ayrı profiller ve yetenek geçersiz kılmaları kullanır.
|
||||
|
||||
### Dosya, Uç ve Barındırılan Veritabanları
|
||||
|
||||
- SQLite, DuckDB ve Microsoft Access
|
||||
- Cloudflare D1, Turso ve RQLite
|
||||
- H2 ve JDBC URL'leriyle erişilen yerel veritabanları
|
||||
|
||||
Masaüstü dosya yolları yerel bilgisayara aittir. Docker/Web yolları sunucu kapsayıcısına ya da bağlanmış ana makine depolamasına aittir; tarayıcının çalıştığı bilgisayardaki bir yol otomatik olarak eşlenmez.
|
||||
|
||||
### Özel Veri Modelleri ve Servisler
|
||||
|
||||
- Redis ve MongoDB
|
||||
- Elasticsearch, Easysearch, Meilisearch ve Manticore Search
|
||||
- Qdrant, Milvus, Weaviate ve ChromaDB
|
||||
- HBase
|
||||
- Pulsar, Kafka, RocketMQ ve RabbitMQ
|
||||
- etcd, ZooKeeper, Nacos ve Consul KV
|
||||
- InfluxDB, IoTDB, TDengine ve diğer zaman serisi ya da IoT profilleri
|
||||
|
||||
Bu bağlantılar; anahtar-değer, belge, arama, vektör, mesajlaşma veya yapılandırma merkezi çalışma alanlarını kullanır. Her ilişkisel ızgara ya da SQL kavramını devralmazlar. Bkz. [Özel Çalışma Alanları](/tr/docs/specialized-workspaces).
|
||||
|
||||
## Sürücü Çalışma Zamanları
|
||||
|
||||
| Çalışma zamanı | Açıklama | Tipik sınır |
|
||||
| --- | --- | --- |
|
||||
| Yerleşik yerel | DBX içine derlenmiş Rust sürücüsü | Kurulumdan hemen sonra kullanılabilir |
|
||||
| Yerel Agent / yardımcı bileşen | DBX tarafından yönetilen Go, Rust ya da dış işlem | Platforma özgü dosyalar gerektirir; DuckDB, Oracle, KingbaseES, XuguDB, RabbitMQ ve benzeri yollar ayrı çalışma zamanları kullanabilir |
|
||||
| JDBC Agent | Java Agent ve üreticinin JDBC sürücüsü | Bir JRE, Agent ve yasal olarak edinilmiş üretici JAR'ı gerektirir |
|
||||
| JDBC eklentisi | İsteğe bağlı genel JDBC uzantısı | Bilinmeyen motorlar genel JDBC yetenekleriyle çalışır |
|
||||
|
||||
Kurulum, yükseltme, çevrimdışı paketler ve çalışma zamanı izleme için [Sürücü Yönetimi](/tr/docs/driver-management), özel JDBC için [JDBC Eklentisi](/tr/docs/plugins) sayfasına bakın.
|
||||
|
||||
## Yetenek Düzeyleri
|
||||
|
||||
Sürücü bildirimi; temel bağlantıdan denetimli işlemlere uzanan yetenek düzeylerini, motor başına geçersiz kılmalarla birlikte kullanır:
|
||||
|
||||
| Düzey | Anlamı |
|
||||
| --- | --- |
|
||||
| Bağlan | Bağlantı kurma ve profilin desteklediği temel sorguları çalıştırma |
|
||||
| Gözat | Veritabanlarına, şemalara, tablolara veya özel nesnelere gözatma |
|
||||
| Anla | Salt okunur kaynak, arama ve ilişki iş akışlarını ekler |
|
||||
| İşlet | Tablo verisi düzenleme gibi denetimli yazmaları ekler |
|
||||
|
||||
Bunun ardından tek tek yetenekler şu özellikleri denetler:
|
||||
|
||||
- Şema araması ve ER diyagramları
|
||||
- Tablo verisi ve tablo yapısı düzenleme
|
||||
- Tablo içe aktarma ve veri aktarımı
|
||||
- SQL dosyası çalıştırma
|
||||
- Alan soy ağacı ve sorgu yürütme planı
|
||||
- Veritabanı oluşturma, kullanıcı yönetimi ve sürücü yönetimi
|
||||
|
||||
Bu yüzden menülerde neyin bulunduğu, durağan bir veritabanı adı listesinden daha anlamlıdır. Bir işlem görünmüyorsa DBX sürümünü, veritabanı profilini, çalışma zamanı modunu ve kurulu bileşenleri denetleyin.
|
||||
|
||||
## Özellik Sınırları
|
||||
|
||||
### SQL Dosyaları ve İlişkisel Araçlar
|
||||
|
||||
Redis, MongoDB, arama, vektör, HBase, yapılandırma merkezi ve mesaj kuyruğu çalışma alanları ilişkisel SQL dosyası çalıştırmayı kullanmaz. Bazı SQL motorları; yapı düzenleme, içe aktarma veya aktarım olmadan sorgu ve gözatma iş akışlarını destekler.
|
||||
|
||||
### İçe Aktarma ve Aktarım
|
||||
|
||||
[Tablo İçe Aktarma](/tr/docs/table-import) ve [Veri Aktarımı](/tr/docs/data-transfer) bağlantıları yeteneğe göre filtreler. Motorlar arası yollar ayrıca tür eşlemesine, anahtarlara, kimlik sütunlarına, şemalara ve hedefteki DDL desteğine bağlıdır.
|
||||
|
||||
### Yedekleme ve Dışa Aktarma
|
||||
|
||||
- [Veritabanı Dışa Aktarma](/tr/docs/database-export), yeteneğe dayalı mantıksal bir SQL dışa aktarımıdır
|
||||
- [Veritabanı Yedekleme](/tr/docs/database-backup) şu anda yalnızca Masaüstü'nde tutarlı MySQL ve PostgreSQL yedeklerini zamanlar
|
||||
- Bulut Eşitleme ve yapılandırma dışa aktarma, iş veritabanı içeriğini değil DBX ayarlarını taşır
|
||||
|
||||
### Masaüstü ve Docker/Web
|
||||
|
||||
İki çalışma zamanı da Rust çekirdeğinin sorgu, meta veri ve güvenlik politikasının çoğunu paylaşır, ancak özellik olarak birebir aynı değildir. Yerel SQL klasörleri, sistem dosyası seçimi, Derin Bağlantılar, yerel CLI Agent'ları ve zamanlanmış veritabanı yedeklemesi yalnızca Masaüstü'ndedir. Web'de dosyalar, sürücüler ve Agent'lar sunucu veri dizininde bulunur.
|
||||
|
||||
## Varsayılan Portlar ve Bağlantı URL'leri
|
||||
|
||||
Profiller; MySQL `3306`, PostgreSQL `5432`, Redis `6379`, MongoDB `27017`, SQL Server `1433`, Oracle `1521`, Elasticsearch `9200`, Meilisearch `7700` ve RabbitMQ AMQP `5672` gibi yaygın varsayılanları önceden doldurur. Bunlar varsayılandır, zorunluluk değildir.
|
||||
|
||||
RabbitMQ gibi servisler ayrı iş ve yönetim portları sunabilir. Özel bir AMQP portundan Yönetim API portu çıkarsanmamalıdır. SSH tünelleri, HTTP proxy'leri, TLS SNI ve fiziksel bağlantı hedefleri de bağımsız olarak doğrulanmalıdır.
|
||||
|
||||
DBX pek çok yaygın DSN ve URL biçimini ayrıştırır, ancak parametreler sürüme ve bulut sağlayıcısına göre değişir. Başarılı bir bağlantı testinden sonra da gerçek veritabanını, şemayı, SSL'i ve yetki kapsamını doğrulayın.
|
||||
|
||||
## Yerel Test Ortamları
|
||||
|
||||
Depo; ClickHouse, MariaDB, MongoDB, MySQL, PostgreSQL ve Redis için sürümü sabitlenmiş Docker Compose laboratuvarları içerir. Bağlantı, sürücü ve gerileme testleri için [Veritabanı Test Laboratuvarı](/tr/docs/database-lab) sayfasını kullanın.
|
||||
|
||||
## İlgili Sayfalar
|
||||
|
||||
<Cards>
|
||||
<Card title="Özel Çalışma Alanları" href="/tr/docs/specialized-workspaces">İlişkisel olmayan, arama, vektör, mesajlaşma ve yapılandırma merkezi arayüzlerini inceleyin.</Card>
|
||||
<Card title="Sürücü Yönetimi" href="/tr/docs/driver-management">Yerel Agent'ları, yardımcı bileşenleri, JDBC Agent'larını ve JRE'leri kurun ve tanılayın.</Card>
|
||||
<Card title="Üretim Güvenliği" href="/tr/docs/production-safety">Veritabanı yetkilerini, salt okunur korumayı, üretim korumasını ve otomasyon sınırlarını öğrenin.</Card>
|
||||
</Cards>
|
||||
@@ -0,0 +1,113 @@
|
||||
---
|
||||
title: Sürücü Yönetimi
|
||||
description: Yerleşik, yerel Agent ve JDBC Agent sürücülerini yönetin, JRE sürümlerini yapılandırın ve sürücü güncellemelerini ele alın.
|
||||
---
|
||||
|
||||
DBX karma bir sürücü mimarisi kullanır: yerleşik Rust sürücüleri, bağımsız yerel Agent'lar ve Java/JDBC Agent'ları.
|
||||
|
||||
## Sürücü Mimarisi
|
||||
|
||||
| Sürücü Türü | Nasıl Çalışır | Ne İçin Uygundur |
|
||||
| ----------------- | ------------------------------------ | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
||||
| Yerel (yerleşik) | DBX içine derlenmiş Rust sürücüleri | MySQL, PostgreSQL, SQLite, SQL Server, Redis, MongoDB, ClickHouse ve daha fazlası |
|
||||
| Yerel Agent / dış sürücü | DBX tarafından yönetilen bağımsız Go/Rust işlemi veya yardımcı bileşen | Oracle, KingbaseES, XuguDB, DuckDB ve RabbitMQ gibi ayrı bir çalışma zamanı gerektiren bağlantılar |
|
||||
| JDBC Agent | DBX tarafından yönetilen Java alt işlemi | JDBC gerektiren veritabanları: GaussDB, openGauss, DM, HighGo, Vastbase, UXDB, Trino, Hive, DB2, Informix, Neo4j, TDengine, YashanDB, GoldenDB, Kylin, SunDB ve daha fazlası |
|
||||
|
||||
<Callout type="info">Yerleşik sürücüler hemen çalışır. Yerel Agent'lar ve yardımcı bileşenler platforma özgü dosyalar ister; JDBC Agent'ları ayrıca bir JRE gerektirir. Bağlantı iletişim kutusu eksik bileşenleri sorar, ancak otomatik kurulum ağ erişimine, platforma, lisanslamaya ve geçerli ayarlara bağlıdır.</Callout>
|
||||
|
||||
## Sürücü Deposu
|
||||
|
||||
Sürücü Deposu sekmesi kullanılabilir tüm agent sürücülerini ve durumlarını gösterir:
|
||||
|
||||
- **Kurulu sürücüler**: sürüm numarası, boyut ve güncelleme durumu
|
||||
- **Kullanılabilir sürücüler**: tek tıklamayla kurabileceğiniz sürücüler
|
||||
- **Güncelleme rozetleri**: kayıtta daha yeni bir sürüm olduğunda
|
||||
|
||||
Sürücü Deposu'nu **Ayarlar → Sürücüler** bölümünden açın ya da agent sürücüsü gerektiren bir bağlantı oluştururken görünen sürücü ipucuna tıklayın.
|
||||
|
||||
## Sürücü Kurma
|
||||
|
||||
<Steps>
|
||||
<Step>
|
||||
### Sürücü Deposu'nu Açın
|
||||
|
||||
**Ayarlar → Sürücüler** bölümüne gidin ya da bağlantı iletişim kutusundaki sürücü kurulum ipucuna tıklayın.
|
||||
</Step>
|
||||
<Step>
|
||||
### Bir Sürücü Seçin
|
||||
|
||||
İhtiyacınız olan veritabanı sürücüsünü bulun. Her girdi, desteklenen veritabanını ve sürücü sürümünü gösterir.
|
||||
</Step>
|
||||
<Step>
|
||||
### Kur'a Tıklayın
|
||||
|
||||
DBX; yerel Agent çalıştırılabilirini ya da JDBC Agent JAR dosyasını ve gereken çalışma zamanını indirir. İndirme sırasında ilerleme gösterilir.
|
||||
</Step>
|
||||
<Step>
|
||||
### Bağlantı Oluşturun
|
||||
|
||||
Bağlantı iletişim kutusuna dönün. Sürücü artık kullanıma hazırdır.
|
||||
</Step>
|
||||
</Steps>
|
||||
|
||||
## JRE Yönetimi
|
||||
|
||||
JDBC agent sürücüleri bir Java Çalışma Zamanı Ortamı gerektirir. DBX JRE yönetimi içerir:
|
||||
|
||||
- **Sistem JRE'si**: DBX, sisteminizde kurulu mevcut bir Java kurulumunu kullanabilir
|
||||
- **Yönetilen JRE**: DBX kendi JRE'sini indirip yönetebilir; sistem Java'nızdan yalıtılmıştır
|
||||
- **Çoklu JRE desteği**: Gerektiğinde farklı sürücüler farklı JRE sürümlerini hedefleyebilir
|
||||
- **Yeniden kurma**: Yönetilen JRE bozulursa Sürücü Deposu'ndan yeniden kurun
|
||||
|
||||
## Sürücü Güncellemeleri
|
||||
|
||||
DBX sürücü güncellemelerini düzenli olarak denetler:
|
||||
|
||||
- Daha yeni sürümler olduğunda Sürücü Deposu sekmesinde güncelleme rozetleri görünür
|
||||
- Kurulu tüm sürücüleri aynı anda güncellemek için **Tüm Sürücüleri Yükselt**'e tıklayın
|
||||
- Sürücüler tek tek, depodaki kendi girdilerinden yükseltilebilir
|
||||
|
||||
## Çalışma Zamanı İzleme
|
||||
|
||||
Sürücü Yöneticisi; etkin dış sürücüleri ve Agent'ları protokol modu, etkin oturumlar, PID, bellek, CPU, çalışma süresi ve son hata bilgisiyle özetler. Desteklenen çalışma zamanları buradan durdurulabilir veya yeniden başlatılabilir. Ortak bir çalışma zamanı birden çok bağlantıya hizmet ediyor olabilir, bu yüzden önce etkin oturumları inceleyin.
|
||||
|
||||
RabbitMQ gibi mesaj kuyruğu Agent'ları hem bir iş protokolü hem de bir yönetim API'si kullanabilir. Özel AMQP/yönetim portları, SSH tünelleri ve TLS hedefleri birbirinden bağımsız yapılandırılmalıdır; bir port diğerinden çıkarsanmamalıdır.
|
||||
|
||||
## Çevrimdışı Sürücü İçe Aktarma
|
||||
|
||||
İnternet erişimi olmayan ortamlar için DBX çevrimdışı sürücü kurulumunu destekler:
|
||||
|
||||
1. Başka bir makinede, hedef işletim sistemi ve CPU mimarisine uyan DBX çevrimdışı sürücü ZIP dosyasını indirin
|
||||
2. Dosyayı çevrimdışı makineye taşıyın
|
||||
3. Sürücü Deposu'nda **ZIP'ten İçe Aktar** ile sürücü paketini kurun
|
||||
|
||||
Bu; internete kapalı ağlar, katı güvenlik duvarı ortamları ya da kurumlarda önceden onaylanmış sürücü sürümleri için kullanışlıdır.
|
||||
|
||||
Her agent, **Çevrimdışı paketi içe aktar** ile kurulabilen tek sürücülük bir ZIP sunar. Java agent paketleri platformdan bağımsızdır ve JRE'yi yinelemez; KingbaseES, Oracle ve Xugu gibi yerel agent'lar ise her işletim sistemi ve CPU mimarisi için ayrı paket sunar.
|
||||
|
||||
Hedef makinede bir Java agent'ının gerektirdiği yönetilen JRE yoksa, uygun JRE paketini bir kez içe aktarın ya da tüm sürücüleri ve JRE'yi içeren tam çevrimdışı paketi kullanın.
|
||||
|
||||
### Windows'ta KingbaseES İçe Aktarma
|
||||
|
||||
Windows x64 için `dbx-agent-kingbase-<sürüm>-windows-x64.zip`, Windows ARM64 için `dbx-agent-kingbase-<sürüm>-windows-aarch64.zip` dosyasını indirin, ardından Sürücü Yöneticisi'nde **Çevrimdışı paketi içe aktar**'ı seçin. Linux ya da macOS paketini içe aktarmayın.
|
||||
|
||||
ZIP, o platform için sürüm meta verisini ve yerel agent'ı içerir. DBX bunu `%USERPROFILE%\.dbx\agents\drivers\kingbase\agent.exe` olarak kurar; kullanıcının çalıştırılabilir dosyanın engelini kaldırması ya da elle kopyalaması gerekmez.
|
||||
|
||||
### JDBC eklentisini çevrimdışı içe aktarma
|
||||
|
||||
Genel JDBC bağlantıları (özel JDBC URL + içe aktarılmış sürücü JAR'ı) ayrı bir **DBX JDBC eklentisi** üzerinden çalışır; bu eklenti kendi `dbx-jdbc-plugin-*.zip` dosyası olarak yayımlanır ve veritabanı başına Agent ZIP dosyalarına gömülmez. Eklentiyi **JDBC Sürücüleri** sekmesindeki **Yerel kurulum** ile kurun (Yerleşik Sürücüler'deki, Agent ZIP dosyaları için olan **Çevrimdışı paketi içe aktar** ile değil).
|
||||
|
||||
Asıl sürücü JAR dosyasını (örneğin bir Oracle `ojdbc*.jar`) içe aktarmak her zaman yereldir; bu eklenti paketini ya da herhangi bir ağ erişimini gerektirmez — JDBC eklentisinin kurulu olup olmadığından bağımsız olarak aynı sekmedeki **JAR İçe Aktar**'ı kullanın.
|
||||
|
||||
## Eklenti Güncellemeleri
|
||||
|
||||
[JDBC Eklentisi](/tr/docs/plugins) tarafından desteklenen veritabanları için DBX, yeni bir eklenti sürümü çıktığında güncelleme bildirimi gösterir. Eklenti güncellemeleri yerleşik agent sürücüleriyle aynı kurulum akışını izler.
|
||||
|
||||
## Sorun Giderme
|
||||
|
||||
| Sorun | Çözüm |
|
||||
| ------------------------------------------ | ------------------------------------------------------------------------------------------- |
|
||||
| Sürücü indirmesi başarısız oluyor | Ağ bağlantısını ve güvenlik duvarı kurallarını denetleyin. Çevrimdışı içe aktarma yöntemini deneyin. |
|
||||
| Agent başlamıyor | Sürücü Deposu'nda JRE kurulumunu doğrulayın. Gerekirse yönetilen JRE'yi yeniden kurun. |
|
||||
| Sürücü kurulumundan sonra bağlantı testi başarısız oluyor | JDBC URL biçiminin sürücünün beklediği biçime uyduğunu doğrulayın. SSH/proxy ayarlarını denetleyin. |
|
||||
| Yanlış sürücü sürümü | Geçerli sürücüyü kaldırın ve depodan doğru sürümü kurun. |
|
||||
@@ -0,0 +1,33 @@
|
||||
---
|
||||
title: SSS
|
||||
description: DBX hakkında sıkça sorulan sorular; bağlantı verisinin nerede saklandığı ve veri dizininin nasıl özelleştirileceği dâhil.
|
||||
---
|
||||
|
||||
<Callout type="info">DBX Masaüstü hakkında sık sorulan sorular. Bu sayfa veri saklama ve veri dizini ile başlıyor; zamanla yeni başlıklar eklenecek.</Callout>
|
||||
|
||||
## Veri ve Yedekleme
|
||||
|
||||
<Accordions>
|
||||
<Accordion title="Bağlantı yapılandırmam nerede saklanıyor?">
|
||||
DBX Masaüstü; bağlantıları, kayıtlı kimlik bilgilerini, SSH tünel profillerini, sorgu geçmişini ve uygulama ayarlarını DBX veri dizinindeki tek bir SQLite veritabanı dosyasında (`dbx.db`) saklar:
|
||||
|
||||
- **Windows (yükleyici):** `C:\Users\<kullanıcı>\AppData\Roaming\com.dbx.app\dbx.db`
|
||||
- **Windows (taşınabilir ZIP):** `<DBX.exe klasörü>\data\dbx.db`
|
||||
- **macOS:** `~/Library/Application Support/com.dbx.app/dbx.db`
|
||||
- **Linux:** `~/.local/share/com.dbx.app/dbx.db`
|
||||
|
||||
SSH sunucu anahtarları aynı dizindeki `known_hosts` dosyasında tutulur, bu yüzden DBX `~/.ssh` dizinine hiç dokunmaz. Yazma etkinliğine bağlı olarak veritabanının yanında `dbx.db-wal` ve `dbx.db-shm` denetim noktası dosyaları bulunabilir.
|
||||
|
||||
Eski DBX sürümleri bağlantıları `connections.json` ve `secrets.json` dosyalarında tutuyordu. Bu dosyalar açılışta otomatik olarak `dbx.db` içine taşınır ve özgün dosyalar `*.bak` olarak yeniden adlandırılır.
|
||||
|
||||
Bağlantıları başka bir makineye taşımak için dosyaları kopyalamak yerine şifreli [Yapılandırma Dışa/İçe Aktarma](/tr/docs/config-export) özelliğini kullanın. Elle yedek almak için önce DBX'ten çıkın, ardından veri dizininin tamamını ya da en azından `dbx.db` dosyasını `-wal` ve `-shm` dosyalarıyla birlikte kopyalayın.
|
||||
</Accordion>
|
||||
<Accordion title="Veriyi çalıştırılabilir dosyanın yanında tutabilir veya özel bir veri dizini kullanabilir miyim?">
|
||||
Evet. Desteklenen iki yol var:
|
||||
|
||||
- **Windows taşınabilir ZIP:** sürüm sayfasındaki `DBX_<sürüm>_<mimari>-portable.zip` dosyası bir `portable.dbx` işaret dosyasıyla gelir. İstediğiniz yere çıkarıp çalıştırın; tüm veriler `DBX.exe` yanındaki `data` klasöründe saklanır. İlk açılışta taşınabilir klasör hâlâ boşsa ve `AppData` içinde eski veri varsa, bu veri bir kez otomatik olarak içe aktarılır.
|
||||
- **`DBX_DATA_DIR` ortam değişkeni:** her platformda, hem yükleyici hem taşınabilir sürümlerde çalışır ve en yüksek önceliğe sahiptir. Herhangi bir klasörü gösterebilirsiniz. Yeni dizin boş başlar, bu yüzden Yapılandırma Dışa/İçe Aktarma ile taşıyın ya da DBX çalışmıyorken `dbx.db` dosyasını kopyalayın.
|
||||
|
||||
`portable.dbx` işaret dosyası yalnızca Windows'ta çalışır ve çalıştırılabilir dosyanın yanında `uninstall.exe` varsa (kurulu sürümler) yoksayılır. Veri dizini için uygulama içi bir ayar yoktur.
|
||||
</Accordion>
|
||||
</Accordions>
|
||||
@@ -0,0 +1,91 @@
|
||||
---
|
||||
title: Alan Soy Ağacı
|
||||
description: Yabancı anahtarlardan, görünüm tanımlarından, sorgu geçmişinden ve eşleşen adlardan yukarı akış, aşağı akış ve olası sütun etkisini çözümleyin.
|
||||
---
|
||||
|
||||
Alan soy ağacı; bir sütunun nereden geldiğini, nerede kullanıldığını ve bir değişikliğin neyi etkileyebileceğini yanıtlamaya yardımcı olur. DBX, veritabanı meta verisini yerel sorgu geçmişiyle birleştirir ve her ad eşleşmesini doğrulanmış bir bağımlılık saymak yerine kanıt gücünü etiketler.
|
||||
|
||||
## Soy Ağacını Açma
|
||||
|
||||
Alan soy ağacını bir sütun düğümünden, tablo yapısından ya da ilgili bağlam menüsünden açın. Etkin sütun hedef olur ve sonuçlar ilgili tabloları, sütunları, görünümleri veya geçmiş SQL'i listeler.
|
||||
|
||||
## İlişki Kaynakları ve Güven Düzeyi
|
||||
|
||||
| Kaynak | Varsayılan güven | Anlamı |
|
||||
| --- | --- | --- |
|
||||
| Yabancı anahtar | Kesin | Veritabanı, geçerli sütun ile hedef sütun arasında bir kısıt bildiriyor |
|
||||
| Görünüm tanımı | Olası veya muhtemel | Görünüm kaynağı hem hedef tabloya hem de sütuna başvuruyorsa güven daha yüksektir |
|
||||
| Sorgu geçmişi | Olası veya muhtemel | Geçmiş SQL'de hem tablo hem sütun varsa kanıt daha güçlüdür |
|
||||
| Aynı adlı sütun | Muhtemel | Yalnızca ada dayalı çıkarım; iş bağlamında doğrulanmalıdır |
|
||||
|
||||
Arayüz **Kesin**, **Olası** ve **Muhtemel** ayrımını yapar. Önce yabancı anahtarlara ve açık kaynak başvurularına odaklanmak için düşük güvenli sonuçları filtreleyin.
|
||||
|
||||
## Arama ve Filtreler
|
||||
|
||||
- Tablo, sütun, görünüm veya SQL parçacığı arayın
|
||||
- Güven düzeyine göre filtreleyin
|
||||
- Gösterilen ve toplam ilişki sayısını görün
|
||||
- Tablo veya sütun adlarını kopyalayın
|
||||
- Hedef tablonun verisini ya da yapısını açın
|
||||
- İlgili nesneyi ağaçta gösterin
|
||||
|
||||
Soy ağacı; yabancı anahtarları, görünüm kaynağını ve ilgili meta veriyi veritabanının yeteneğine göre yükler. Büyük şemalarda ilk çözümleme zaman alabilir.
|
||||
|
||||
## Kanıt Olarak Sorgu Geçmişi
|
||||
|
||||
DBX, çalıştırılmış sorguları destekleyici kanıt olarak kullanır:
|
||||
|
||||
- Bir `JOIN` içinde birlikte görünen alanlar
|
||||
- `WHERE`, `SELECT` ya da ifadelerde başvurulan hedef sütunlar
|
||||
- Eşleşen bir alanı kullanan geçmiş düzeltme veya raporlama SQL'i
|
||||
|
||||
Geçmiş, yalnızca DBX'te çalıştırılan ya da kaydedilen SQL'i temsil eder. Tüm uygulama kodunu, ETL'i, BI'ı veya diğer istemcileri kapsamaz.
|
||||
|
||||
<Callout type="warn">Sorgu geçmişi hassas tablo adları, koşullar ve sabit değerler içerebilir. Soy ağacını göstermeden, günlükleri dışa aktarmadan ya da ekran görüntüsü paylaşmadan önce gizliliği gözden geçirin.</Callout>
|
||||
|
||||
## Görünüm ve Kaynak Çözümlemesi
|
||||
|
||||
Görünüm ilişkileri, veritabanının döndürdüğü tanımları kullanır. Şu durumlarda güven düşebilir:
|
||||
|
||||
- Dinamik SQL veya üretilmiş yordam metni
|
||||
- Açık şema olmadan belirsiz tablolar ya da sütunlar
|
||||
- `SELECT *`, karmaşık alt sorgular veya üreticiye özgü uzantılar
|
||||
- Eksiksiz görünüm kaynağı döndürmeyen veritabanları
|
||||
|
||||
Elle doğrulamak için bir görünüm sonucunu açın ve kaynağı [Nesne Gezgini](/tr/docs/object-browser) içinde inceleyin.
|
||||
|
||||
## İş Akışları
|
||||
|
||||
### Bir Sütunu Değiştirmeden Önce
|
||||
|
||||
1. Doğrulanmış yabancı anahtar ilişkilerini inceleyin
|
||||
2. Olası görünümleri ve geçmiş SQL'i gözden geçirin
|
||||
3. Muhtemel aynı adlı ilişkileri iş bağlamıyla doğrulayın
|
||||
4. Uygulama depolarında, ETL ve BI varlıklarında aramaya devam edin
|
||||
5. Hedef ortamdaki değişiklikleri incelemek için [Şema Karşılaştırma](/tr/docs/schema-diff) özelliğini kullanın
|
||||
|
||||
### Tanımadığınız Bir Veritabanını Anlamak
|
||||
|
||||
Birincil anahtarlar, iş tanımlayıcıları, kullanıcı kimlikleri veya zaman sütunlarıyla başlayın ve ilgili tablolar ile görünümleri izleyin. Sütun açıklamaları ve nesne kaynağı, genellikle yalnızca ad eşleşmesinden daha güçlü kanıttır.
|
||||
|
||||
## Destek ve Sınırlar
|
||||
|
||||
- Soy ağacı; yabancı anahtar, görünüm kaynağı ya da ayrıştırılabilir sorgu geçmişi gerektirir, bu yüzden kapsam veritabanına göre değişir
|
||||
- Bildirilmiş yabancı anahtar yoksa DBX yalnızca görünüm, geçmiş ve aynı ad ipuçları sunabilir
|
||||
- Sonuçlar güçlü tutarlılıkta bir veri yönetişimi grafiği değildir ve her uygulamayı, mesaj akışını, ETL ya da BI sistemini içermez
|
||||
- Geçmişi silmek veya yerel veriyi temizlemek sorgu geçmişi kaynağını daraltır
|
||||
- Güncel motor kapsamı için [Veritabanı Desteği](/tr/docs/databases) matrisine bakın
|
||||
|
||||
<Callout type="info">Önemli şema değişiklikleri yine de veritabanı kısıtları, kaynak incelemesi, uygulama kodu araması ve iş sahibinin onayını gerektirir. Soy ağacı araştırmayı daraltır; etki analizinin yerini almaz.</Callout>
|
||||
|
||||
<Cards>
|
||||
<Card title="Şema gezgini" href="/tr/docs/schema-browser">
|
||||
Sütunları, yabancı anahtarları, açıklamaları ve nesne hiyerarşisini inceleyin.
|
||||
</Card>
|
||||
<Card title="Nesne kaynağı" href="/tr/docs/object-browser">
|
||||
Görünüm, yordam, işlev ve tetikleyici tanımlarını inceleyin.
|
||||
</Card>
|
||||
<Card title="Şema karşılaştırma" href="/tr/docs/schema-diff">
|
||||
Ortam farklarını ve dağıtım betiklerini inceleyin.
|
||||
</Card>
|
||||
</Cards>
|
||||
@@ -0,0 +1,275 @@
|
||||
---
|
||||
title: Hızlı Başlangıç
|
||||
description: DBX'i kurun, ilk bağlantınızı oluşturun ve masaüstü, Docker ile kaynaktan çalıştırma akışlarını öğrenin.
|
||||
---
|
||||
|
||||
Bu kılavuz üç şeyi kapsar:
|
||||
|
||||
1. DBX'i kurmak ya da Docker sürümünü başlatmak
|
||||
2. İlk veritabanı bağlantınızı oluşturmak ve test etmek
|
||||
3. Katkı vermek ya da yerelde hata ayıklamak istediğinizde DBX'i kaynaktan çalıştırmak
|
||||
|
||||
## Bir Kurulum Yöntemi Seçin
|
||||
|
||||
<Tabs groupId="platform" items={['macOS', 'Windows', 'Linux', 'Docker']}>
|
||||
<Tab value="macOS">
|
||||
Homebrew ile kurun:
|
||||
|
||||
```bash
|
||||
brew install --cask dbx
|
||||
```
|
||||
|
||||
Daha sonra şununla güncelleyin:
|
||||
|
||||
```bash
|
||||
brew upgrade --cask dbx
|
||||
```
|
||||
|
||||
Ayrıca [GitHub Releases](https://github.com/t8y2/dbx/releases) sayfasından bir `.dmg` yükleyicisi indirebilirsiniz.
|
||||
|
||||
</Tab>
|
||||
<Tab value="Windows">
|
||||
Scoop ile kurun:
|
||||
|
||||
```bash
|
||||
scoop bucket add dbx https://github.com/t8y2/scoop-bucket
|
||||
scoop install dbx
|
||||
```
|
||||
|
||||
Daha sonra şununla güncelleyin:
|
||||
|
||||
```bash
|
||||
scoop update dbx
|
||||
```
|
||||
|
||||
Ayrıca [GitHub Releases](https://github.com/t8y2/dbx/releases) sayfasından bir `.msi` yükleyicisi indirebilirsiniz.
|
||||
|
||||
</Tab>
|
||||
<Tab value="Linux">
|
||||
[FlatPark](https://flatpark.org/apps/com.dbxio.dbx/) üzerinden Flatpak ile kurun (her dağıtımda çalışır):
|
||||
|
||||
```bash
|
||||
flatpak remote-add --if-not-exists flatpark https://dl.flatpark.org/flatpark.flatpakrepo
|
||||
flatpak install flatpark com.dbxio.dbx
|
||||
```
|
||||
|
||||
Daha sonra şununla güncelleyin:
|
||||
|
||||
```bash
|
||||
flatpak update com.dbxio.dbx
|
||||
```
|
||||
|
||||
Ayrıca [GitHub Releases](https://github.com/t8y2/dbx/releases) sayfasından bir paket indirebilirsiniz:
|
||||
|
||||
| Biçim | Kullanım durumu |
|
||||
|---|---|
|
||||
| `.deb` | Debian, Ubuntu ve uyumlu dağıtımlar |
|
||||
| `.rpm` | Fedora, CentOS, SUSE ve uyumlu dağıtımlar |
|
||||
| `.AppImage` | Taşınabilir Linux masaüstü kullanımı |
|
||||
|
||||
`.AppImage` için dosyayı ilk çalıştırmadan önce çalıştırılabilir yapın:
|
||||
|
||||
```bash
|
||||
chmod +x DBX*.AppImage
|
||||
```
|
||||
|
||||
</Tab>
|
||||
<Tab value="Docker">
|
||||
Docker; DBX'i bir sunucuda kendiniz barındırmak ve tarayıcıdan açmak içindir:
|
||||
|
||||
```bash
|
||||
docker run -d \
|
||||
--pull=always \
|
||||
--name dbx \
|
||||
-p 4224:4224 \
|
||||
-v dbx-data:/app/data \
|
||||
t8y2/dbx:latest
|
||||
```
|
||||
|
||||
`latest` etiketi geçerli sürümü indirir. Bu, platformlar arası `dbx-data` adlı birimi kullanır. Çin'de daha hızlı indirme için `docker.cnb.cool/dbxio.com/dbx:latest` kullanın.
|
||||
|
||||
### Ortam Değişkenleri
|
||||
|
||||
Docker imajı şu başlangıç değişkenlerini destekler. Birini `-e AD=değer` ile ayarlayın; örneğin üretim dağıtımları `-e DBX_PASSWORD=parolaniz` eklemelidir:
|
||||
|
||||
| Değişken | Varsayılan | Amacı |
|
||||
| --- | --- | --- |
|
||||
| `DBX_PASSWORD` | Ayarlanmamış | Web giriş parolası; üretim için önerilir |
|
||||
| `DBX_DISABLE_PASSWORD` | `false` | Giriş korumasını kapatmak için `true` ya da `1` yapın |
|
||||
| `DBX_DATA_DIR` | `/app/data` | Kalıcı veri dizini |
|
||||
| `DBX_PORT` | `4224` | Kapsayıcı dinleme portu |
|
||||
| `DBX_PUBLIC_BASE_PATH` | `/` | `/dbx` gibi bir alt yol altında dağıtım |
|
||||
|
||||
Ardından `http://localhost:4224` adresini açın.
|
||||
|
||||
`deploy/docker-compose.yml` geçerli çalışma kopyasını derler. Yayımlanmış bir imajı dağıtmak için `deploy/docker-compose.release.yml` kullanın:
|
||||
|
||||
```bash
|
||||
docker compose -f deploy/docker-compose.release.yml up -d
|
||||
```
|
||||
|
||||
```yaml
|
||||
services:
|
||||
dbx:
|
||||
image: t8y2/dbx:latest
|
||||
# For faster pulls in China, use the CNB image instead:
|
||||
# image: docker.cnb.cool/dbxio.com/dbx:latest
|
||||
pull_policy: always
|
||||
ports:
|
||||
- "4224:4224"
|
||||
volumes:
|
||||
- dbx-data:/app/data
|
||||
restart: unless-stopped
|
||||
|
||||
volumes:
|
||||
dbx-data:
|
||||
```
|
||||
|
||||
</Tab>
|
||||
</Tabs>
|
||||
|
||||
## Masaüstü mü Docker mı
|
||||
|
||||
| Mod | Ne için uygundur | Depolama | Önemli sınır |
|
||||
| --- | --- | --- | --- |
|
||||
| Masaüstü | Günlük yerel çalışma, yerel veritabanı dosyaları, eksiksiz tezgâh | Yerel uygulama veri dizini | Yerel SQL dosya ağacını/kitaplığını, masaüstü derin bağlantılarını ve işletim sistemi dosya tümleştirmesini destekler |
|
||||
| Docker / Web | Bir sunucuda kendi barındırmanız ve uzak tarayıcı erişimi | Docker birimi ya da sunucu veri dizini | Yollar sunucuya aittir; bazı yerel dosya ve masaüstü tümleştirmeleri kullanılamaz |
|
||||
|
||||
Masaüstü ve Web veritabanı iş akışlarının çoğunu ve Rust çekirdeğini paylaşır, ancak yerel tümleştirmeleri birebir aynı değildir. SQLite, DuckDB, Access, dış SQL dosyaları ya da yerel dizinler için dosyanın hangi makineye ait olduğunu doğrulayın; Docker normalde dizinin kapsayıcıya bağlanmasını gerektirir.
|
||||
|
||||
<Callout type="info">Bir tabloyu açan ya da sonuçları masaüstü arayüzünde gösteren MCP araçları, DBX Masaüstü'nün çalışmasını gerektirir. Yalnızca sorgu yapan MCP araçları yerel DBX veri dizinini doğrudan okuyabilir ya da bir DBX Web/Docker arka ucuna bağlanabilir.</Callout>
|
||||
|
||||
## İlk Bağlantınızı Oluşturun
|
||||
|
||||
<Steps>
|
||||
<Step>
|
||||
### Yeni Bağlantı'yı Açın
|
||||
|
||||
Kenar çubuğundan ya da araç çubuğundan **Yeni Bağlantı**'ya tıklayın.
|
||||
|
||||
</Step>
|
||||
<Step>
|
||||
### Bir Veritabanı Türü Seçin
|
||||
|
||||
MySQL, PostgreSQL, SQLite, Redis, MongoDB, DuckDB, ClickHouse, SQL Server, Oracle gibi yerleşik bir profil ya da [Veritabanı Desteği](/tr/docs/databases) sayfasında listelenen uyumluluk ve Agent/JDBC profillerinden birini seçin.
|
||||
|
||||
</Step>
|
||||
<Step>
|
||||
### Bağlantı Ayrıntılarını Doldurun
|
||||
|
||||
Ağ veritabanları için gerektiğinde sunucuyu, portu, kullanıcı adını, parolayı ve varsayılan veritabanını girin. SQLite, DuckDB ve Access için sunucu ve port yerine yerel bir veritabanı dosyası seçin.
|
||||
|
||||
</Step>
|
||||
<Step>
|
||||
### Varsa Bir URL Yapıştırın
|
||||
|
||||
DBX; MySQL, PostgreSQL, Redis, MongoDB, ClickHouse, SQL Server, Oracle, Elasticsearch, Easysearch, Meilisearch, DM, GaussDB, openGauss, TDengine ve Access gibi motorlar için yaygın bağlantı URL'lerini ayrıştırabilir. Kaydetmeden önce ayrıştırılan alanları inceleyin.
|
||||
|
||||
</Step>
|
||||
<Step>
|
||||
### Ağ Seçeneklerini Ekleyin
|
||||
|
||||
Özel ağların, bastion sunucuların, yalnızca web erişimi olan ağ geçitlerinin ya da SOCKS5/HTTP proxy ortamlarının arkasındaki veritabanları için [Tünel / Proxy](/tr/docs/ssh-tunnel) kullanın.
|
||||
|
||||
</Step>
|
||||
<Step>
|
||||
### Test Edin ve Kaydedin
|
||||
|
||||
Kimlik bilgilerini, ağ erişimini ve yetkileri doğrulamak için **Test Et**'e tıklayın. Test geçtikten sonra bağlantıyı kaydedin ve kenar çubuğundan açın.
|
||||
|
||||
</Step>
|
||||
</Steps>
|
||||
|
||||
<Callout type="info">Bağlantı parolaları, SSH parolaları, SSH anahtar parolaları ve bağlantı dizeleri; DBX'in yerel depolamasında normal bağlantı JSON'undan ayrı saklanır. Şifreli bağlantı ayarlarını taşımanız gerektiğinde [Yapılandırma Dışa/İçe Aktarma](/tr/docs/config-export) özelliğini kullanın.</Callout>
|
||||
|
||||
## Üretim Hatalarını Azaltın
|
||||
|
||||
- Üretim bağlantılarına `prod-orders` gibi belirgin bir ad verin; amacını anlatmak için renkleri, grupları ve notları kullanın.
|
||||
- Yalnızca sorgu erişimi için veritabanında salt okunur bir hesabı DBX **Salt okunur bağlantı** ayarıyla birleştirin.
|
||||
- Tüm bağlantı ya da seçili veritabanları için **Üretim korumasını** etkinleştirin; DBX yazmalar için yeni ve açık bir onay ister.
|
||||
- Bir sunucuda çok sayıda veritabanı ya da şema varsa yalnızca şu anda ihtiyacınız olan nesneleri gösterin.
|
||||
- Düzenlemeleri, içe aktarımları, aktarımları, SQL dosyalarını ya da şema eşitleme işlemlerini uygulamadan önce üretilen SQL'i inceleyin.
|
||||
- MCP bağlantılarını bir izin listesinin arkasına alın ve varsayılan olarak Tam erişimi açmak yerine Salt okunur ya da Veri okuma/yazma modunu tercih edin.
|
||||
|
||||
Davranışın tamamı ve önerilen yapılandırmalar için [Üretim ve Yazma Güvenliği](/tr/docs/production-safety) sayfasına bakın.
|
||||
|
||||
## Sırada Ne Denemeli
|
||||
|
||||
<Cards>
|
||||
<Card title="SQL Yazın" href="/tr/docs/query-editor">
|
||||
Tamamlamayı, biçimlendirmeyi, seçili çalıştırmayı, iptali ve geçmişi kullanın.
|
||||
</Card>
|
||||
<Card title="Veriye Gözatın" href="/tr/docs/data-grid">
|
||||
Sonuçları inceleyin, güvenli olduğunda satırları düzenleyin, SQL'i önizleyin ve veriyi dışa aktarın.
|
||||
</Card>
|
||||
<Card title="Şemayı Keşfedin" href="/tr/docs/schema-browser">
|
||||
Veritabanlarına, şemalara, tablolara, sütunlara, Redis anahtarlarına ve MongoDB koleksiyonlarına gözatın.
|
||||
</Card>
|
||||
</Cards>
|
||||
|
||||
## Yaygın Bağlantı Sorunları
|
||||
|
||||
| Belirti | Denetleyin |
|
||||
| ---------------------------- | ---------------------------------------------------------------------------------------------- |
|
||||
| Zaman aşımı | Sunucu, port, güvenlik duvarı, güvenlik grubu, VPN, Docker ana makinesine erişim ya da özel ağ erişimi |
|
||||
| Kimlik doğrulama başarısız | Kullanıcı adı, parola, kimlik doğrulama modu, SSL gereksinimi, uzaktan giriş yetkisi |
|
||||
| Bağlandı ama tablo yok | Varsayılan veritabanı, şema, yetkiler, meta veri okuma erişimi, görünür veritabanı filtresi |
|
||||
| Dosya veritabanı açılmıyor | Dosya yolu, dosya izinleri, bağlanmış Docker birimi ya da desteklenmeyen dosya uzantısı |
|
||||
| Özel veritabanına erişilemiyor | Tünel / proxy, VPN yapılandırın ya da Docker'ı veritabanına erişebilen bir makinede çalıştırın |
|
||||
|
||||
## Kaynaktan Çalıştırma
|
||||
|
||||
DBX'e katkı verirken ya da yerelde hata ayıklarken kaynak modunu kullanın.
|
||||
|
||||
<Callout type="info">
|
||||
İlk kez katkı verecek olanlar; eksiksiz platform kurulumu, fork alma, issue üstlenme, test ve pull request adımları için [Kaynaktan Derleme ve Katkı](/tr/docs/contributing) sayfasını izlemelidir.
|
||||
</Callout>
|
||||
|
||||
### Gereksinimler
|
||||
|
||||
- [Node.js](https://nodejs.org/) >= 22.13.0
|
||||
- [pnpm](https://pnpm.io/) 10.27.0
|
||||
- Make (macOS ve Linux'ta gereklidir; Windows'ta isteğe bağlı)
|
||||
- [Rust](https://www.rust-lang.org/tools/install) >= 1.88
|
||||
|
||||
### Sistem Bağımlılıkları
|
||||
|
||||
<Tabs groupId="dev-platform" items={["macOS", "Linux", "Windows"]}>
|
||||
<Tab value="macOS">```bash brew install unixodbc ```</Tab>
|
||||
<Tab value="Linux">```bash sudo apt-get install -y libwebkit2gtk-4.1-dev libgtk-3-dev libappindicator3-dev librsvg2-dev patchelf libssl-dev unixodbc-dev ```</Tab>
|
||||
<Tab value="Windows">
|
||||
Pakete gömülü OpenSSL'i derlemek için gereken [Strawberry Perl](https://github.com/StrawberryPerl/Perl-Dist-Strawberry/releases) kurulumunu yapın:
|
||||
|
||||
```powershell
|
||||
winget install StrawberryPerl.StrawberryPerl
|
||||
```
|
||||
|
||||
DBX varsayılan olarak `sqlite-sqlcipher` özelliğini etkinleştirir; bu, SQLCipher ve OpenSSL'i kaynaktan derler. Windows'ta OpenSSL `Configure` betiğini çalıştırmak için Perl gerekir. Kurulumdan sonra `perl` komutunun `PATH` üzerinde olması için terminalinizi yeniden açın.
|
||||
|
||||
</Tab>
|
||||
</Tabs>
|
||||
|
||||
### Geliştirmeye Başlama
|
||||
|
||||
```bash
|
||||
git clone https://github.com/t8y2/dbx.git
|
||||
cd dbx
|
||||
make
|
||||
```
|
||||
|
||||
`make`, gerektiğinde kök bağımlılıkları kurar ve yerel Tauri masaüstü geliştirme ortamını başlatır.
|
||||
|
||||
Web sürümü için:
|
||||
|
||||
```bash
|
||||
make dev-web
|
||||
make dev-backend
|
||||
```
|
||||
|
||||
### Masaüstü Paketleri Derleme
|
||||
|
||||
```bash
|
||||
make package
|
||||
```
|
||||
|
||||
Masaüstü yükleyicileri `target/release/bundle/` dizinine yazılır.
|
||||
@@ -0,0 +1,80 @@
|
||||
---
|
||||
title: Klavye Kısayolları
|
||||
description: Geçerli varsayılanları inceleyin; düzenleyici, ızgara, kenar çubuğu ve genel eylemleri Ayarlar'dan özelleştirin.
|
||||
---
|
||||
|
||||
DBX kısayolları tek bir yapılandırılabilir eylem kaydından gelir. **Ayarlar → Kısayollar**, kurulu sürüm ve geçerli platform için etkin atamayı gösterir; bu yüzden varsayılanlar değiştikten veya kullanıcı bir tuşu özelleştirdikten sonra asıl kaynak burasıdır.
|
||||
|
||||
`Mod`, macOS'ta `Cmd`, Windows/Linux'ta `Ctrl` anlamına gelir.
|
||||
|
||||
## Yaygın Varsayılanlar
|
||||
|
||||
### SQL Düzenleyici
|
||||
|
||||
| Varsayılan | Eylem |
|
||||
| --- | --- |
|
||||
| `Mod+Enter` | Geçerli ifadeyi veya seçili SQL'i çalıştır |
|
||||
| `Mod+\` | Yeni sonuç sekmesinde çalıştır |
|
||||
| `Shift+Mod+F` | SQL'i biçimlendir |
|
||||
| `Mod+/` | Satır yorumunu aç/kapat |
|
||||
| `Mod+S` | SQL'i kaydet |
|
||||
| `Tab` | Tamamlamayı kabul et |
|
||||
| `Shift+Tab` | Girintiyi azalt |
|
||||
| `Mod+D` | Geçerli satırı çoğalt |
|
||||
| `Shift+Mod+K` | Geçerli satırı sil |
|
||||
| `Alt+↑` / `Alt+↓` | Geçerli satırı yukarı/aşağı taşı |
|
||||
| `Shift+Alt+↑` / `Shift+Alt+↓` | Geçerli satırı yukarı/aşağı kopyala |
|
||||
| `Shift+Alt+U` / `Shift+Alt+L` | Seçimi büyük/küçük harfe dönüştür |
|
||||
| `Mod+.` | Kod katlamayı aç/kapat |
|
||||
| `Mod+Shift+A` | Seçimi yapay zekâya gönder |
|
||||
|
||||
Geçerli kayıtta varsayılan bir "tüm SQL'i çalıştır" eylemi yoktur. Eski `Ctrl/Cmd+Shift+Enter` belgelerine güvenmek yerine bir aralık seçin ya da düzenleyicinin çoklu ifade yürütme giriş noktasını kullanın.
|
||||
|
||||
### Izgara ve Veri
|
||||
|
||||
| Varsayılan | Eylem |
|
||||
| --- | --- |
|
||||
| `F5` | Geçerli veriyi yenile |
|
||||
| `Mod+D` | Geçerli satırı kopyala |
|
||||
| `Delete` | Geçerli satırı silinmek üzere işaretle |
|
||||
| `Tab` | Devrik görünümü aç/kapat |
|
||||
|
||||
Standart kopyalama ve yapıştırma yine platform kurallarını izler. Geçerli Satırı Kopyala, Geçerli Satırı Sil ve Devrik Görünümü Aç/Kapat, DBX'te yapılandırılabilir eylemlerdir.
|
||||
|
||||
### Genel ve Gezinme
|
||||
|
||||
| Varsayılan | Eylem |
|
||||
| --- | --- |
|
||||
| `Mod+T` | Yeni sorgu |
|
||||
| `Mod+P` | Hızlı aç |
|
||||
| `Mod+W` | Geçerli sekmeyi kapat |
|
||||
| `Ctrl+Alt+←` / `Ctrl+Alt+→` | Sekme ziyaret geçmişinde geri/ileri |
|
||||
| `Shift+Mod+[` / `Shift+Mod+]` | Önceki/sonraki sekme |
|
||||
| `Mod+1` … `Mod+9` | Numaralı bir sekmeye geç |
|
||||
| `Mod+B` | Kenar çubuğunu aç/kapat |
|
||||
| `Mod+=` / `Mod+-` / `Mod+0` | Yakınlaştır, uzaklaştır, arayüz yakınlaştırmasını sıfırla |
|
||||
|
||||
Kenar çubuğunda ayrıca kopyalama, yapıştırma, bağlantı düzenleme ve değiştirici tuşla yeni sekmede açma için yapılandırılabilir eylemler vardır.
|
||||
|
||||
## Hızlı Aç
|
||||
|
||||
Geçerli çalışma alanındaki bağlantıları, veritabanlarını, şemaları, tabloları, görünümleri ve kayıtlı SQL'i aramak için `Mod+P` tuşlarına basın. Sonuçlar yüklenmiş ve aranabilir nesnelerden gelir. Meta verisi henüz yüklenmemiş büyük bir bağlantı için önce ilgili düğümü genişletin ya da yenileyin.
|
||||
|
||||
## Özelleştirme ve Çakışmalar
|
||||
|
||||
1. **Ayarlar → Kısayollar** bölümünü açın
|
||||
2. Bir eylem seçip kayıt moduna girin
|
||||
3. Yeni bir tuş bileşimine basın ya da istemediğiniz atamayı temizleyin
|
||||
4. Çakışmaları çözüp kaydedin
|
||||
|
||||
DBX, çakışmaları kapsam içinde algılar. Düzenleyici, ızgara, arama, kenar çubuğu ve genel eylemlerin ayrı kapsamları vardır; ancak tarayıcı, işletim sistemi, giriş yöntemi veya erişilebilirlik yazılımı bir tuşu yine de önce ayırmış olabilir.
|
||||
|
||||
Windows/Linux'ta `Ctrl+Alt` AltGr anlamına gelebilir, bu yüzden DBX bu bileşimleri temkinli eşleştirir. macOS'ta Option+harf dönüştürülmüş karakterler üretebilir; DBX fiziksel tuş yedeğini yalnızca güvenli olduğu yerlerde kullanır.
|
||||
|
||||
## İlgili Sayfalar
|
||||
|
||||
<Cards>
|
||||
<Card title="Sorgu Düzenleyici" href="/tr/docs/query-editor">Yürütme aralıklarını, sonuç sekmelerini ve düzenleyici davranışını inceleyin.</Card>
|
||||
<Card title="SQL Hızlı İşlemleri" href="/tr/docs/sql-quick-actions">Bir tablo adı seçtikten sonra özel SQL şablonları çalıştırın.</Card>
|
||||
<Card title="SQL Biçimlendirici" href="/tr/docs/sql-formatter">Biçimlendirici ayarları düzenleyicisi için kuralları ve kısayolları yapılandırın.</Card>
|
||||
</Cards>
|
||||
@@ -0,0 +1,276 @@
|
||||
---
|
||||
title: MCP Tümleştirmesi
|
||||
description: Yapay zekâ kodlama agent'larının, DBX'in yönettiği Model Context Protocol politikası içinde meta veri okumasına, veri sorgulamasına ve durumlu oturumlar kullanmasına izin verin.
|
||||
---
|
||||
|
||||
<Callout type="info">Yapay zekâ asistanınızı DBX'e bağlayın; şemaları incelemesine, veri sorgulamasına ve sonuçları DBX'te açmasına izin verin.</Callout>
|
||||
|
||||
## MCP nedir?
|
||||
|
||||
MCP (Model Context Protocol), yapay zekâ istemcilerinin dış araçları çağırmasını sağlar. DBX MCP, yapay zekâ asistanınıza DBX'te yapılandırılmış veritabanı bağlantılarına erişim verir.
|
||||
|
||||
```text
|
||||
Yapay zekâ agent'ı → DBX MCP → veritabanınız → sonuçlar
|
||||
↘ DBX masaüstü uygulaması (açma ya da sonuç gösterme)
|
||||
```
|
||||
|
||||
## Hızlı Başlangıç
|
||||
|
||||
<Steps>
|
||||
<Step>
|
||||
### MCP Sunucusunu Kurun
|
||||
|
||||
```bash
|
||||
npm install -g @dbx-app/mcp-server
|
||||
```
|
||||
|
||||
npm, paketi geçerli platformunuz için otomatik kurar. `--no-optional` kullanmayın.
|
||||
</Step>
|
||||
<Step>
|
||||
### Yapay Zekâ Agent'ınızı Yapılandırın
|
||||
|
||||
Proje dizininizde `.mcp.json` oluşturun:
|
||||
|
||||
```json
|
||||
{
|
||||
"mcpServers": {
|
||||
"dbx": {
|
||||
"command": "npx",
|
||||
"args": ["-y", "@dbx-app/mcp-server"]
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
Paketi genel olarak kurduysanız `"command": "dbx-mcp-server"` kullanabilirsiniz. Bağlantı izin listesini ve yürütme modunu merkezî olarak **DBX Ayarlar → MCP** bölümünden yönetin; normal istemci yapılandırmalarının yetki değişkenlerine ihtiyacı yoktur. Windows taşınabilir DBX için `DBX_DATA_DIR` değerini `DBX.exe` yanındaki `data` dizinine ayarlayın.
|
||||
</Step>
|
||||
<Step>
|
||||
### Kullanmaya Başlayın
|
||||
|
||||
Yapay zekâ asistanınıza doğal dille sorun:
|
||||
|
||||
- "Veritabanı bağlantılarımı listele"
|
||||
- "local-pg üzerindeki tabloları göster"
|
||||
- "users tablosunu tanımla"
|
||||
- "Son 7 gündeki siparişleri say"
|
||||
- "orders tablosunu aç" (DBX'in çalışmasını gerektirir)
|
||||
</Step>
|
||||
</Steps>
|
||||
|
||||
## Desteklenen Yapay Zekâ Agent'ları
|
||||
|
||||
| Agent | Yapılandırma |
|
||||
| --- | --- |
|
||||
| Claude Code | `.mcp.json` |
|
||||
| Cursor | `.cursor/mcp.json` |
|
||||
| Windsurf | MCP yapılandırması |
|
||||
| VS Code + Copilot | MCP uzantısı/yapılandırması |
|
||||
| DeepSeek Harness | `$DSH_HOME/profiles/<profil>/cordis.patch.yml` |
|
||||
|
||||
### DeepSeek Harness
|
||||
|
||||
DeepSeek Harness, MCP sunucularını bir `mcpServers` JSON nesnesi yerine Cordis eklenti girdileriyle yükler. `@dbx-app/mcp-server` kurulduktan sonra `web` profili için aşağıdaki girdiyi `$DSH_HOME/profiles/web/cordis.patch.yml` dosyasına ekleyin: `DSH_HOME` ayarlanmamışsa varsayılan olarak `~/.dsh` kullanılır.
|
||||
|
||||
```yaml
|
||||
- insert:
|
||||
- id: mcp-dbx
|
||||
name: '@deepseek-ai/dsh-mcp-client'
|
||||
config:
|
||||
serverName: dbx
|
||||
transport: stdio
|
||||
command: dbx-mcp-server
|
||||
```
|
||||
|
||||
Üst düzeydeki `- insert:` sarmalayıcısını koruyun ve diğer patch girdilerinin üzerine yazmayın. Başka bir DSH profili için yoldaki `web` yerine o profilin adını yazın. `dbx-mcp-server` komutu, DSH işleminin `PATH` değişkeninde bulunmalıdır; gerektiğinde tam çalıştırılabilir yolu kullanın.
|
||||
|
||||
Oluşan yapılandırmayı doğrulamak için `dsh web --dump-config` çalıştırın, ardından DSH'yi yeniden başlatın ya da sıcak yeniden yüklemesinin patch'i uygulamasını bekleyin. Araçlar modele `mcp__dbx__<araç>` biçiminde sunulur. Araç adlarının ve yetki kurallarının kararlı kalması için `serverName: dbx` değerini değiştirmeyin. Bağlantı erişimi ve yürütme modu **DBX Ayarlar → MCP** bölümünden yönetilmeye devam eder.
|
||||
|
||||
## Araçlar
|
||||
|
||||
DBX MCP şu anda 17 araç sunar:
|
||||
|
||||
| Araç | Açıklama |
|
||||
| --- | --- |
|
||||
| `dbx_list_connections` | MCP oturumunun görebildiği bağlantıları listeler |
|
||||
| `dbx_list_databases` | Bir bağlantı üzerinden kullanılabilen veritabanlarını, MCP veritabanı kapsamına uyarak listeler |
|
||||
| `dbx_add_connection` | DBX deposuna bir bağlantı ekler |
|
||||
| `dbx_duplicate_connection` | Bir DBX bağlantısını tüm ayarlarıyla çoğaltır |
|
||||
| `dbx_remove_connection` | DBX deposundan bir bağlantıyı kaldırır |
|
||||
| `dbx_list_tables` | Tabloları, görünümleri ya da koleksiyonları listeler |
|
||||
| `dbx_describe_table` | Sütunları ve tablo meta verisini döndürür |
|
||||
| `dbx_list_routines` | Bir şemadaki saklı yordamları ve işlevleri, isteğe bağlı `routine_type` filtresiyle (PROCEDURE ya da FUNCTION) listeler |
|
||||
| `dbx_get_routine_source` | Bir saklı yordamın ya da işlevin kaynağını ada göre, aşırı yüklenmiş adlar için isteğe bağlı `signature` ile döndürür |
|
||||
| `dbx_get_schema_context` | Bir yapay zekâ modeli için sıkı şema bağlamı döndürür |
|
||||
| `dbx_execute_query` | SQL ya da desteklenen bir MongoDB kabuk komutu çalıştırır, en fazla 100 satır döndürür |
|
||||
| `dbx_open_session` | Tek bir arka uç bağlantısına sabitlenmiş durumlu bir SQL sorgu oturumu açar |
|
||||
| `dbx_close_session` | Bir oturumu kapatır ve sabitlenmiş bağlantı kaynaklarını serbest bırakır |
|
||||
| `dbx_execute_redis_command` | Bir Redis komutu çalıştırır |
|
||||
| `dbx_send_message` | Desteklenen bir mesaj kuyruğu konusuna ya da kuyruğuna mesaj gönderir |
|
||||
| `dbx_open_table` | Çalışan DBX masaüstü uygulamasında bir tablo açar |
|
||||
| `dbx_execute_and_show` | Bir sorgu çalıştırır ve sonucu DBX'te gösterir |
|
||||
|
||||
Bağlantı kapsamlı oturumlar; bağlantıyı değiştiren ve masaüstü arayüzü araçlarını gizler.
|
||||
|
||||
## Durumlu Sorgu Oturumları
|
||||
|
||||
Normal `dbx_execute_query` çağrıları birbirinden bağımsızdır. Bir iş akışının veritabanı oturum durumunu koruması gerektiğinde önce `dbx_open_session` çağırın ve döndürülen `sessionId` değerini sonraki `dbx_execute_query` çağrılarına geçirin. Tipik kullanımlar:
|
||||
|
||||
- `USE` ya da veritabanı bağlamı değişiklikleri
|
||||
- Geçici tablolar
|
||||
- Oturum değişkenleri ve ayarları
|
||||
- Tek bir bağlantı gerektiren açık işlemler ya da çok adımlı tanılamalar
|
||||
|
||||
Oturumlar yalnızca SQL bağlantılarını destekler ve tek bir bağlantı ile veritabanına bağlıdır. Bilinmeyen, kapatılmış ya da süresi dolmuş kimlikler sessizce sıradan bir sorguya dönmek yerine hata verir. İşiniz bittiğinde `dbx_close_session` çağırın. Boşta kalan oturumlar 30 dakika sonra geri alınır ve sunucu en fazla 32 eşzamanlı oturuma izin verir.
|
||||
|
||||
<Callout type="warn">Durumlu bir oturum SQL politikasını genişletmez. `USE` yalnızca bir oturum içinde anlamlıdır; yazmalar, DDL, üretim koruması, bağlantının salt okunur durumu ve veritabanı yetkileri her istekte yeniden denetlenir.</Callout>
|
||||
|
||||
## Veritabanı Erişimi
|
||||
|
||||
### DBX Masaüstü için yerel Streamable HTTP
|
||||
|
||||
Masaüstü isteğe bağlı olarak kendi Streamable HTTP MCP uç noktasını barındırabilir. **Varsayılan olarak kapalıdır** ve **Ayarlar → MCP → HTTP Servisi** bölümünden etkinleştirildiğinde varsayılan olarak yalnızca `127.0.0.1:5225/mcp` üzerinde dinler. Masaüstü işlemi dinleyiciyi yönetir, yerel bir bearer belirteci oluşturur, kopyalanabilir bir istemci yapılandırması gösterir ve yönetilen HTTP servisi beklenmedik biçimde sonlanırsa yeniden başlatır.
|
||||
|
||||
Yerel bir MCP istemcisini bağlamak için:
|
||||
|
||||
1. **Ayarlar → MCP → HTTP Servisi** bölümünü açın, **Streamable HTTP Servisi**'ni açın ve başka bir aygıtın gerçekten erişmesi gerekmedikçe varsayılan loopback adresini koruyun.
|
||||
2. **Kaydet ve servisi başlat**'a tıklayın. Değişen bir adresi, portu ya da yolu kaydetmek, servisi yeniden başlatarak yapılandırmayı uygular.
|
||||
3. Gösterilen servis adresini ve bearer belirtecini MCP istemcisine kopyalayın.
|
||||
|
||||
Üretilen değerleri HTTP destekleyen bir MCP istemcisinde kullanın. Taşımaya özgü alan adları istemciler arasında değişir, ancak temel yapılandırma şudur:
|
||||
|
||||
```json
|
||||
{
|
||||
"type": "http",
|
||||
"url": "http://127.0.0.1:5225/mcp",
|
||||
"headers": {
|
||||
"Authorization": "Bearer <DBX Masaüstü'nün gösterdiği belirteç>"
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
Yerel istemciler için varsayılan loopback bağlamasını koruyun. Bir yerel ağ adresine bağlanmak, **Uzaktan erişime izin ver** seçeneğini açmayı ve izin verilen tam `Host` yetkilerini belirlemeyi gerektirir; tarayıcı istemcileri ayrıca tam `Origin` değerlerine ihtiyaç duyar. İstemci varsayılan olmayan bir port gönderdiğinde izin verilen Host değerinde `sunucu:port` kullanın. Belirteci değiştirmek, önceki kimlik bilgisini hemen geçersiz kılar.
|
||||
|
||||
### Yerel bağlantılar
|
||||
|
||||
MCP, DBX'te kayıtlı bağlantıları kullanır. Yerel olarak çalışan bağlantılar Masaüstü uygulamasının açık kalmasını gerektirmez; köprü destekli ya da kurulu Agent/sürücü yolları yine kendi çalışma zamanlarına bağlıdır.
|
||||
|
||||
Yaygın yerel yollar:
|
||||
|
||||
| Platform | Varsayılan veritabanı dosyası |
|
||||
| --- | --- |
|
||||
| macOS | `~/Library/Application Support/com.dbx.app/dbx.db` |
|
||||
| Linux | `~/.local/share/com.dbx.app/dbx.db` |
|
||||
| Windows | `%APPDATA%\com.dbx.app\dbx.db` |
|
||||
|
||||
`DBX_DATA_DIR` değerini `dbx.db` dosyasını içeren dizine ayarlayın. Dosyanın kendisine ayarlamayın.
|
||||
|
||||
Yerel SQL, tek düğümlü Redis ve MongoDB yolları MCP üzerinden doğrudan çalışabilir. SSH, küme, üreticiye özgü, dış sürücü ve Agent/JDBC kullanılabilirliği; bağlantı yapılandırmasına ve kurulu DBX bileşenlerine bağlıdır. DBX ürününün desteklediği her veritabanının bağımsız MCP ikili dosyasına gömülü olduğunu varsaymayın.
|
||||
|
||||
DuckDB, bağımsız DBX DuckDB sürücüsünü kullanır. Yerel MCP üzerinden bir DuckDB bağlantısını sorgulamadan önce sürücüyü **DBX Sürücü Yöneticisi**'nden kurun. MCP ikili dosyası yardımcı bileşen istemcisini içerir, ancak DuckDB motorunu gömmez.
|
||||
|
||||
### Agent/JDBC veritabanları
|
||||
|
||||
Oracle, KingbaseES ve XuguDB kendi yerel DBX Agent'larını gerektirir, JRE gerektirmez. Dameng, DB2, Hive, Trino, Snowflake, SAP HANA ve diğer JDBC Agent bağlantıları; uygun Agent'ı, JDBC sürücüsünü ve JRE'yi gerektirir. MCP kullanmadan önce gereken bileşeni DBX'te kurun.
|
||||
|
||||
### DBX Web ve Docker modu
|
||||
|
||||
Yerel bağlantılar yerine dağıtılmış bir DBX Web arka ucunu kullanmak için `DBX_WEB_URL` değişkenini ayarlayın. Web girişi korumalıysa `DBX_WEB_PASSWORD` değerini de aynı giriş parolasına ayarlayın.
|
||||
|
||||
DBX Web istekleri standart sistem proxy ortam değişkenlerine uyar: https URL'leri için `HTTPS_PROXY`/`https_proxy`, http URL'leri için `HTTP_PROXY`/`http_proxy`, yedek olarak `ALL_PROXY`/`all_proxy` ve atlama listesi olarak `NO_PROXY`/`no_proxy` (virgülle ayrılmış sunucular, örn. `localhost,127.0.0.1,.internal.example`). Boş ya da ayarlanmamış bir proxy değeri doğrudan bağlantı (proxy yok) anlamına gelir. HTTP, HTTPS ve SOCKS5 proxy'leri desteklenir (`http://127.0.0.1:7890` ya da `socks5://127.0.0.1:1080`); kimlik doğrulama gerektiren proxy'ler standart `kullanıcı:parola@sunucu:port` URL biçimini kullanır, örn. `http://admin:admin123@127.0.0.1:7890`. Her DBX Web isteğine ek başlıklar eklemek için (örneğin bir ağ geçidinin önünde belirteç kimlik doğrulaması) `DBX_WEB_HEADERS` değerini başlık adları ve dize değerlerinden oluşan bir JSON nesnesine ayarlayın, örn. `{"Authorization":"Bearer <token>"}`. Kendinden imzalı HTTPS arka uçlarında sertifika doğrulaması varsayılan olarak açıktır; doğrulamayı kapatmak için `DBX_WEB_INSECURE_SKIP_VERIFY=1` ayarlayın ya da özel bir CA'ya güvenmek için `DBX_WEB_CA_CERT` değerini bir PEM/DER CA dosyasına ayarlayın. Aynı değişkenler Web modundaki DBX CLI tarafından da kullanılır.
|
||||
|
||||
DBX Web ve Docker aynı bağımsız DuckDB sürücüsünü gerektirir. İlk açılıştan sonra Sürücü Yöneticisi'nden kurun. Docker, kurulu sürücüleri `/app/data/agents` altında saklar; bu yüzden `/app/data` bir birim olarak bağlandığında korunurlar.
|
||||
|
||||
### DBX Web için yerel Streamable HTTP
|
||||
|
||||
DBX Web de MCP'yi kendisi barındırabilir. Bu mod, `DBX_WEB_MCP_TOKEN` (ya da `DBX_WEB_MCP_TOKEN_FILE`) yapılandırılmadıkça kapalıdır. Mevcut Web dinleyicisini ve `/mcp` yolunu kullanır, bu yüzden Docker ve ters proxy dağıtımlarının ikinci bir açık porta ihtiyacı olmaz. `DBX_WEB_MCP_ALLOWED_HOSTS` değerini, istemcilerin `Host` başlığında gönderdiği herkese açık yetkilerle (uygun olduğunda eşlenen portla birlikte) yapılandırın. Bir Compose dosyasına gerçek bir belirteç yazmak yerine `DBX_WEB_MCP_TOKEN_FILE` ya da dağıtım gizli bilgi yöneticinizi kullanın.
|
||||
|
||||
Örneğin `4225:4224` olarak yayımlanan bir kapsayıcı `http://localhost:4225/mcp` adresini kullanır:
|
||||
|
||||
```yaml
|
||||
environment:
|
||||
DBX_WEB_MCP_TOKEN: replace-with-a-long-random-secret
|
||||
DBX_WEB_MCP_ALLOWED_HOSTS: localhost:4225
|
||||
ports:
|
||||
- "4225:4224"
|
||||
```
|
||||
|
||||
İstemciler `Authorization: Bearer <DBX_WEB_MCP_TOKEN>` göndermelidir. Tarayıcı tabanlı istemciler ayrıca tam kaynaklarıyla `DBX_WEB_MCP_ALLOWED_ORIGINS` gerektirir, örneğin `https://mcp.example.com`; yerel istemciler normalde `Origin` başlığı göndermez. Bir ters proxy herkese açık bir yol öneki eklediğinde `DBX_PUBLIC_BASE_PATH=/dbx` ayarlayın; yerel uç nokta o zaman `/dbx/mcp` olur. Yerel HTTP ile mevcut `DBX_WEB_URL` stdio bağdaştırıcısı birlikte var olabilir: DBX bağlantılarını ve MCP politikasını paylaşırlar, bağdaştırıcı ise yalnızca stdio destekleyen istemciler için kullanışlı kalır.
|
||||
|
||||
### Masaüstü arayüz araçları
|
||||
|
||||
`dbx_open_table` ve `dbx_execute_and_show`, DBX masaüstü uygulamasını gerektirir ve Web modunda ya da kapsamlı politika arayüz araçlarını gizlediğinde kullanılamaz. Diğer araçların Masaüstü'ne ihtiyaç duyup duymadığı, bağlantının yerel yürütmeyi mi yoksa bir köprü/Agent yolunu mu kullandığına bağlıdır.
|
||||
|
||||
## Güvenlik ve Ortam Değişkenleri
|
||||
|
||||
DBX, **Ayarlar → MCP** altında tek bir yetkili MCP politikası saklar ve her istekte yeniden yükler:
|
||||
|
||||
| Yetki modu | İzin verilen işlemler |
|
||||
| --- | --- |
|
||||
| Salt okunur | Sorgular ve meta veri okumaları |
|
||||
| Veri okuma/yazma | Normal eklemeler, etkin biçimde filtrelenmiş güncellemeler/silmeler, kapsamı belirli MongoDB değişiklikleri ve sıradan Redis yazmaları |
|
||||
| Tam erişim | Ayrıca geniş güncellemelere/silmelere, DDL'e, `TRUNCATE`'e, MongoDB'de yıkıcı işlemlere ve Redis `FLUSH*` komutlarına izin verir |
|
||||
|
||||
`WHERE TRUE`, `WHERE 1 = 1`, `_id: {$exists: true}` gibi etkisiz bir koşul ya da belirsiz bir MongoDB filtresi yüksek riskli olmayı sürdürür. Bağlantı düzeyindeki salt okunur koruma, üretim koruması, veritabanı kimlik bilgileri ve MCP bağlantı izin listesi her modda üst sınır olarak kalır.
|
||||
|
||||
MCP'ye açılan bağlantılar için **Ayarlar → MCP** varsayılan bir yürütme yetkisi belirleyebilir: genel moddan devralma, salt okunur, güvenli yazma ya da yüksek riskli yazma. Seçili veritabanları kullanıldığında tek tek veritabanları kendi yürütme yetkisini alabilir. Yürütme yetkileri en özel kapsamdan geriye doğru düşer: **veritabanı ayarı → bağlantı varsayılanı → genel varsayılan**. Örneğin genel ve bağlantı varsayılanları veri okuma/yazma iken bir veritabanı tam erişim kullanabilir. Bağlantı düzeyindeki salt okunur koruma, üretim koruması, veritabanı kapsamı ve veritabanı kimlik bilgileri; hiçbir veritabanı ayarının atlayamayacağı bağımsız kesin sınırlar olarak kalır.
|
||||
|
||||
Aynı sayfa yalnızca seçili MCP araçlarını da sunabilir. Bu, yalnızca istemci tarafında bir görüntüleme tercihi değil, her çağrıda uygulanan bir kuraldır; eski bir araç listesini saklayan bir istemci, sunucu tarafındaki izin listesi değiştiğinde reddedilir.
|
||||
|
||||
### Erişimi sırayla yapılandırın
|
||||
|
||||
Geçerli kapsamı bu sırayla tanımlamak için **Ayarlar → MCP** bölümünü kullanın:
|
||||
|
||||
1. MCP'nin **tüm bağlantıları** (ileride eklenecekler dâhil) mi yoksa yalnızca **belirtilen bağlantıları** mı görebileceğini seçin.
|
||||
2. Açılan her bağlantı için **tüm veritabanları**, **belirtilen veritabanları** ya da **erişim yok** seçin. Belirtilen veritabanı adları tam eşleşmedir; şu anda izin verilen adları bulmak için `dbx_list_databases` kullanın, ardından isterseniz bu veritabanları için yürütme yetkileri belirleyin.
|
||||
3. Her bağlantının varsayılan yürütme yetkisini belirleyin. Tüm veritabanları açıldığında her veritabanı için, seçili veritabanlarında ise geçersiz kılınmayanlar için geçerlidir.
|
||||
4. Yalnızca istemcinin ihtiyaç duyduğu MCP araçlarını seçin, ardından genel varsayılan yürütme yetkisini belirleyin.
|
||||
|
||||
En özel yürütme ayarı kazanır, ancak izin verilen bir araç yine de gizlenmiş bir bağlantıyı, veritabanı kapsamını, bağlantının salt okunur durumunu, üretim korumasını ya da veritabanı hesabının kendi yetkilerini atlayamaz. Seçili kapsamın dışındaki bir veritabanı için yapılan istekler `DATABASE_OUT_OF_SCOPE` ile reddedilir. Veritabanına özgü yürütme yetkileri varken, bu sınırların atlanmasını önlemek için veritabanları arası SQL ve MongoDB toplama yazmaları reddedilir.
|
||||
|
||||
Yükseltme sırasında, yürütme politikası sürümü olmayan kayıtlı bağlantı kuralları önceki üst sınır anlamını korur ve genel yetkiyi genişletemez. Yalnızca geçerli Ayarlar arayüzüyle kaydedilen bir kural, kapsamlı geçersiz kılma anlamı için işaretlenir; mevcut bir eski kuralı düzenlemek, yeni davranışı etkinleştirmeden önce geçerli üst sınırını taşır.
|
||||
|
||||
Güncel sunucular; `DBX_MCP_ALLOW_WRITES` ya da `DBX_MCP_ALLOW_DANGEROUS_SQL` değişkenlerinin DBX politikasını genişletmesine izin vermez. Yükseltme uyumluluğu için `DBX_MCP_ALLOW_WRITES=0` (ya da `false`), merkezî bir politika ilk kez kaydedilene dek MCP'yi salt okunur tutar. Ondan sonra merkezî politika yetkilidir ve eski yetki değişkenleri yok sayılır. Eski bağlantı kapsamı değişkenleri DBX izin listesini yalnızca daraltabilir.
|
||||
|
||||
| Değişken | Amacı |
|
||||
| --- | --- |
|
||||
| `DBX_DATA_DIR` | Yerel DBX veri dizinini geçersiz kılar |
|
||||
| `DBX_WEB_URL` | Bir DBX Web/Docker arka ucunu kullanır |
|
||||
| `DBX_WEB_PASSWORD` | DBX Web'e kimlik doğrular |
|
||||
| `HTTP_PROXY` / `HTTPS_PROXY` / `ALL_PROXY` | DBX Web istekleri için standart sistem proxy değişkenleri; boş değer proxy yok anlamına gelir. Kimlik doğrulama `http://kullanıcı:parola@sunucu:port` ile |
|
||||
| `NO_PROXY` | Yukarıdaki proxy için standart atlama listesi (virgülle ayrılmış sunucular) |
|
||||
| `DBX_WEB_HEADERS` | DBX Web istekleri için ek HTTP başlıklarından oluşan JSON nesnesi, örn. `{"Authorization":"Bearer token"}` |
|
||||
| `DBX_WEB_INSECURE_SKIP_VERIFY` | `1`/`true`, kendinden imzalı DBX Web arka uçları için TLS sertifika doğrulamasını kapatır (varsayılan: doğrula) |
|
||||
| `DBX_WEB_CA_CERT` | DBX Web TLS doğrulamasında güvenilecek PEM/DER CA dosyası |
|
||||
| `DBX_WEB_MCP_TOKEN` | Bu bearer belirteciyle yerel Web Streamable HTTP MCP'yi etkinleştirir |
|
||||
| `DBX_WEB_MCP_TOKEN_FILE` | Yerel Web MCP belirtecini bir dosyadan okur; `DBX_WEB_MCP_TOKEN` ile birlikte kullanılamaz |
|
||||
| `DBX_WEB_MCP_ALLOWED_HOSTS` | Yerel Web MCP için zorunlu, virgülle ayrılmış herkese açık Host yetkileri |
|
||||
| `DBX_WEB_MCP_ALLOWED_ORIGINS` | Yerel Web MCP için izin verilen, virgülle ayrılmış tarayıcı Origin değerleri |
|
||||
| `DBX_MCP_ALLOW_WRITES` | Yalnızca yükseltme uyumluluğu: `0`/`false`, yapılandırılmamış bir politikayı salt okunur tutar |
|
||||
| `DBX_MCP_SCOPE_CONNECTION_ID` | Tek bir bağlantı kimliği için uyumluluk kapsamı |
|
||||
| `DBX_MCP_SCOPE_CONNECTION_IDS` | Birden çok bağlantı kimliği için uyumluluk kapsamı |
|
||||
| `DBX_MCP_SCOPE_CONNECTION_NAME` | Oturumu tek bir bağlantı adıyla sınırlar |
|
||||
| `DBX_MCP_SCOPE_DATABASE` | Oturumu tek bir veritabanıyla sınırlar |
|
||||
| `DBX_MCP_DEBUG_SQL` | Geçici tanılamalara SQL'i dâhil eder |
|
||||
|
||||
## Sorun Giderme
|
||||
|
||||
<Accordions>
|
||||
<Accordion title="İsteğe bağlı platform paketi kurulmadı">`--no-optional` olmadan yeniden kurun, ardından platformu `node -p 'process.platform + "-" + process.arch'` ile doğrulayın. Geçerli platform, desteklenen platform tablosunda görünmelidir.</Accordion>
|
||||
<Accordion title="dbx.db bulunamıyor">`DBX_DATA_DIR` değerini `dbx.db` dosyasını içeren klasöre ayarlayın. Windows taşınabilir derlemelerinde bu normalde `DBX.exe` yanındaki `data` klasörüdür.</Accordion>
|
||||
<Accordion title="DBX çalışmıyor">Yalnızca `dbx_open_table` ve `dbx_execute_and_show` masaüstü uygulamasını gerektirir. Yerel sorgu araçları DBX açık olmadan da çalışabilir.</Accordion>
|
||||
<Accordion title="Masaüstü HTTP istemcisi ERR_CONNECTION_REFUSED alıyor">**Ayarlar → MCP → HTTP Servisi** bölümünde servisi açın ve **Kaydet ve servisi başlat**'a tıklayın. İstemcinin gösterilen adresi, yolu ve geçerli bearer belirtecini kullandığını doğrulayın. Varsayılan `127.0.0.1` adresi yalnızca aynı bilgisayardan gelen bağlantıları kabul eder.</Accordion>
|
||||
<Accordion title="Masaüstü HTTP adresinin kullanımda olduğunu söylüyor">Seçili adres ve portu başka bir işlem dinliyor. **Ayarlar → MCP → HTTP Servisi** bölümünde kullanılmayan bir port seçin, ardından servisi yeniden başlatmak için yapılandırmayı kaydedin. Aynı HTTP uç noktasıyla iki DBX Masaüstü örneği çalıştırmayın.</Accordion>
|
||||
<Accordion title="Bir istek DATABASE_OUT_OF_SCOPE döndürüyor">Bağlantı açılmış, ancak istenen veritabanı onun MCP veritabanı kapsamında değil. **Ayarlar → MCP** bölümünde tam veritabanı adını ekleyin ya da uygunsa o bağlantının kapsamını tüm veritabanlarına çevirin. Belirli bir kapsam için önce `dbx_list_databases` çağırın ve dönen adlardan birini kullanın.</Accordion>
|
||||
<Accordion title="Daha önce görünen bir araç reddediliyor">Araç artık **Ayarlar → MCP** bölümünde seçili değil ya da geçerli politika buna izin vermiyor. İzin listesini değiştirdikten sonra MCP istemcisinin araç listesini yenileyin; sunucu eskimiş araç çağrılarını da reddeder.</Accordion>
|
||||
<Accordion title="Docker ya da ters proxy MCP isteği başarısız oluyor">Eşlenen port ve varsa `DBX_PUBLIC_BASE_PATH` öneki dâhil herkese açık uç noktayı kullanın. `DBX_WEB_MCP_ALLOWED_HOSTS` değerini tam herkese açık `Host` yetkisine ayarlayın. Tarayıcı istemcileri ayrıca tam bir `DBX_WEB_MCP_ALLOWED_ORIGINS` girdisi gerektirir.</Accordion>
|
||||
<Accordion title="Bir Agent/JDBC veritabanı başlamıyor">DBX Sürücü Yöneticisi üzerinden uygun DBX agent'ını, JDBC sürücüsünü ve JRE'yi kurun ya da güncelleyin. Tescilli sürücüler yerel MCP paketine dâhil değildir.</Accordion>
|
||||
<Accordion title="Bir DuckDB bağlantısı başlamıyor">DBX Sürücü Yöneticisi üzerinden DuckDB sürücüsünü kurun ya da güncelleyin. Yerel MCP, DBX Web ve Docker; DuckDB motorunu gömmek yerine bağımsız sürücüyü kullanır.</Accordion>
|
||||
<Accordion title="better-sqlite3 ya da Node ABI hatası görüyorum">MCP `better-sqlite3` gerektirmez. `@dbx-app/mcp-server` paketini yükseltin; hata `@dbx-app/cli` paketinden geliyorsa ayrı bir paket olduğu için CLI kurulum gereksinimlerini izleyin.</Accordion>
|
||||
</Accordions>
|
||||
|
||||
## Gereksinimler
|
||||
|
||||
- Node.js 18.18.0 ya da üstü
|
||||
- En az bir bağlantı yapılandırılmış bir DBX kurulumu
|
||||
- Agent/JDBC bağlantıları için uygun DBX Agent, JDBC sürücüsü ve JRE
|
||||
- İki arayüz aracı kullanılırken çalışan DBX masaüstü uygulaması
|
||||
@@ -0,0 +1,51 @@
|
||||
{
|
||||
"title": "DBX Dokümanları",
|
||||
"pages": [
|
||||
"---Giriş---",
|
||||
"what-is-dbx",
|
||||
"getting-started",
|
||||
"databases",
|
||||
"changelog",
|
||||
"faq",
|
||||
"---Temel İş Akışları---",
|
||||
"query-editor",
|
||||
"data-grid",
|
||||
"schema-browser",
|
||||
"object-browser",
|
||||
"redis",
|
||||
"mongodb",
|
||||
"specialized-workspaces",
|
||||
"---Veri ve Şema---",
|
||||
"data-transfer",
|
||||
"table-structure",
|
||||
"schema-diff",
|
||||
"field-lineage",
|
||||
"database-docs",
|
||||
"table-import",
|
||||
"sql-file",
|
||||
"database-export",
|
||||
"database-backup",
|
||||
"sql-snippets",
|
||||
"sql-quick-actions",
|
||||
"---Yapay Zekâ ve Otomasyon---",
|
||||
"ai-assistant",
|
||||
"cli",
|
||||
"mcp",
|
||||
"web-api",
|
||||
"---Dağıtım ve Bağlantı---",
|
||||
"1panel",
|
||||
"ssh-tunnel",
|
||||
"plugins",
|
||||
"driver-management",
|
||||
"---Güvenlik ve Yapılandırma---",
|
||||
"production-safety",
|
||||
"connection-import",
|
||||
"config-export",
|
||||
"cloud-sync",
|
||||
"sql-formatter",
|
||||
"keyboard-shortcuts",
|
||||
"---Geliştirme ve Topluluk---",
|
||||
"database-lab",
|
||||
"contributing"
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,130 @@
|
||||
---
|
||||
title: MongoDB Çalışma Alanı
|
||||
description: MongoDB belgelerine gözatın, filtreleyin, düzenleyin ve kopyalayın; koleksiyonları, dizinleri ve GridFS'i yönetin.
|
||||
---
|
||||
|
||||
MongoDB çalışma alanı; belgeleri ilişkisel bir modele zorlamak yerine veritabanları, koleksiyonlar, belgeler, dizinler ve GridFS çevresinde düzenlenmiştir. Hem ızgara hem tam JSON görünümü sunar ve `ObjectId`, tarihler ile uzun tam sayılar gibi Genişletilmiş JSON türlerini korur.
|
||||
|
||||
## Bağlantılar ve Sürücüler
|
||||
|
||||
Standart bir `mongodb://` ya da `mongodb+srv://` bağlantı dizesi kullanın; gerektiğinde çoğaltma kümesi, kimlik doğrulama veritabanı, TLS ve diğer parametreleri URL'ye ekleyin. Atlas, çoğaltma kümeleri ve doğrudan kurulumlar aynı bağlantı giriş noktasını paylaşır.
|
||||
|
||||
DBX yerel MongoDB yolunu tercih eder. Sunucu ya da kimlik doğrulama protokolü eski sürücüyü gerektirdiğinde `mongodb-legacy` Agent'ını seçebilir ya da otomatik olarak ona dönebilirsiniz. Eski yol daha az yönetim ve değişiklik yeteneği sunabilir.
|
||||
|
||||
## Veritabanları ve Koleksiyonlar
|
||||
|
||||
Nesne ağacı şunları yapabilir:
|
||||
|
||||
- Veritabanlarını, koleksiyonları, dizinleri ve GridFS bucket'larını listelemek
|
||||
- Belge sayısını, boyutu ve kullanılabilir diğer koleksiyon istatistiklerini göstermek
|
||||
- Yazılabilir yerel yol kullanılırken koleksiyon oluşturmak, yeniden adlandırmak ya da silmek
|
||||
- Veritabanlarını, tek bir dizini ya da `_id_` dışındaki silinebilir tüm dizinleri silmek
|
||||
- Bir koleksiyondan belge gezginini ya da sorgu düzenleyicisini açmak
|
||||
|
||||
Yeniden adlandırma ve yıkıcı işlemler hedefi gösterip önizleme ister ve salt okunur ile üretim korumasına tabi kalır.
|
||||
|
||||
## Belgelere Gözatma ve Sayfalama
|
||||
|
||||
Belge gezgini şunları destekler:
|
||||
|
||||
- Tahmini toplamla sayfalı okuma
|
||||
- Izgara ve tam belge görünümleri
|
||||
- `address.city` gibi üst düzey ve iç içe alanlar
|
||||
- Aranabilir alan seçimi, gizli sütunlar ve kalıcı sütun düzeni
|
||||
- Hızlı filtreler ve çoklu alan koşulları
|
||||
- Veritabanı tarafında sıralama ve koleksiyon sorguları
|
||||
|
||||
MongoDB toplamları tahmin olabilir. Etkin biçimde değişen koleksiyonlarda gözatarken sayı ve son sayfa değişebilir.
|
||||
|
||||
## Filtreler ve Komutlar
|
||||
|
||||
Belge gezgininde alan filtreleri oluşturun ya da bir MongoDB sorgu sekmesinde kabuk biçemli komutlar kullanın. Tamamlama; koleksiyonları, alanları, sorgu işleçlerini, güncelleme işleçlerini, toplama aşamalarını ve imleç yöntemlerini önerebilir.
|
||||
|
||||
Örnekler:
|
||||
|
||||
```javascript
|
||||
db.users.find({ status: "active" }).sort({ createdAt: -1 })
|
||||
```
|
||||
|
||||
```javascript
|
||||
db.orders.aggregate([
|
||||
{ $match: { status: "paid" } },
|
||||
{ $group: { _id: "$customerId", total: { $sum: "$amount" } } }
|
||||
])
|
||||
```
|
||||
|
||||
MongoDB sorgu bağlamını değiştirmek için `use <veritabanı>` kullanın.
|
||||
|
||||
## Izgarada Düzenleme
|
||||
|
||||
Izgara yaygın alanları sütunlara açar ve şunları destekler:
|
||||
|
||||
- Üst düzey ya da iç içe alanları düzenleme
|
||||
- Alan ekleme ve kaldırma
|
||||
- Belge oluşturma, çoğaltma ve silme
|
||||
- Seçili belgeleri JSON, Markdown ya da MongoDB Shell ifadeleri olarak kopyalama
|
||||
- Yeni belge şablonu kopyalanırken `_id` alanını hariç tutma
|
||||
- Kaydetmeden önce bekleyen güncelleme ya da silme hedeflerini inceleme
|
||||
|
||||
Belge yapıları birbirinden çok farklı olan koleksiyonlar, gizli alanların gözden kaçmaması için tam belge görünümünde daha iyi ele alınır.
|
||||
|
||||
## JSON Belge Düzenleme
|
||||
|
||||
Belge ayrıntıları bir alan ağacı ile tam JSON kaynağı arasında geçiş yapabilir:
|
||||
|
||||
- Belge oluştururken tam JSON yapıştırın
|
||||
- Kaydetmeden önce JSON sözdizimini ve kök nesne yapısını doğrulayın
|
||||
- İç içe nesneleri ya da dizileri biçimlendirin, daraltın ve kopyalayın
|
||||
- `$oid`, `$date` ve `$numberLong` gibi Genişletilmiş JSON değerlerini koruyun
|
||||
- `_id` değerini yeni belgeyi oluşturup eskisini kaldırarak değiştirin
|
||||
- Tam JSON'u, belgenin tamamının değiştirilmesi anlamıyla kaydedin
|
||||
|
||||
<Callout type="warn">Tam belge değiştirme, nesnenin tamamını geri yazar. Özellikle eşzamanlı güncelleme alan koleksiyonlarda JSON'un korunması gereken her alanı içerdiğini doğrulayın.</Callout>
|
||||
|
||||
## Dizinler
|
||||
|
||||
Nesne ağacı ve koleksiyon yapısı; dizin adını, alanlarını, benzersizliğini ve diğer meta veriyi gösterebilir. Yerel sürücü destekliyorsa tek bir dizini silebilir, silinebilir tüm dizinleri kaldırabilir ya da dizinleri yapı işlemleriyle yönetebilirsiniz.
|
||||
|
||||
MongoDB `_id_` dizinini korur; parçalama ya da diğer sunucu kuralları ek dizinleri koruyabilir. Asıl kaynak sunucunun yanıtıdır.
|
||||
|
||||
## GridFS
|
||||
|
||||
GridFS çalışma alanı bucket'ları ve dosyaları yönetir:
|
||||
|
||||
- Bucket'lara gözatma, oluşturma ve silme
|
||||
- Dosya yükleme, indirme, önizleme ve silme
|
||||
- Dosya adını, boyutunu, yükleme zamanını, parçalarını ve meta verisini inceleme
|
||||
- Dosyaları alanlara göre filtreleme ve sıralama
|
||||
- Dosya listelerini ya da meta veriyi dışa aktarma
|
||||
|
||||
Bir bucket'ı silmek dosyalarını ve parçalarını kaldırır. Üretimde bunu yapmadan önce bucket adını ve yedeği doğrulayın.
|
||||
|
||||
## Kopyalama ve Dışa Aktarma
|
||||
|
||||
- Geçerli belgeyi, seçili belgeleri ya da alan değerlerini kopyalayın
|
||||
- Düz JSON ya da tür bilgisini koruyan Genişletilmiş JSON olarak kopyalayın
|
||||
- Izgara sonucundan çoklu biçim kopyalama ve dışa aktarma kullanın
|
||||
- Bir MongoDB `find` sonucunu dışa aktarma; yalnızca görüntülenen sayfayla sınırlı kalmaz, sorgu ve dışa aktarma sınırlarına tabi olarak sonucun tamamını kapsar
|
||||
|
||||
Büyük bir koleksiyonu dışa aktarmadan önce filtreleri daraltın; sunucu imleç kullanımını, ağ aktarımını ve yerel dosya boyutunu izleyin.
|
||||
|
||||
## Güvenlik ve Uyumluluk Sınırları
|
||||
|
||||
- Salt okunur bağlantılar belge, alan, dizin, koleksiyon, veritabanı ve GridFS değişikliklerini engeller
|
||||
- Üretim koruması, tanınan yazmalardan önce onay ister
|
||||
- MCP Veri okuma/yazma yalnızca kapsamı belirli MongoDB değişikliklerine izin verir; belirsiz ya da fiilen sınırsız filtreler yüksek risklidir
|
||||
- Eski Agent, yerel koleksiyon ve dizin yönetimini desteklemeyebilir
|
||||
- Atlas yetkileri, kimlik doğrulama veritabanı, TLS ve IP izin listeleri MongoDB tarafından uygulanır
|
||||
- Sayfalanmış toplamlar tahmin olabilir ve güçlü tutarlılıkta sayılar olarak görülmemelidir
|
||||
|
||||
<Cards>
|
||||
<Card title="Üretim yazmalarını koruyun" href="/tr/docs/production-safety">
|
||||
MongoDB filtre kapsamını, salt okunur bağlantıları ve MCP politikasını inceleyin.
|
||||
</Card>
|
||||
<Card title="Bağlantılar ve sürücüler" href="/tr/docs/driver-management">
|
||||
Yerel ve eski Agent'ları yönetin, sürücü başlatma sorunlarını giderin.
|
||||
</Card>
|
||||
<Card title="Özel çalışma alanları" href="/tr/docs/specialized-workspaces">
|
||||
Redis, arama, vektör, HBase, mesaj kuyruğu ve yapılandırma araçlarını inceleyin.
|
||||
</Card>
|
||||
</Cards>
|
||||
@@ -0,0 +1,102 @@
|
||||
---
|
||||
title: Nesne Gezgini
|
||||
description: Veritabanı nesnelerini, istatistiklerini, kaynağını ve toplu işlemlerini incelemek için liste veya ızgara görünümünü kullanın.
|
||||
---
|
||||
|
||||
Nesne gezgini, etkin veritabanındaki ya da şemadaki nesneleri aranabilir tek bir listede veya ızgarada toplar. Bir veritabanında çok sayıda nesne olduğunda, türe veya meta veriye göre filtreleme gerektiğinde ya da birden çok nesneye aynı işlem uygulanacağında kullanışlıdır.
|
||||
|
||||
## Ne Zaman Kullanılır
|
||||
|
||||
- Çok sayıda tabloyu, görünümü, yordamı, işlevi, diziyi ve diğer nesneleri tek sayfada görüntüleyin
|
||||
- Ada, türe, şemaya, açıklamaya veya kullanılabilir istatistiklere göre filtreleyin
|
||||
- Tablo boyutunu, satır sayısını, oluşturma/güncelleme zamanını ve sürücünün sağladığı diğer meta veriyi karşılaştırın
|
||||
- Açma, kopyalama, dışa aktarma, silme veya diğer toplu işlemler için nesneleri çoklu seçin
|
||||
- Derin bir nesne ağacını genişletmeden DDL veya kaynağı inceleyin
|
||||
|
||||
## Gezgini Açma
|
||||
|
||||
**Nesne Gezgini**'ni bir bağlantı, veritabanı ya da şema bağlam menüsünden açın. DBX; katalog, veritabanı ve şema kapsamını seçili düğümden türetir.
|
||||
|
||||
Gezgin ana sekme ya da yan panel olarak açılabilir. Yan panel, geçerli sorgu veya veri sekmesini görünür tutarken nesneleri incelemek istediğinizde kullanışlıdır.
|
||||
|
||||
## Görünümler ve Filtreler
|
||||
|
||||
| Özellik | Davranış |
|
||||
| --- | --- |
|
||||
| Liste görünümü | Ad, tür, şema, açıklama, satır sayısı, boyut ve ilgili sütunlar için en uygunudur |
|
||||
| Izgara görünümü | Nesne kartlarını ve temel özetleri taramak için en uygunudur |
|
||||
| Nesne türü filtresi | Varsayılan olarak tabloları önceler; görünümlere, yordamlara ve diğer türlere geçebilir |
|
||||
| Arama | Nesne adına, şemaya, türe ve seçili meta veriye göre filtreler |
|
||||
| Sütun denetimleri | Sütunları yeniden boyutlandırın ve gösterin; görünüm durumu korunabilir |
|
||||
|
||||
İstatistikler yalnızca sürücü bunları güvenilir biçimde alabildiğinde görünür. Büyük veritabanlarında satır sayıları ve boyutlar ek maliyet getirebilir, bu yüzden gerektiğinde ihtiyaç duymadığınız istatistikleri kapatın.
|
||||
|
||||
## Nesne İşlemleri
|
||||
|
||||
Türe uygun bir görünüm açmak için bir nesneye tıklayın veya çift tıklayın:
|
||||
|
||||
- Tablo veya görünüm verisi
|
||||
- Tablo yapısı, sütunlar, dizinler, yabancı anahtarlar, tetikleyiciler ve DDL
|
||||
- Görünümlerin, yordamların, işlevlerin, tetikleyicilerin ve diğer nesnelerin kaynağı
|
||||
- Veritabanına özgü yönetim arayüzleri
|
||||
|
||||
Bağlam menüleri ayrıca şunları sunabilir:
|
||||
|
||||
- Adı, nitelikli adı veya DDL'i kopyalama
|
||||
- Sorgu SQL'i üretme
|
||||
- İçe aktarma, dışa aktarma, aktarım ve şema giriş noktaları
|
||||
- ER diyagramını, alan soy ağacını veya şema karşılaştırmasını açma
|
||||
- Nesneyi yeniden adlandırma, truncate etme, silme veya yönetme
|
||||
|
||||
Kullanılabilir işlemler; veritabanı yeteneklerine, bağlantının salt okunur durumuna ve hesap yetkilerine bağlıdır.
|
||||
|
||||
## Çoklu Seçim ve Toplu İşlemler
|
||||
|
||||
Birden çok nesne seçmek için onay kutularını kullanın. Veritabanına bağlı olarak toplu işlemler şunları içerebilir:
|
||||
|
||||
- Birden çok nesne adını açma veya kopyalama
|
||||
- Toplu dışa aktarma ya da SQL üretme
|
||||
- Seçili tabloları silme, boşaltma veya truncate etme
|
||||
- Seçili dizinleri silme
|
||||
- PostgreSQL ve benzeri veritabanları için cascade farkındalıklı toplu işlemler
|
||||
|
||||
<Callout type="warn">Toplu silme, boşaltma ve truncate işlemleri çok sayıda nesneyi etkileyebilir. Üretimde önce seçimi, üretilen SQL'i, yedekleri ve bağımlılıkları doğrulayın.</Callout>
|
||||
|
||||
## DDL ve Kaynak
|
||||
|
||||
- **DDL'i Görüntüle**, veritabanının veya sürücünün döndürdüğü tanımları tercih eder
|
||||
- **Nesne kaynağı**; görünümleri, yordamları, işlevleri, tetikleyicileri ve diğer düzenlenebilir nesneleri kapsar
|
||||
- Kaynak görünümleri aramayı destekler ve veritabanı ile nesne izin verdiğinde düzenleyicide açılabilir
|
||||
- Kaynağı kaydetmek veya DDL çalıştırmak; salt okunur, üretim ve tehlikeli işlem denetimlerinden geçer
|
||||
|
||||
DBX, etkin sürücüden alınabilen tanımı gösterir. Biçimlendirme, yetki/açıklama/depolama özellikleri ve doğrudan düzenleme desteği veritabanına göre değişir.
|
||||
|
||||
## Nesne Ağacı ile Nesne Gezgini
|
||||
|
||||
| Nesne ağacı | Nesne gezgini |
|
||||
| --- | --- |
|
||||
| Hiyerarşi, sabitleme ve sık gezinme için uygundur | Çok sayıda eş düzeydeki nesneyi filtrelemek ve karşılaştırmak için uygundur |
|
||||
| Sütunları ve alt düğümleri genişletir | Özetler için sütunlar, kartlar ve bir yan panel kullanır |
|
||||
| Bağlam menülerini ve sürükle-bırakı öne çıkarır | Aramayı, çoklu seçimi ve toplu işlemleri öne çıkarır |
|
||||
|
||||
Her iki yüzey de aynı nesne kimliğini ve meta verisini paylaşır. Bir nesneyi gezginden açın, gerektiğinde aynı düğümü nesne ağacında gösterin.
|
||||
|
||||
## Sınırlar
|
||||
|
||||
- Nesne türleri ve istatistik sütunları veritabanına göre değişir
|
||||
- Satır sayıları ve boyutlar tahmin ya da önbelleğe alınmış değerler olabilir
|
||||
- Sistem nesnelerinin görünürlüğü, görünür şema ve sistem şeması ayarlarına bağlıdır
|
||||
- Salt okunur bağlantılar nesneleri, DDL'i ve kaynağı inceleyebilir, ancak değişiklik giriş noktaları devre dışıdır veya reddedilir
|
||||
- Sürücüler, ilk erişimde büyük nesne kümelerini gruplar hâlinde yükleyebilir
|
||||
|
||||
<Cards>
|
||||
<Card title="Nesne ağacı" href="/tr/docs/schema-browser">
|
||||
Hiyerarşik gezinmeyi, sabitlemeleri, sürükle-bırakı ve veritabanına özgü bağlam menülerini kullanın.
|
||||
</Card>
|
||||
<Card title="Tablo yapısı" href="/tr/docs/table-structure">
|
||||
Sütunları ve dizinleri görsel olarak düzenleyin, DDL'i inceleyin.
|
||||
</Card>
|
||||
<Card title="Alan soy ağacı" href="/tr/docs/field-lineage">
|
||||
Yabancı anahtarlardan, görünümlerden ve sorgu geçmişinden ilişkileri izleyin.
|
||||
</Card>
|
||||
</Cards>
|
||||
@@ -0,0 +1,304 @@
|
||||
---
|
||||
title: JDBC Eklentisi
|
||||
description: DBX JDBC eklentisini kurun, üreticinin JDBC sürücü JAR dosyalarını içe aktarın ve JDBC bağlantıları oluşturun.
|
||||
---
|
||||
|
||||
DBX varsayılan olarak yerel Rust veritabanı sürücülerini kullanır. JDBC isteğe bağlıdır: DBX'in yerel olarak desteklemediği bir veritabanına bağlanmanız ya da özellikle üreticinin JDBC sürücüsüne ihtiyacınız olduğunda JDBC eklentisini kurun.
|
||||
|
||||
<Callout type="info">JDBC eklentisi ana DBX uygulamasıyla birlikte gelmez ve üreticinin JDBC sürücülerini içermez. Önce DBX JDBC eklentisini kurun, ardından veritabanı üreticisinin JDBC sürücü JAR dosyasını içe aktarın.</Callout>
|
||||
|
||||
<Callout type="warn">Başarılı bir JDBC bağlantısı, yerel bir DBX profilinin her yeteneğini kapsadığı anlamına gelmez. Nesne ağaçları, kaynak tanımları, yapı düzenleme, içe aktarma, aktarım ve yönetim görünümleri; JDBC meta verisine, algılanan geçerli veritabanı türüne ve sürücü yetenek bildirimine bağlıdır. Bilinmeyen motorlar genel JDBC yetenekleriyle çalışır.</Callout>
|
||||
|
||||
Masaüstü, JAR dosyalarını yerel makineden içe aktarır. Docker/Web, JAR dosyalarını ve eklentiyi sunucu veri dizinine kurar; tarayıcının bulunduğu makinedeki yollar sunucu tarafından doğrudan okunamaz ve yapılandırma taşıması sürücü dosyalarını otomatik taşımaz.
|
||||
|
||||
## JDBC Ne Zaman Kullanılır
|
||||
|
||||
Önce MySQL, PostgreSQL, SQLite, Redis, MongoDB, DuckDB, ClickHouse, SQL Server, Oracle, DM ve GaussDB gibi yerleşik DBX veritabanı türlerini tercih edin.
|
||||
|
||||
JDBC'yi şu durumlarda kullanın:
|
||||
|
||||
- Hedef veritabanı DBX'e yerleşik değilse
|
||||
- Yerel sürücü, üreticiye özgü bir davranışı kapsamıyorsa
|
||||
- Kurumunuz üreticinin JDBC sürücüsünü standart olarak kullanıyorsa
|
||||
- Dameng DM, H2, DB2, Snowflake ya da SQLite gibi veritabanlarına JDBC üzerinden bağlanmak istiyorsanız
|
||||
|
||||
## Gereksinimler
|
||||
|
||||
| Öğe | Zorunlu | Notlar |
|
||||
| ---------------------- | ---------------: | -------------------------------------------------------------------------------------- |
|
||||
| DBX JDBC eklentisi | Evet | DBX ayarlarından kurulur; DBX'in JDBC çağırmasını sağlar |
|
||||
| Java çalışma zamanı | Evet | Yerel makine `java` çalıştırabilmelidir; Java 17 ya da üstü önerilir |
|
||||
| Üreticinin JDBC sürücü JAR'ı | Evet | Örneğin PostgreSQL, MySQL, Dameng DM, Oracle, H2, SQLite ya da başka bir üretici sürücüsü |
|
||||
| JDBC URL'si | Evet | URL genellikle sunucu, port, veritabanı adı ve parametreleri içerir |
|
||||
| Kullanıcı adı/parola | Duruma göre | Dosya veritabanları ya da bazı kimlik doğrulama modları bunlara ihtiyaç duymayabilir |
|
||||
| Sürücü sınıfı | Genellikle isteğe bağlı | Modern JDBC sürücülerinin çoğu kendini kaydeder; yalnızca otomatik keşif başarısız olduğunda girin |
|
||||
|
||||
## 1. Adım: Java Kurun
|
||||
|
||||
JDBC eklentisi bir Java programıdır, bu yüzden makinenizde bir Java çalışma zamanı gerekir. Kurulumdan sonra bir terminalde doğrulayın:
|
||||
|
||||
```bash
|
||||
java -version
|
||||
```
|
||||
|
||||
Komut bulunamıyorsa önce Java kurun. DBX önce `JAVA_HOME` değişkenine, sonra yaygın sistem konumlarına ve `PATH` üzerindeki `java` komutuna bakar.
|
||||
|
||||
<Tabs groupId="java-install" items={['macOS', 'Windows', 'Linux']}>
|
||||
<Tab value="macOS">
|
||||
Homebrew ile kurun:
|
||||
|
||||
```bash
|
||||
brew install openjdk
|
||||
```
|
||||
|
||||
`java -version` hâlâ çalışmıyorsa `PATH` ya da `JAVA_HOME` ayarını yapılandırmak için Homebrew çıktısını izleyin.
|
||||
|
||||
</Tab>
|
||||
<Tab value="Windows">
|
||||
Temurin, Oracle JDK ya da Microsoft Build of OpenJDK kurun. Kurulumdan sonra DBX'i yeniden başlatın ve doğrulayın:
|
||||
|
||||
```powershell
|
||||
java -version
|
||||
```
|
||||
|
||||
</Tab>
|
||||
<Tab value="Linux">
|
||||
Debian / Ubuntu:
|
||||
|
||||
```bash
|
||||
sudo apt install openjdk-17-jre
|
||||
```
|
||||
|
||||
Fedora:
|
||||
|
||||
```bash
|
||||
sudo dnf install java-17-openjdk
|
||||
```
|
||||
|
||||
</Tab>
|
||||
</Tabs>
|
||||
|
||||
## 2. Adım: DBX JDBC Eklentisini Kurun
|
||||
|
||||
DBX Masaüstü'nde:
|
||||
|
||||
1. **Ayarlar**'ı açın
|
||||
2. **JDBC Sürücüleri** bölümüne gidin
|
||||
3. **JDBC Eklentisini Kur**'a tıklayın
|
||||
|
||||
Kurulumdan sonra DBX şuna benzer bir durum gösterir:
|
||||
|
||||
```text
|
||||
Kurulu: v0.1.0
|
||||
```
|
||||
|
||||
DBX JDBC eklentisinin kendi sürümü vardır. DBX uygulama sürümüyle eşleşmesi gerekmez. DBX'i güncellemek JDBC eklentisini otomatik kurmaz ve eklentiyi elle kaldırırsanız DBX bunu arkanızdan yeniden kurmaz.
|
||||
|
||||
## 3. Adım: Üreticinin JDBC Sürücüsünü İndirin
|
||||
|
||||
DBX üreticilerin JDBC sürücülerini otomatik indirmez. `.jar` dosyasını veritabanı üreticisinin web sitesinden ya da bir Maven deposundan indirin.
|
||||
|
||||
Yaygın örnekler:
|
||||
|
||||
| Veritabanı | Yaygın Maven Dosyası | Sürücü Sınıfı | JDBC URL Örneği |
|
||||
| ---------- | -------------------------------------- | ---------------------------------------------- | ----------------------------------------------------------------- |
|
||||
| PostgreSQL | `org.postgresql:postgresql` | `org.postgresql.Driver` | `jdbc:postgresql://localhost:5432/postgres` |
|
||||
| MySQL | `com.mysql:mysql-connector-j` | `com.mysql.cj.jdbc.Driver` | `jdbc:mysql://localhost:3306/test` |
|
||||
| MariaDB | `org.mariadb.jdbc:mariadb-java-client` | `org.mariadb.jdbc.Driver` | `jdbc:mariadb://localhost:3306/test` |
|
||||
| Dameng DM | `com.dameng:DmJdbcDriver8` | `dm.jdbc.driver.DmDriver` | `jdbc:dm://localhost:5236` |
|
||||
| SQL Server | `com.microsoft.sqlserver:mssql-jdbc` | `com.microsoft.sqlserver.jdbc.SQLServerDriver` | `jdbc:sqlserver://localhost:1433;databaseName=master` |
|
||||
| Oracle | `com.oracle.database.jdbc:ojdbc11` | `oracle.jdbc.OracleDriver` | `jdbc:oracle:thin:@//localhost:1521/ORCLPDB1` |
|
||||
| H2 | `com.h2database:h2` | `org.h2.Driver` | `jdbc:h2:/tmp/dbx-h2-test` |
|
||||
| SQLite | `org.xerial:sqlite-jdbc` | `org.sqlite.JDBC` | `jdbc:sqlite:/Users/me/test.db` |
|
||||
| ClickHouse | `com.clickhouse:clickhouse-jdbc` | `com.clickhouse.jdbc.ClickHouseDriver` | `jdbc:clickhouse://localhost:8123/default` |
|
||||
| DB2 | `com.ibm.db2:jcc` | `com.ibm.db2.jcc.DB2Driver` | `jdbc:db2://localhost:50000/SAMPLE` |
|
||||
| Snowflake | `net.snowflake:snowflake-jdbc` | `net.snowflake.client.jdbc.SnowflakeDriver` | `jdbc:snowflake://account.region.snowflakecomputing.com/?db=DEMO` |
|
||||
|
||||
<Callout type="warn">JDBC URL parametreleri veritabanına ve sürücü sürümüne göre değişir. Üreticinin belgelerini izleyin. Bir sürücü birden çok JAR'a bağlıysa gereken tüm JAR yollarını içe aktarın ya da listeleyin.</Callout>
|
||||
|
||||
<Callout type="info">Oracle için `com.oracle.database.nls:orai18n` paketini de `ojdbc` ile aynı sürümde içe aktarın. Temel ojdbc jar dosyası `ZHS16GBK` gibi çok baytlı karakter kümelerini dönüştüremez, bu yüzden onsuz tablo ve sütun açıklamaları yüklenemez. `com.oracle.database.jdbc:ojdbc*` paketinin Maven kurulumları uygun `orai18n` jar dosyasını otomatik indirir. DBX'in yerleşik Oracle bağlantısı (varsayılan sürücü) bu karakter kümelerini ek bir JAR olmadan destekler.</Callout>
|
||||
|
||||
## 4. Adım: JDBC Sürücü JAR'larını İçe Aktarın
|
||||
|
||||
DBX'te:
|
||||
|
||||
1. **Ayarlar**'ı açın
|
||||
2. **JDBC Sürücüleri** bölümüne gidin
|
||||
3. **JDBC sürücü JAR'ları** bölümünde indirdiğiniz `.jar` dosyasını seçin
|
||||
|
||||
Ayrıca yerel bir JAR yolunu yapıştırıp içe aktarabilirsiniz. DBX, içe aktarılan JAR dosyalarını uygulama veri dizinine kopyalar ve yeni JDBC bağlantıları bunları sürücü açılır listesinden seçebilir.
|
||||
|
||||
Bir sürücüyü içe aktarmak yalnızca yerel dosyaları kopyalar. Sistem Java kurulumunuzu değiştirmez, veritabanı istemcileri kurmaz ve sürücüyü hiçbir yere yüklemez.
|
||||
|
||||
## 5. Adım: Bir JDBC Bağlantısı Oluşturun
|
||||
|
||||
Yeni bir bağlantı oluşturup **JDBC**'yi seçin.
|
||||
|
||||
| Alan | Ne girilir |
|
||||
| ----------------------- | ---------------------------------------------------------------------- |
|
||||
| Ad | `H2 Test`, `DM Dev` ya da `Oracle Dev` gibi görünen ad |
|
||||
| JDBC URL'si | Tam JDBC URL'si, örneğin `jdbc:postgresql://localhost:5432/postgres` |
|
||||
| Kullanıcı adı | Veritabanı kullanıcı adı; gerekmiyorsa boş bırakın |
|
||||
| Parola | Veritabanı parolası; gerekmiyorsa boş bırakın |
|
||||
| Sürücü Sınıfı (isteğe bağlı) | Yalnızca otomatik keşif başarısız olursa girin, örneğin `org.postgresql.Driver` |
|
||||
| Sürücü JAR'ları | Açılır listeden içe aktarılmış bir sürücüyü seçin ya da yerel JAR yollarını girin |
|
||||
|
||||
JDBC URL'leri genellikle sunucuyu, portu ve veritabanı adını zaten içerir, bu yüzden JDBC formu ayrı sunucu ve port alanları göstermez.
|
||||
|
||||
Formu doldurduktan sonra **Test Et**'e tıklayın. Test başarılıysa **Kaydet**'e tıklayın; bağlantı kenar çubuğunda görünür.
|
||||
|
||||
## Örnek: Dameng DM
|
||||
|
||||
DBX'te yerleşik bir DM ODBC bağlantı türü zaten var. Resmî Dameng JDBC sürücüsünü tercih ederseniz JDBC eklentisini kullanın.
|
||||
|
||||
1. DBX JDBC eklentisini kurun
|
||||
2. Java'yı kurun
|
||||
3. Dameng JDBC sürücü JAR dosyasını DM kurulum dizininizden ya da Maven deposundan alın, örneğin `DmJdbcDriver8.jar` veya `DmJdbcDriver11.jar`
|
||||
4. JAR dosyasını **Ayarlar → JDBC Sürücüleri** bölümünde içe aktarın
|
||||
5. Yeni bir bağlantı oluşturup **JDBC**'yi seçin
|
||||
6. Şunları doldurun:
|
||||
|
||||
| Alan | Değer |
|
||||
| ----------------------- | ------------------------------- |
|
||||
| JDBC URL'si | `jdbc:dm://127.0.0.1:5236` |
|
||||
| Kullanıcı adı | `SYSDBA` |
|
||||
| Parola | DM parolanız |
|
||||
| Sürücü Sınıfı (isteğe bağlı) | `dm.jdbc.driver.DmDriver` |
|
||||
| Sürücü JAR'ları | İçe aktarılan DM JDBC JAR'ını seçin |
|
||||
|
||||
DM için `dm.jdbc.driver.DmDriver` değerini girmeniz önerilir; böylece bağlantı otomatik sürücü keşfi meta verisine bağlı kalmaz.
|
||||
|
||||
## Örnek: H2 Yerel Dosya Veritabanı
|
||||
|
||||
H2, JDBC akışını doğrulamak için iyi bir yoldur.
|
||||
|
||||
1. DBX JDBC eklentisini kurun
|
||||
2. H2 JDBC sürücü JAR dosyasını indirin
|
||||
3. Ayarlarda `h2-*.jar` dosyasını içe aktarın
|
||||
4. Yeni bir bağlantı oluşturup **JDBC**'yi seçin
|
||||
5. Şunları doldurun:
|
||||
|
||||
| Alan | Değer |
|
||||
| ----------------------- | -------------------------- |
|
||||
| JDBC URL'si | `jdbc:h2:/tmp/dbx-h2-demo` |
|
||||
| Kullanıcı adı | `sa` |
|
||||
| Parola | Boş bırakın |
|
||||
| Sürücü Sınıfı (isteğe bağlı) | `org.h2.Driver` |
|
||||
| Sürücü JAR'ları | İçe aktarılan H2 JAR'ını seçin |
|
||||
|
||||
Kaydettikten sonra şunu deneyin:
|
||||
|
||||
```sql
|
||||
CREATE TABLE users (
|
||||
id INT PRIMARY KEY,
|
||||
name VARCHAR(100)
|
||||
);
|
||||
|
||||
INSERT INTO users VALUES (1, 'Alice');
|
||||
|
||||
SELECT * FROM users;
|
||||
```
|
||||
|
||||
## Örnek: PostgreSQL
|
||||
|
||||
1. PostgreSQL JDBC sürücü JAR dosyasını indirin
|
||||
2. Ayarlarda içe aktarın
|
||||
3. Yeni bir JDBC bağlantısı oluşturun
|
||||
4. Şunları doldurun:
|
||||
|
||||
| Alan | Değer |
|
||||
| ----------------------- | ------------------------------------------- |
|
||||
| JDBC URL'si | `jdbc:postgresql://localhost:5432/postgres` |
|
||||
| Kullanıcı adı | `postgres` |
|
||||
| Parola | PostgreSQL parolanız |
|
||||
| Sürücü Sınıfı (isteğe bağlı) | `org.postgresql.Driver` |
|
||||
| Sürücü JAR'ları | İçe aktarılan PostgreSQL JAR'ını seçin |
|
||||
|
||||
SSL gerekiyorsa JDBC URL'sine parametre ekleyin:
|
||||
|
||||
```text
|
||||
jdbc:postgresql://localhost:5432/postgres?sslmode=require
|
||||
```
|
||||
|
||||
## Sorun Giderme
|
||||
|
||||
### JDBC eklentisi kurulumu başarısız oluyor
|
||||
|
||||
Ağınızın DBX GitHub Releases adresine erişip erişemediğini denetleyin. DBX proxy URL'lerini ve özgün GitHub URL'sini dener, ancak herkese açık proxy'ler yine de erişilemez olabilir. GitHub engelliyse başka bir ağ deneyin.
|
||||
|
||||
### Java bulunamıyor
|
||||
|
||||
Bir terminalde doğrulayın:
|
||||
|
||||
```bash
|
||||
java -version
|
||||
```
|
||||
|
||||
Terminal çalışıyor ama DBX çalışmıyorsa DBX'i yeniden başlatın. macOS'ta Java yalnızca bir Homebrew yolunda kuruluysa `JAVA_HOME` ayarını yapılandırın.
|
||||
|
||||
### `No JDBC driver was discovered`
|
||||
|
||||
Sürücü JAR'ı otomatik keşfedilemedi. Sürücü sınıfını elle girin, örneğin:
|
||||
|
||||
```text
|
||||
org.postgresql.Driver
|
||||
com.mysql.cj.jdbc.Driver
|
||||
dm.jdbc.driver.DmDriver
|
||||
oracle.jdbc.OracleDriver
|
||||
```
|
||||
|
||||
### `No suitable driver`
|
||||
|
||||
JDBC URL'si ile sürücü büyük olasılıkla uyuşmuyor. Şunları denetleyin:
|
||||
|
||||
- Seçili sürücü JAR'ı hedef veritabanına ait mi
|
||||
- JDBC URL öneki doğru mu; örneğin `jdbc:postgresql:`, `jdbc:mysql:`, `jdbc:dm:` ya da `jdbc:oracle:`
|
||||
- Sürücü sınıfının elle girilmesi gerekiyor olabilir
|
||||
|
||||
### Bağlantı çalışıyor ama tablolar görünmüyor
|
||||
|
||||
JDBC meta verisi; veritabanı sürücüsüne ve hesap yetkilerine bağlıdır. Şunları denetleyin:
|
||||
|
||||
- Hesap meta veriyi okuyabiliyor mu
|
||||
- JDBC URL'si beklenen veritabanını ya da şemayı gösteriyor mu
|
||||
- Tablolar farklı bir şemada olabilir
|
||||
- Sürücü, beklediğiniz nesneler için `DatabaseMetaData` destekliyor mu
|
||||
|
||||
### Bir sürücü birden çok JAR gerektiriyor
|
||||
|
||||
**Sürücü JAR'ları** alanına her satıra bir JAR yolu girin ya da gereken her JAR'ı ayarlarda içe aktarıp kalan yolları elle ekleyin.
|
||||
|
||||
## Kaldırma
|
||||
|
||||
**Ayarlar → JDBC Sürücüleri** bölümünde **Kaldır**'a tıklayın. DBX yalnızca JDBC eklentisini kaldırır, içe aktardığınız üretici sürücü JAR'larını korur; böylece eklentiyi daha sonra yeniden kurarsanız bunları tekrar içe aktarmanız gerekmez.
|
||||
|
||||
## Geliştiriciler için: Eklenti Protokolü
|
||||
|
||||
DBX, eklenti çalıştırılabilirini başlatır ve stdin/stdout üzerinden JSON Lines istek ve yanıtları alışverişi yapar. Bir bağlantı kurulduktan sonra DBX, o bağlantıdaki sorgular ve meta veri istekleri için aynı eklenti işlemini yeniden kullanır.
|
||||
|
||||
Eklenti dizini bir `manifest.json` dosyası içermelidir:
|
||||
|
||||
```json
|
||||
{
|
||||
"id": "jdbc",
|
||||
"name": "DBX JDBC Plugin",
|
||||
"version": "0.1.0",
|
||||
"protocol_version": 1,
|
||||
"description": "Adds JDBC driver support.",
|
||||
"executable": "bin/dbx-jdbc-plugin",
|
||||
"drivers": [
|
||||
{
|
||||
"id": "jdbc",
|
||||
"label": "JDBC",
|
||||
"kind": "external",
|
||||
"database_type": "jdbc"
|
||||
}
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
Geçerli DBX uygulaması eklenti protokolü sürüm `1` destekler. DBX, bildiriminde farklı bir protokol sürümü belirten bir eklentiyi reddeder ve her eklenti isteğinin 30 saniyelik bir zaman aşımı vardır; böylece takılan bir sürücü işlemi uygulamayı süresiz engellemez.
|
||||
|
||||
İlk protokol; `testConnection`, `connect`, `executeQuery`, `listDatabases`, `listSchemas`, `listTables` ve `getColumns` işlemlerini destekler.
|
||||
|
||||
<Callout type="info">JDBC bağlantı yapılandırmaları `jdbc_driver_class` ve `jdbc_driver_paths` değerlerini saklar. Bir sürücü birkaç JAR gerektiriyorsa tüm yolları bağlantıya ekli tutun; böylece meta veri ve sorgu çağrıları aynı classpath'i kullanır.</Callout>
|
||||
@@ -0,0 +1,165 @@
|
||||
---
|
||||
title: Üretim ve Yazma Güvenliği
|
||||
description: Salt okunur bağlantılar, üretim koruması, SQL incelemesi, yapay zekâ sınırları ve MCP politikalarıyla veritabanı hatalarını azaltın.
|
||||
---
|
||||
|
||||
DBX yazma güvenliğini bağımsız katmanlara ayırır: veritabanı yetkileri, bağlantının salt okunur durumu, üretim koruması, tehlikeli işlem onayı, yapay zekâ yürütme kuralları ve MCP politikası. Bunlar birlikte hataları azaltır, ancak veritabanı yetkilerinin, denetimin, yedeklerin ya da değişiklik onaylarının yerini almaz.
|
||||
|
||||
<Callout type="warn">Hiçbir istemci tarafı önlem, veritabanı yetkilerinin yerini almaz. Üretim sistemleri yine en az yetkili hesaplar, veritabanı denetimi, güvenilir yedekler ve ekip onayı iş akışları kullanmalıdır.</Callout>
|
||||
|
||||
## Koruma Katmanları
|
||||
|
||||
| Katman | Amacı | Üst düzey bir araç bunu atlayabilir mi? |
|
||||
| --- | --- | --- |
|
||||
| Veritabanı hesabı yetkileri | Hangi nesnelerin okunabileceğine, değiştirilebileceğine ya da yönetilebileceğine son olarak veritabanı sunucusu karar verir | Hayır |
|
||||
| Bağlantı salt okunur | DBX çekirdek sorgu yolundaki tanınan yazmaları engeller ve birçok değişiklik giriş noktasını devre dışı bırakır | Yapay zekâ, CLI ve MCP bunu genişletemez. Tezgâh, açık onaydan sonra yazmaları 1 ya da 5 dakikalığına açabilir; kaydedilmiş ayar açık kalır |
|
||||
| Üretim koruması | Tüm bir bağlantıyı ya da seçili veritabanlarını üretim olarak işaretler ve yazmalar için yeni bir onay ister | Normal onay ve Agent yetkisi bunu kalıcı olarak atlayamaz |
|
||||
| Tehlikeli SQL/komut onayı | DDL, sınırsız değişiklikler, riskli Redis komutları ve benzeri işlemler için uyarı ekler ya da engeller | Kendi ayarıyla denetlenir, ancak salt okunur ya da üretim korumasını asla genişletmez |
|
||||
| Genel MCP politikası | Bir bağlantı izin listesi ve üç yürütme moduyla tüm MCP istemcilerini kısıtlar | İstemci ortam değişkenleri, kaydedilmiş merkezî politikayı genişletemez |
|
||||
|
||||
## Salt Okunur Bağlantı Yapılandırma
|
||||
|
||||
Bir bağlantı oluştururken ya da düzenlerken **Salt okunur bağlantı** seçeneğini etkinleştirin. DBX bu bayrağı çekirdek sorgu yürütmesine ve veritabanına özgü işlemlere taşır.
|
||||
|
||||
Salt okunur bağlantılar şunlar için kullanışlıdır:
|
||||
|
||||
- Üretim sorgu hesapları ve ortak sorun giderme bağlantıları
|
||||
- Yalnızca şemalara, satırlara, belgelere, anahtarlara ya da izleme verisine gözatması gereken iş akışları
|
||||
- Veri değişikliğinin mümkün olmaması gereken, CLI'ye, MCP'ye ya da yapay zekâya açılan bağlantılar
|
||||
|
||||
Salt okunur koruma yalnızca gizlenmiş bir düğme değildir. DBX çekirdek yürütme yolundaki tanınan SQL yazmalarını reddeder; MCP, MongoDB, Redis, mesaj kuyrukları ve birçok özel çalışma alanı bağlantı durumunu yeniden denetler.
|
||||
|
||||
### Geçici yazma kilidi açma
|
||||
|
||||
Masaüstü ve web tezgâhında salt okunur bir bağlantı yazmaları sessizce yok saymaz. Değişiklik yapan bir işlem bir onay iletişim kutusu açar. **1 dakika** ya da **5 dakika** seçin (varsayılan 1 dakika). Onayladıktan sonra:
|
||||
|
||||
- Süre bitene kadar o bağlantıdaki yazmalar yeniden sorulmadan başarılı olur
|
||||
- Kalan süre salt okunur denetiminde gösterilir; **Yazmaları şimdi kilitle** pencereyi erken kapatır
|
||||
- Kaydedilmiş **Salt okunur bağlantı** ayarı açık kalır
|
||||
- Bir bağlantının kilidini açmak diğerlerininkini açmaz
|
||||
- Pencere sona erdiğinde bir sonraki yazma yeniden sorar
|
||||
|
||||
MCP ve CLI'de onay arayüzü yoktur ve kaydedilmiş salt okunur bayrağını kullanmayı sürdürürler, bu yüzden bu pencereyi kullanamazlar.
|
||||
|
||||
<Callout type="info">Salt okunur uygulaması yine de SQL ya da komutları sınıflandırmaya dayanır. En güvenilir sınır, yazma yetkisi olmayan bir veritabanı hesabıdır.</Callout>
|
||||
|
||||
## Üretim Koruması Yapılandırma
|
||||
|
||||
<Steps>
|
||||
<Step>
|
||||
### Bağlantı ayarlarını açın
|
||||
|
||||
Bir bağlantı oluşturun ya da düzenleyin ve **Üretim** bölümünü bulun.
|
||||
|
||||
</Step>
|
||||
<Step>
|
||||
### Korumayı etkinleştirin
|
||||
|
||||
**Üretim korumasını etkinleştir** seçeneğini açın. Tek veritabanlı bağlantılar tüm bağlantıyı korur; çok veritabanlı bağlantılar tümünü ya da seçili veritabanlarını koruyabilir.
|
||||
|
||||
</Step>
|
||||
<Step>
|
||||
### Kapsamı inceleyin
|
||||
|
||||
Yalnızca seçili veritabanları korunuyorsa gerçek her üretim veritabanının listede olduğunu doğrulayın. Veritabanı eklendiğinde ya da yeniden adlandırıldığında listeyi yeniden denetleyin.
|
||||
|
||||
</Step>
|
||||
<Step>
|
||||
### Yazma uyarısını doğrulayın
|
||||
|
||||
Ayara gerçek bir bağlantıda güvenmeden önce zararsız bir test ya da bir test ortamı kullanarak üretim filigranının ve yazma iletişim kutusunun beklendiği gibi davrandığını doğrulayın.
|
||||
|
||||
</Step>
|
||||
</Steps>
|
||||
|
||||
Üretim koruması etkinken tezgâh bir üretim göstergesi gösterir. DBX; etkin bağlantının, etkin veritabanının ya da açık SQL hedefinin korunan kapsama ait olduğunu algılarsa ve işlem veriyi veya şemayı değiştiriyorsa ortak onay iletişim kutusunu açar.
|
||||
|
||||
Her üretim yazması yeni ve açık bir karar gerektirir. Onay saklanmaz ve normal tehlikeli SQL uyarısını kapatarak atlanamaz.
|
||||
|
||||
## Giriş Noktalarına Göre Davranış
|
||||
|
||||
| Giriş noktası | Salt okunur bağlantı | Üretim koruması |
|
||||
| --- | --- | --- |
|
||||
| SQL düzenleyici | Kullanıcı 1/5 dakikalık kilit açma penceresini onaylamadıkça tanınan yazmaları reddeder | İşlem başına onay için hedef bağlantıyı, veritabanını, kaynağı ve SQL'i gösterir |
|
||||
| Veri ızgarası | Aynı kilit açma penceresi onaylanana kadar kaydetmeleri, silmeleri ve diğer değişiklikleri devre dışı bırakır ya da reddeder | Satır kaydetme ve silme işlemleri ortak üretim onay akışına girer |
|
||||
| Tablo yapısı ve nesne işlemleri | Kilit açma penceresi onaylanana kadar tanınan değişiklik giriş noktalarını gizler ya da devre dışı bırakır | DDL, kaynak kaydetmeleri ve veritabanı yönetimi ortak onay akışına girer |
|
||||
| Şema karşılaştırma, SQL dosyaları ve veri üretimi | Salt okunur bir hedefe yazamaz | Üretilen SQL ya da betikler çalıştırılmadan önce üretim onayı ister |
|
||||
| Redis, MongoDB, etcd, mesaj kuyrukları ve benzeri sistemler | Sisteme özgü komutlar ve işlemler için salt okunur durumu yeniden denetler | Değişiklik giriş noktaları üretim ve özel tehlike kurallarına tabi kalır |
|
||||
| Yapay zekâ Sor | SQL çalıştırmaz | SQL çalıştırmaz |
|
||||
| Yapay zekâ Agent | Salt okunur durumu atlayamaz | Üretim SQL'ini insan incelemesi ve elle çalıştırma için düzenleyiciye geri verir |
|
||||
| MCP | Bağlantının salt okunur durumu her mod için üst sınırdır; tezgâhtaki kilit açma penceresi geçerli değildir | Üretim koruması MCP politikası için üst sınır olmayı sürdürür |
|
||||
|
||||
## Yapay Zekâ Yürütme Sınırları
|
||||
|
||||
### Sor Modu
|
||||
|
||||
Sor modu SQL üretir, açıklar, iyileştirir ya da düzeltir. Model çıktısı otomatik çalıştırılmaz; inceleme için kopyalanabilir ya da düzenleyiciye yerleştirilebilir.
|
||||
|
||||
### Agent Modu
|
||||
|
||||
Agent, kullanıcı amacına göre okumaları çalıştırabilir ve politika izin verdiğinde sınırlı yazmaları ele alabilir. Bir yazma onayı, geçerli hedef ve işlemle sınırlıdır.
|
||||
|
||||
Etkin veritabanı üretim olarak korunuyorsa Agent özerk yazma yetkisi almaz. DBX önerilen SQL'i düzenleyiciye koyar ve üretim yazma iletişim kutusu üzerinden elle onay ister.
|
||||
|
||||
SQL sınıflandırması ve mod ayrıntıları için [Yapay Zekâ Asistanı](/tr/docs/ai-assistant) sayfasına bakın.
|
||||
|
||||
## MCP Yetkileri
|
||||
|
||||
DBX, **Ayarlar → MCP** altında tek bir merkezî politika saklar ve her MCP isteği bu politikayı yeniden yükler.
|
||||
|
||||
| Mod | Örnek işlemler |
|
||||
| --- | --- |
|
||||
| Salt okunur | Sorgular, meta veri okumaları ve bağlantı ya da nesne listeleme |
|
||||
| Veri okuma/yazma | Normal eklemeler, etkin biçimde filtrelenmiş güncellemeler/silmeler, kapsamı belirli MongoDB değişiklikleri, sıradan Redis yazmaları ve bağlantı yönetimi |
|
||||
| Tam erişim | Ayrıca geniş değişikliklere, DDL'e, `TRUNCATE`'e, veri temizlemeye ve yüksek riskli yönetim komutlarına izin verir |
|
||||
|
||||
Yürütme modunun yanı sıra **İzin verilen bağlantılar** ayarını da yapılandırın. İzin listesinin dışındaki bağlantılar MCP'ye açılmaz. Şu sınırlar her modda etkin kalır:
|
||||
|
||||
- Bağlantının salt okunur durumu
|
||||
- Üretim koruması
|
||||
- Veritabanı hesabı yetkileri
|
||||
- Kaydedilmiş bağlantı izin listesi
|
||||
|
||||
Eksiksiz yapılandırma, istemci örnekleri ve uyumluluk davranışı için [MCP Tümleştirmesi](/tr/docs/mcp) sayfasına bakın.
|
||||
|
||||
## Tehlikeli SQL ve Özel Komutlar
|
||||
|
||||
Üretim korumasının dışında DBX, belirli yüksek riskli işlemlere ek kurallar uygular:
|
||||
|
||||
- Sorgu düzenleyici, tehlikeli SQL çalışmadan önce bir onay gösterebilir
|
||||
- Redis riskli komutları engelleyebilir ya da onay isteyebilir
|
||||
- Veri ızgarası, tablo yapısı, şema karşılaştırma ve veri üretme akışları mümkün olduğunda önce SQL'i gösterir
|
||||
- MCP Veri okuma/yazma; sınırsız güncellemeleri/silmeleri, DDL'i, `TRUNCATE`'i ve güvenilir biçimde sınıflandıramadığı yüksek riskli istekleri reddeder
|
||||
- Motorlar arası aktarım ve toplu içe aktarma; tür eşlemelerinin, hedef tabloların ve truncate seçeneklerinin ayrıca incelenmesini gerektirir
|
||||
|
||||
## Önerilen Yapılandırma
|
||||
|
||||
| Senaryo | Öneri |
|
||||
| --- | --- |
|
||||
| Yerel geliştirme | Normal bir bağlantı kullanın, tehlikeli SQL onayını açık tutun ve Tam erişim yerine MCP Veri okuma/yazma tercih edin |
|
||||
| Test ya da hazırlık | Belirgin bağlantı adları ve renkleri kullanın, tehlikeli SQL onayını koruyun ve MCP izin listesini sınırlayın |
|
||||
| Üretimde salt okuma | Veritabanında salt okunur bir hesabın yanı sıra DBX salt okunur ve üretim korumasını kullanın; MCP'yi Salt okunur modda tutun |
|
||||
| Üretimde değişiklik | Ayrı ve en az yetkili bir hesap kullanın, üretim korumasını açın, SQL'i inceleyin, yedekleri ve onayları saklayın, MCP Tam erişimden kaçının |
|
||||
| Ortak Docker | Bir giriş parolası belirleyin, `/app/data` dizinini kalıcı kılın, ağ erişimini kısıtlayın ve her hedef için ayrı veritabanı yetkileri kullanın |
|
||||
|
||||
## Bilinen Sınırlar
|
||||
|
||||
- SQL ve komut sınıflandırması temkinlidir ancak sunucu tarafındaki yetkilerin yerini alamaz.
|
||||
- Saklı yordamların, üreticiye özgü uzantıların ve dinamik SQL'in yalnızca metinden belirlenemeyen etkileri olabilir.
|
||||
- Üretim koruması DBX üzerinden başlatılan işlemleri kapsar; diğer istemcilerin kendi yetkileri ve denetimi gerekir.
|
||||
- Yapılandırma eşitlemesi ve dışa aktarma DBX ayarlarını taşır; iş veritabanlarının yedeği değildir.
|
||||
|
||||
<Cards>
|
||||
<Card title="Daha güvenli bir bağlantı oluşturun" href="/tr/docs/getting-started">
|
||||
Bağlantı türünü, ağ yolunu, salt okunur durumu ve üretim kapsamını yapılandırın.
|
||||
</Card>
|
||||
<Card title="Veri değişikliklerini inceleyin" href="/tr/docs/data-grid">
|
||||
Satır içi düzenlemeleri, silmeleri, SQL önizlemesini ve kaydetme akışını öğrenin.
|
||||
</Card>
|
||||
<Card title="Yapay zekâyı yapılandırın" href="/tr/docs/ai-assistant">
|
||||
Sor, Agent, SQL sınıflandırması ve üretim davranışını inceleyin.
|
||||
</Card>
|
||||
<Card title="MCP'yi yapılandırın" href="/tr/docs/mcp">
|
||||
Bağlantı izin listesini, yürütme modunu ve istemci tümleştirmesini ayarlayın.
|
||||
</Card>
|
||||
</Cards>
|
||||
@@ -0,0 +1,187 @@
|
||||
---
|
||||
title: Sorgu Düzenleyici
|
||||
description: DBX'te SQL yazın, anlayın, parametreleyin, çalıştırın, çözümleyin ve yeniden kullanın.
|
||||
---
|
||||
|
||||
Sorgu düzenleyici, DBX'teki SQL çalışma alanıdır. Lehçe farkındalıklı vurgulamayı ve tamamlamayı, anlamsal tanılamayı, parametre girişini, yürütme ilerlemesini, çoklu sonuçları, yürütme planlarını, sorgu geçmişini, SQL kitaplığını ve yapay zekâ desteğini tek bir sekmede birleştirir.
|
||||
|
||||
## Temel İş Akışı
|
||||
|
||||
<Steps>
|
||||
<Step>
|
||||
### Bağlantı bağlamını seçin
|
||||
|
||||
Bir sorgu oluştururken bağlantıyı, veritabanını ve şemayı seçin. Ayrıca nesne ağacından, Hızlı Aç'tan, SQL Kitaplığı'ndan ya da SQL Dosyaları'ndan bağlama uygun bir sorgu açabilirsiniz.
|
||||
|
||||
</Step>
|
||||
<Step>
|
||||
### SQL yazın ve inceleyin
|
||||
|
||||
Tamamlamayı, üzerine gelince çıkan ayrıntıları, anlamsal tanılamayı, biçimlendirmeyi ve kod katlamayı kullanın. Ayarlara bağlı olarak `Ctrl/Cmd+Tıklama` tablo verisine ya da ilgili nesneye gidebilir.
|
||||
|
||||
</Step>
|
||||
<Step>
|
||||
### Yürütme kapsamını açık kılın
|
||||
|
||||
Çalıştırılacak SQL'i seçin ya da geçerli ifadeyi veya düzenleyicinin tamamını kullanın. Çok ifadeli metinlerde yürütme hedefi seçicisi tam aralığı doğrulayabilir.
|
||||
|
||||
</Step>
|
||||
<Step>
|
||||
### Sonuçları ya da bir planı inceleyin
|
||||
|
||||
Sonuç alanı birden çok çalıştırmayı, yatay sekmeleri ya da liste görünümünü destekler. Plan ağacını, özeti ve standart sonuç tablosunu incelemek için Yürütme Planı'nı kullanın.
|
||||
|
||||
</Step>
|
||||
<Step>
|
||||
### Kaydedin ve yeniden kullanın
|
||||
|
||||
Kararlı sorguları SQL Kitaplığı'na ya da dış `.sql` dosyalarına kaydedin, ardından geçmiş, Hızlı Aç ya da klasörler üzerinden yeniden açın.
|
||||
|
||||
</Step>
|
||||
</Steps>
|
||||
|
||||
## SQL Çalıştırma
|
||||
|
||||
| Eylem | macOS | Windows / Linux |
|
||||
| --- | --- | --- |
|
||||
| Geçerli kapsamı çalıştır | `Cmd+Enter` | `Ctrl+Enter` |
|
||||
| Yeni sonuçta çalıştır | `Cmd+\` | `Ctrl+\` |
|
||||
| Çalıştırmayı durdur | Düğme Durdur'a dönüştükten sonra çalıştırma düğmesine tıklayın | Düğme Durdur'a dönüştükten sonra çalıştırma düğmesine tıklayın |
|
||||
|
||||
Metin seçiliyse DBX seçimi önceler. Aksi hâlde kapsamı geçerli ifade ve yürütme hedefi ayarları belirler. Kısayollar [Klavye Kısayolları](/tr/docs/keyboard-shortcuts) sayfasından değiştirilebilir.
|
||||
|
||||
Normal çalıştırma etkin sonucu günceller. **Yeni sonuçta çalıştır**, karşılaştırma için eski sonuçları korur. Sonuçlar yatay sekmeleri ya da liste görünümünü kullanabilir; tekrarlanan çalıştırmalar çalıştırma geçmişini saklayabilir ya da önemli sonuçları sabitleyebilir.
|
||||
|
||||
Çoklu ifade yürütmesinde sonuç alanı; geçerli ifadeyi, toplam sayıyı, tamamlanma durumunu ve hataları gösterir. Sürücü destekliyorsa etkin sorgu ya da kalan ifadeler iptal edilebilir.
|
||||
|
||||
<Callout type="warn">İptal, sürücüye ve veritabanına bağlıdır. Durdur'a tıkladıktan sonra sunucunun geçerli ifadeyi kesmesi zaman alabilir.</Callout>
|
||||
|
||||
### Çalıştırmadan önce DML değişikliklerini önizleyin
|
||||
|
||||
Bir `UPDATE`, `INSERT` ya da `DELETE` ifadesi için araç çubuğunda bir **Değişiklikleri önizle** düğmesi bulunur (düzenleyici bağlam menüsünde de vardır). DBX, ifadeyi eşdeğer bir salt okunur `SELECT` ifadesine dönüştürür ve yeni bir sonuç sekmesinde açar. Önizleme, yazılan ifadeleri yeniden değerlendirir; bu yüzden yan etkisi olan ifadeler (bir diziyi ilerletmek, oynak işlevler) önizleme sırasında da etkili olur ve belirlenimci olmayan işlevler (`uuid()`, `rand()`, `now()`) için gösterilen değerler gerçek çalıştırmadan farklı olabilir:
|
||||
|
||||
- `UPDATE` — ızgara, etkilenen satırları ve atanan her sütun için bir **`sütun (yeni)`** sütunu gösterir (ifadeler değerlendirilir, bu yüzden `SET a = a + 1` gerçek yeni değeri gösterir);
|
||||
- `INSERT` — ızgara, eklenecek satırları gösterir (sütun adları hedef sütunlardan gelir, `VALUES` genişletilir);
|
||||
- `DELETE` — ızgara, kaldırılacak satırları gösterir.
|
||||
|
||||
DBX'in güvenle dönüştüremediği ifadeler (örneğin bazı lehçeye özgü biçimler ya da `UPDATE ... FROM`) **Önizleme desteklenmiyor** olarak bildirilir ve yine de normal biçimde çalıştırılabilir.
|
||||
|
||||
## Yürütme Kapsamı ve Hedef Seçici
|
||||
|
||||
| Kapsam | Nasıl seçilir | Ne için uygundur |
|
||||
| --- | --- | --- |
|
||||
| Seçili SQL | Çalıştırmadan önce metni seçin | Çok ifadeli bir taslakta en açık ve en güvenli seçenek |
|
||||
| Geçerli ifade | İmleci bir ifadenin içine koyun | Bir betikten tek bir ifadeyi hızlıca çalıştırma |
|
||||
| Düzenleyicinin tamamı | Seçim yok ve ayarlar belgenin tamamını seçiyor | Kısa, tek amaçlı betikler |
|
||||
|
||||
Yürütme hedefi seçicisi çalıştırılabilir ifadeleri işaretler ve gerektiğinde bir önizleme gösterir. Ayarlardan kapatılabilir, ancak üretim ve karmaşık betikler için kullanışlıdır.
|
||||
|
||||
Büyük `.sql` dosyaları ya da ifade başına ilerleme ve dosya düzeyinde istatistik gerektiren görevler için [SQL Dosyası Çalıştırma](/tr/docs/sql-file) özelliğini kullanın.
|
||||
|
||||
## Tamamlama ve Anlamsal Tanılama
|
||||
|
||||
Tamamlama, etkin veritabanı lehçesini ve meta veriyi kullanarak şunları önerir:
|
||||
|
||||
- SQL anahtar sözcükleri, işlevler, türler ve motora özgü sözdizimi
|
||||
- Veritabanları, şemalar, tablolar, görünümler, sütunlar ve sütun açıklamaları
|
||||
- Tablo takma adları, CTE'ler, alt sorgu kapsamı ve görünür alanlar
|
||||
- Yabancı anahtarlara ya da ilişki meta verisine dayalı JOIN koşulları
|
||||
- MySQL, PostgreSQL, SQL Server, ClickHouse ve diğerleri için lehçeye özgü işlevler ve sözdizimi
|
||||
- Kullanıcı tanımlı [SQL Parçacıkları](/tr/docs/sql-snippets)
|
||||
|
||||
Anlamsal tanılama; çözülemeyen belirli tabloları, sütunları, takma adları ve SQL yapılarını işaretler. Hataları erken yakalamaya yardımcı olur, ancak üreticiye özgü uzantıların kabul ya da reddedileceğini garanti etmez; asıl kaynak sunucunun yanıtıdır.
|
||||
|
||||
<Callout type="info">Nesne oluşturduktan ya da değiştirdikten sonra bağlantı meta verisini yenileyin. DBX, büyük şemalarda yinelenen istekleri azaltmak için tablo yapısını önbelleğe alır ve tembel yükler.</Callout>
|
||||
|
||||
## Tablo ve Nesne Gezinmesi
|
||||
|
||||
- Ayarlara bağlı olarak veriyi açmak ya da nesneyi bulmak için bir tablo adına `Ctrl/Cmd+Tıklayın`
|
||||
- İmlecin bulunduğu yerde başvurulan tabloyu kenar çubuğunda bulun
|
||||
- Bağlantıları, veritabanlarını, tabloları, SQL Dosyalarını ve SQL Kitaplığı'nı aramak için Hızlı Aç'ı kullanın
|
||||
- Gömülü nesne kaynağı görünümlerinde arama yapın ve daha fazla çalışmak için SQL'i düzenleyicide açın
|
||||
|
||||
Gezinme, SQL ayrıştırmasına ve geçerli meta veriye bağlıdır. Dinamik SQL, belirsiz adlar ya da şemasız başvurular elle onay gerektirebilir.
|
||||
|
||||
## SQL Parametreleri ve Değişkenleri
|
||||
|
||||
Çalıştırmadan önce DBX yaygın yer tutucuları tanıyabilir ve bir parametre girişi iletişim kutusu açabilir:
|
||||
|
||||
| Sözdizimi | Örnek |
|
||||
| --- | --- |
|
||||
| Konumsal | `?` |
|
||||
| Adlandırılmış | `:user_id` |
|
||||
| Kabuk biçemli | `${user_id}` |
|
||||
| MyBatis biçemli | `#{user_id}` |
|
||||
| SQL Server biçemli | `@user_id` |
|
||||
| Betik değişkeni | `@set user_id = 42;` |
|
||||
|
||||
Parametreler dize, sayı, boole, `NULL` ya da ham SQL değeri olarak girilebilir. Veritabanı başına ayarlar, yerel sözdizimiyle çakışan yer tutucu biçimlerini kapatabilir.
|
||||
|
||||
<Callout type="warn">Ham SQL parametreleri otomatik olarak tırnaklanmaz. Bunları yalnızca incelenmiş SQL parçaları için kullanın ve güvenilmeyen girdiyi asla birleştirmeyin.</Callout>
|
||||
|
||||
## Biçimlendirme, Sıkıştırma ve Katlama
|
||||
|
||||
- **SQL'i Biçimlendir**, girintiyi, satır sonlarını ve anahtar sözcük biçemini normalleştirir
|
||||
- **SQL'i Sıkıştır**, kopyalamak ya da üretilen SQL'i incelemek için gereksiz boşlukları kaldırır
|
||||
- **Kod katlama**, uzun sorguları, alt sorguları ya da yordam bloklarını daraltır ve yapılandırılabilir kısayolları vardır
|
||||
- Biçimlendirici ve değişken sözdizimi ayarları için [SQL Biçimlendirme](/tr/docs/sql-formatter) sayfasına bakın
|
||||
|
||||
Biçimlendirme ve sıkıştırma yalnızca düzenleyici metnini değiştirir; SQL çalıştırmaz.
|
||||
|
||||
## Yürütme Planı
|
||||
|
||||
Yürütme Planı; `SELECT`, `WITH`, `TABLE` ya da `VALUES` gibi çözümlenmesi güvenli, sorgu benzeri SQL kabul eder. Desteklenen veritabanları şunları döndürebilir:
|
||||
|
||||
- Standart bir sonuç tablosu
|
||||
- Genişletilebilir bir plan ağacı
|
||||
- Düğüm, maliyet, tahmini satır, ilişki ve dizin özetleri
|
||||
- Veritabanının döndürdüğü ham ayrıntılar
|
||||
|
||||
`EXPLAIN` anlamı veritabanına göre değişir ve bazı motorlar yalnızca tablo ya da metin çıktısı verir. Bir plan, gerçek üretim başarımını değil iyileştiricinin tahminlerini yansıtır; veri hacmi, istatistikler, dizinler ve ölçülmüş çalışma süresiyle birlikte değerlendirin.
|
||||
|
||||
## Sorgu Geçmişi
|
||||
|
||||
Sorgu geçmişi, çalıştırılan SQL'i bağlantı başına zaman ve bağlam bilgisiyle saklar. Şunları yapabilirsiniz:
|
||||
|
||||
- Tarih aralığına göre filtreleme
|
||||
- SQL'i arama ve düzenleyiciye geri yükleme
|
||||
- Normal ve yapay zekâ destekli kaynakları ayırt etme
|
||||
- Daha önceki sorun giderme çalışmalarını kurtarma ya da karşılaştırma
|
||||
- Geçmişteki SQL'i alan soy ağacında olası bir başvuru kaynağı olarak kullanma
|
||||
|
||||
<Callout type="warn">Geçmiş; iş alanları, tablo adları, koşullar ya da sabit değerler içerebilir. Günlükleri, ekran görüntülerini ya da yapılandırma yedeklerini paylaşmadan önce hassas bilgileri gözden geçirin.</Callout>
|
||||
|
||||
## SQL Kitaplığı ve SQL Dosyaları
|
||||
|
||||
| Yöntem | Ne için uygundur | Platform sınırı |
|
||||
| --- | --- | --- |
|
||||
| SQL Kitaplığı | Yeniden kullanılabilir sorguları DBX içindeki klasörlerde kaydetme ve arama | Tam yerel SQL Kitaplığı yönetimi Masaüstü'nde kullanılabilir; bulut eşitleme kapsamı ayarlara bağlıdır |
|
||||
| Dış SQL Dosyaları | `.sql` dosyalarını bir depoyla, betik dizini ya da düzenleyiciyle paylaşma | Yerel dosya açma/kaydetme ve dosya ağacı Masaüstü yetenekleridir |
|
||||
| Sorgu sekmeleri | Geçici analiz ve bitmemiş taslaklar | Ayarlar tüm sekmeleri, yalnızca sabitlenmiş sekmeleri ya da hiçbirini geri yükleyebilir |
|
||||
|
||||
Kaydetme iletişim kutusu klasör arayabilir ya da oluşturabilir. Hızlı Aç hem SQL Kitaplığı girdilerini hem SQL Dosyalarını dizinler.
|
||||
|
||||
## Güvenlik ve Sınırlar
|
||||
|
||||
- Salt okunur bağlantılar çekirdek yürütme yolundaki tanınan yazmaları reddeder
|
||||
- Üretim koruması yazmalar için yeni ve açık bir onay ister
|
||||
- Tehlikeli SQL onayı ve Redis komut güvenliği ek katmanlardır
|
||||
- `USE` ve veritabanı değişimleri sorgu bağlamını günceller, ancak etkin bağlantı ve hedef veritabanı yine gözden geçirilmelidir
|
||||
- Tamamlama, tanılama ve yürütme planları etkin sürücüye ve meta veri desteğine bağlıdır
|
||||
|
||||
Kuralların tamamı için [Üretim ve Yazma Güvenliği](/tr/docs/production-safety) sayfasına bakın.
|
||||
|
||||
<Cards>
|
||||
<Card title="Sonuçları inceleyin" href="/tr/docs/data-grid">
|
||||
Veri ızgarasında gözatmayı, kopyalamayı, dışa aktarmayı ve güvenli düzenlemeyi öğrenin.
|
||||
</Card>
|
||||
<Card title="SQL dosyalarını çalıştırın" href="/tr/docs/sql-file">
|
||||
Büyük betikleri dosya ve ifade düzeyinde ilerlemeyle çalıştırın.
|
||||
</Card>
|
||||
<Card title="Parçacıkları yapılandırın" href="/tr/docs/sql-snippets">
|
||||
Tamamlamayla açılan kişisel SQL şablonları oluşturun.
|
||||
</Card>
|
||||
<Card title="Yapay zekâyı kullanın" href="/tr/docs/ai-assistant">
|
||||
SQL üretin, açıklayın ve iyileştirin, ardından inceleme için düzenleyiciye geri getirin.
|
||||
</Card>
|
||||
</Cards>
|
||||
@@ -0,0 +1,137 @@
|
||||
---
|
||||
title: Redis Çalışma Alanı
|
||||
description: Redis anahtarlarına gözatın, arayın ve düzenleyin; TTL'leri, Stream tüketici gruplarını, Pub/Sub'ı, Slowlog'u ve örnek durumunu inceleyin.
|
||||
---
|
||||
|
||||
Redis çalışma alanı; anahtar gözatmayı, türe özgü düzenlemeyi, komut çalıştırmayı, örnek incelemeyi ve yüksek riskli komut korumasını tek bir bağlantıda birleştirir. Büyük bir anahtar alanının tamamını bir kerede yüklemek yerine `SCAN` gibi artımlı işlemler kullanır.
|
||||
|
||||
## Veritabanları ve Takma Adlar
|
||||
|
||||
Redis bağlantıları kullanılabilir numaralı veritabanlarını listeler. `db0`, `db1` ve diğerlerine "Sipariş önbelleği" ya da "Geliştirme" gibi yerel takma adlar atayabilirsiniz. Takma adlar yalnızca DBX'teki görünümü ve aramayı etkiler; Redis komutları yine sayısal veritabanı kimliklerini kullanır.
|
||||
|
||||
Tarama sayfa boyutu bağlantı başına saklanır. Çok büyük anahtar alanlarında ya da yüksek gecikmeli ağlarda düşürün; küçük örneklerde dikkatle artırın.
|
||||
|
||||
## Anahtarlara Gözatma ve Arama
|
||||
|
||||
Anahtar listesi; adı, türü, değer özetini, boyutu ve TTL'i gösterebilir. Şunları destekler:
|
||||
|
||||
- `user:*` gibi Redis desenleri
|
||||
- Normal bir anahtar sözcüğü "içerir" eşleşmesine dönüştüren bulanık arama
|
||||
- Hiyerarşik gruplama ve düz liste gözatma
|
||||
- Daha fazla yükleme, tümünü getirme ve uzun bir taramayı durdurma
|
||||
- Anahtar adlarını kopyalama, birden çok anahtar seçme ya da yüklenmiş bir grubu seçme
|
||||
- Anahtara, değere ya da her ikisine göre arama
|
||||
|
||||
Değer araması eşleşen içeriği okur ve String, Hash ile desteklenen diğer yapılar için türe duyarlı eşleştirme uygular. Hash ayrıntıları alanları ve değerleri de doğrudan arayabilir.
|
||||
|
||||
<Callout type="warn">Tümünü getir ve değer araması çok sayıda anahtara dokunabilir. Üretimde önce deseni daraltın; Redis gecikmesini, CPU'yu ve ağ trafiğini izleyin.</Callout>
|
||||
|
||||
## Veri Türleri
|
||||
|
||||
| Tür | Başlıca yetenekler |
|
||||
| --- | --- |
|
||||
| String | Metin, JSON ve çeşitli görüntüleme biçimleri; gzip ve zlib değerleri salt okunur Sıkıştırma Açıldı biçiminde açılabilir, ham DEFLATE ise ilk deneme başarısız olduktan sonra **DEFLATE olarak yeniden dene** gerektirir; açılmış çıktı 50 MiB ile sınırlıdır; ikili dizeler kaçış karakterli, salt okunur metin olarak gösterilir |
|
||||
| Hash | Alan/değer tablosu, arama, sıralama, ekleme, düzenleme ve silme |
|
||||
| List | Dizinle sayfalanmış öğeler, ekleme, düzenleme ve silme |
|
||||
| Set | Üyelere gözatma, ekleme ve silme |
|
||||
| Sorted Set | Üye ve puan gözatma, düzenleme ve silme |
|
||||
| Stream | Girdiler, tüketici grupları, tüketiciler, bekleyen mesajlar, gecikme ve teslim ayrıntıları |
|
||||
| RedisJSON | JSON ağacı/kaynağı düzenleme, biçimlendirme ve sıkıştırılmış kaydetme; RedisJSON sunucu modülünü gerektirir |
|
||||
|
||||
List, Set, Hash, Sorted Set ve Stream üye ayrıntıları, sıkıştırılmış üye değerleri için aynı Sıkıştırma Açıldı biçimini ve Gzip kısayolunu sunar.
|
||||
|
||||
Büyük koleksiyon türleri sayfalar hâlinde yüklenir ve mümkün olduğunda toplam ile yüklenen sayıları gösterir.
|
||||
|
||||
## Anahtar Oluşturma ve Düzenleme
|
||||
|
||||
Bir anahtar oluştururken veri türünü ve başlangıç içeriğini seçin. Pozitif bir TTL belirleyin ya da kalıcı bir anahtar seçin.
|
||||
|
||||
Mevcut bir değeri düzenlerken DBX şunları yapabilir:
|
||||
|
||||
- Mevcut TTL'i koruma
|
||||
- Anahtarı kalıcı yapma
|
||||
- Saniye cinsinden göreli bir TTL belirleme
|
||||
- Yerel, mutlak bir sona erme zamanı seçme
|
||||
- Kaydetmeden önce JSON kaynağını biçimlendirme ya da sıkıştırma
|
||||
- Desteklenen değer türleri için yeniden oluşturma komutunu kopyalama
|
||||
|
||||
TTL değerleri otomatik olarak geri sayar ve ayrıntı görünümü değerin tamamını düzenli aralıklarla yenileyebilir. Bir anahtar yenilemeden önce sona ererse DBX bunu bildirir ve eskiyen durumu temizler.
|
||||
|
||||
<Callout type="info">Değeri değiştirirken TTL'i korumak, geçici bir önbellek girdisinin yanlışlıkla kalıcı olmasını önler. Kaydetmeden önce sona erme davranışını gözden geçirin.</Callout>
|
||||
|
||||
## Stream Tüketici Grupları
|
||||
|
||||
Stream ayrıntıları ayrıca şunları gösterebilir:
|
||||
|
||||
- Tüketici grupları ve son teslim edilen kimlik
|
||||
- Okunan girdiler ve gecikme
|
||||
- Tüketiciler, boşta kalma süresi ve etkin olmama durumu
|
||||
- Bekleyen girdiler, teslim sayısı ve sahibi olan tüketici
|
||||
|
||||
Bu değerler Redis tüketici grubu komutlarından gelir ve birikmiş ya da onaylanmamış mesajları çözmeye yardımcı olur. Sürekli bir izleme ya da uyarı sistemi değildir.
|
||||
|
||||
## Komut Satırı
|
||||
|
||||
Komut satırı, Redis CLI biçemli komutları kabul eder ve yapılandırılmış sonuçlar gösterir:
|
||||
|
||||
- Bağlantı başına kaydedilen geçmişte gezinmek için ↑/↓ tuşlarını kullanın
|
||||
- Geçerli komut geçmişini temizleyin
|
||||
- Metin çıktısını seçip kopyalayın
|
||||
- `INFO`, `CLIENT LIST` ve `CONFIG GET` gibi komutları çalıştırın
|
||||
- Yanıt destekliyorsa tablo ya da JSON çıktısı görüntüleyin
|
||||
|
||||
Komut güvenliği denetimi Redis komutlarını sınıflandırır. Bazı riskli komutlar onay ister, bazıları varsayılan olarak engellenir. Bu denetimi kapatmak; bağlantının salt okunur durumunu, üretim korumasını ya da MCP politikasını atlayamaz.
|
||||
|
||||
## Pub/Sub
|
||||
|
||||
Pub/Sub paneli şunları yapabilir:
|
||||
|
||||
- Bir abonelik oturumunu bağlama ya da bağlantısını kesme
|
||||
- Kanallara veya desenlere abone olma
|
||||
- Gelen mesajları gerçek zamanlı gösterme
|
||||
- Bir kanala mesaj yayınlama
|
||||
- Geçerli arayüz oturumundaki mesajları temizleme
|
||||
|
||||
Web/Docker abonelik için WebSocket kullanır. Ters proxy'lerin ilgili WebSocket yükseltmesine izin vermesi gerekir.
|
||||
|
||||
## Pano, Anahtar İstatistikleri ve Slowlog
|
||||
|
||||
Redis panosu sunucu ve örnek bilgilerini daraltılabilir alanlarda gruplar. Sunucu desteğine bağlı olarak şunları gösterebilir:
|
||||
|
||||
- Sürüm, çalışma süresi, bellek, istemciler ve bağlantı durumu
|
||||
- Anahtar alanı, komutlar, kalıcılık, çoğaltma ve küme özetleri
|
||||
- Anahtar başına bellek kullanımı, boşta kalma süresi ya da erişimle ilgili istatistikler
|
||||
- Slowlog girdileri, süre, zaman damgası ve küme düğümü
|
||||
|
||||
Anahtar istatistikleri ve Slowlog ek Redis komutları gerektirir. Büyük örneklerde ya da kümelerde kapsamı ve girdi sayılarını sınırlayın.
|
||||
|
||||
## Toplu ve Yıkıcı İşlemler
|
||||
|
||||
- Seçili anahtarları silme
|
||||
- Geçerli grup altında yüklenmiş anahtarları silme
|
||||
- Etkin Redis veritabanını temizleme
|
||||
- Desteklenen toplu alan/üye işlemlerini çalıştırma
|
||||
|
||||
Temizleme, toplu silme ve `FLUSH*` işlemleri geri alınamaz. Salt okunur bağlantılar yazmaları reddeder; üretim ve tehlikeli komut denetimleri etkin kalır.
|
||||
|
||||
## Güvenlik ve Başarım Önerileri
|
||||
|
||||
- Üretim için salt okunur bir hesap ya da ACL kullanın ve DBX salt okunur/üretim korumasını etkinleştirin
|
||||
- Artımlı gözatmayı `KEYS *` ile değiştirmeyin; desenleri ve `SCAN` kullanın
|
||||
- Değer araması, bellek istatistikleri ve Slowlog sunucu yükünü artırabilir
|
||||
- Stream tüketici grubu ayrıntıları bekleyen ve tüketici durumunu okur; sınırsız, yüksek sıklıklı yenilemeden kaçının
|
||||
- İkili değerler, modül komutları ve üreticiye özgü uzantılar komut satırını gerektirebilir
|
||||
- Bir değerin sıkıştırmasını açmak salt okunurdur ve çıktısı 50 MiB ile sınırlıdır; daha büyük sonuçlar genişletilmek yerine engellemeyen bir bildirim gösterir
|
||||
- MCP; sıradan Redis yazmalarına ve yıkıcı `FLUSH*` komutlarına farklı yetki düzeyleri uygular
|
||||
|
||||
<Cards>
|
||||
<Card title="Üretim yazmalarını koruyun" href="/tr/docs/production-safety">
|
||||
Salt okunur bağlantıları, üretim korumasını ve MCP Redis yetkilerini yapılandırın.
|
||||
</Card>
|
||||
<Card title="Özel çalışma alanları" href="/tr/docs/specialized-workspaces">
|
||||
MongoDB, vektör, mesaj kuyruğu, etcd, ZooKeeper ve Nacos araçlarını inceleyin.
|
||||
</Card>
|
||||
<Card title="Bağlantıyı yapılandırın" href="/tr/docs/ssh-tunnel">
|
||||
Redis için TLS, SSH, SOCKS5 ya da HTTP proxy yapılandırın.
|
||||
</Card>
|
||||
</Cards>
|
||||
@@ -0,0 +1,153 @@
|
||||
---
|
||||
title: Şema Gezgini ve Nesne Ağacı
|
||||
description: DBX kenar çubuğundan bağlantıları düzenleyin, veritabanı nesnelerini arayın, veri ve yapı açın, veritabanına özgü işlemleri çalıştırın.
|
||||
---
|
||||
|
||||
Nesne ağacı, DBX'teki başlıca gezinme yüzeyidir. Yalnızca veritabanlarını, şemaları, tabloları ve sütunları göstermez; bağlantı gruplarını, görünür kapsamı, nesne aramasını, sabitlemeleri, kopyala/yapıştır işlemlerini, şema eylemlerini, özel çalışma alanlarını ve yönetim görünümlerini de yönetir.
|
||||
|
||||
## Bağlantı ve Nesne Hiyerarşisi
|
||||
|
||||
Tipik bir ilişkisel hiyerarşi şöyle görünür:
|
||||
|
||||
```text
|
||||
Bağlantı grubu
|
||||
└── Bağlantı
|
||||
└── Katalog / veritabanı
|
||||
└── Şema
|
||||
└── Tablo / görünüm / yordam / diğer nesne
|
||||
└── Sütun / dizin / yabancı anahtar / tetikleyici
|
||||
```
|
||||
|
||||
Gerçek hiyerarşi veritabanı modelini izler:
|
||||
|
||||
| Tür | Örnek ağaç |
|
||||
| --- | --- |
|
||||
| MySQL uyumlu | Bağlantı → veritabanı → tablo/görünüm → sütun/dizin/yabancı anahtar/tetikleyici |
|
||||
| PostgreSQL, Oracle, SQL Server ve diğerleri | Bağlantı → veritabanı ya da servis → şema → nesne |
|
||||
| Doris / StarRocks | Birden çok katalog varsa katalog → veritabanı → tablo; yalnızca `internal` varsa düz yapı |
|
||||
| Redis | Bağlantı → Redis VT; anahtarlar özel gezginde sayfalanır |
|
||||
| MongoDB | Bağlantı → veritabanı → koleksiyonlar, dizinler ve GridFS bucket'ları |
|
||||
| Elasticsearch / Easysearch / Meilisearch | Bağlantı → dizinler ve diğer belge nesneleri |
|
||||
| HBase, vektör, mesaj kuyruğu, etcd, ZooKeeper, Nacos | [Özel Çalışma Alanları](/tr/docs/specialized-workspaces) açan sisteme özgü nesneler |
|
||||
|
||||
## Bağlantı Grupları ve Toplu Yönetim
|
||||
|
||||
- Özel alt grup adlarıyla iç içe gruplar oluşturun
|
||||
- Bağlantıları gruplara sürükleyin ya da kopyala/yapıştır ve toplu taşıma kullanın
|
||||
- Bağlantıları çoklu seçip gruplama, kopyalama, bağlantı kesme ve diğer toplu işlemler için araç çubuğunu kullanın
|
||||
- Bağlantı renklerini, notları, sabitlemeleri, salt okunur durumu ve üretim kapsamını yapılandırın
|
||||
- Bir bağlantı adını kopyalayın ya da bağlantının tamamını yeni bir girdi olarak çoğaltın
|
||||
- Bağlantı ipuçlarında sunucu, port, veritabanı türü ve diğer özetleri inceleyin
|
||||
|
||||
Desteklenen bağlantı içe aktarmaları grup bilgisini koruyabilir. Kenar çubuğu düzenleri aygıtlar arasında taşındığında DBX bağlantı kimliklerini yeniden eşler.
|
||||
|
||||
## Genişletme, Daraltma ve Sabitleme
|
||||
|
||||
- Bir düğümü genişletmek ya da daraltmak için tıklayın
|
||||
- Geçerli ağaç kapsamı için **Tümünü genişlet** ya da **Tümünü daralt** kullanın
|
||||
- Sık kullandığınız bağlantıları, veritabanlarını, şemaları, tabloları ya da Nacos ad alanlarını sabitleyin
|
||||
- Uzun listelerde kaydırırken etkin veritabanını ya da önemli satırı görünür tutun
|
||||
- Açık sekmelerin ilgili ağaç nesnesini seçmesine ya da göstermesine izin verin
|
||||
|
||||
Sabitlemeler gezinmeyi kolaylaştırır ama üretimi işaretlemez. Salt okunur ve üretim durumunu [Üretim ve Yazma Güvenliği](/tr/docs/production-safety) sayfasından ayrıca yapılandırın.
|
||||
|
||||
## Arama ve Filtreleme
|
||||
|
||||
Nesne ağacı araması şunlarla eşleşebilir:
|
||||
|
||||
- Bağlantılar, gruplar, veritabanları, kataloglar ve şemalar
|
||||
- Tablolar, görünümler, sütunlar, dizinler ve belirli veritabanına özgü nesneler
|
||||
- Nesne yolları, sütun açıklamaları ve tablo açıklamaları
|
||||
- Yüklenmiş meta veriler ve sunucu tarafında filtrelemeyi destekleyen tablo listeleri
|
||||
|
||||
Bazı aramalar anahtar sözcüğü gecikmeli olarak sürücüye iletir ve önce tüm tabloları yüklemekten kaçınır. Aramayı düğüm türüne göre kısıtlayabilir ya da etkin veritabanı içindeki yerel tablo aramasını kullanabilirsiniz.
|
||||
|
||||
Görünür kapsam ayarları; veritabanlarını, şemaları, sistem şemalarını ya da yapılandırılmış öneklere sahip tabloları gizleyebilir. Yeni oluşturulan veritabanları ya da şemalar görünür listeye otomatik eklenebilir.
|
||||
|
||||
<Callout type="info">Arama sonuçları hesabın görünürlüğüne ve yüklenmiş meta veriye bağlıdır. Bir nesne oluşturduktan, sildikten ya da yeniden adlandırdıktan sonra ilgili düğümü yenileyin.</Callout>
|
||||
|
||||
## Meta Veri Görünümü
|
||||
|
||||
Veritabanına ve ayarlara bağlı olarak ağaç şunları gösterebilir:
|
||||
|
||||
- Tablo ve sütun açıklamaları
|
||||
- Sütun türü, boş olabilirlik, varsayılan ve kısıt özetleri
|
||||
- Nesne sayıları ve yükleme durumu
|
||||
- Tablo türü ile katalog, şema ve veritabanı yolu
|
||||
- MongoDB koleksiyon meta verisi
|
||||
- Veritabanına özgü nesne türleri ve durum bilgisi
|
||||
|
||||
Nesne meta verisi görünümü yapılandırılabilir. Büyük şemalarda görsel gürültüyü ve meta veri isteklerini azaltmak için yalnızca gereken ek bilgiyi gösterin.
|
||||
|
||||
## Veri, Yapı ve Kaynak Açma
|
||||
|
||||
| İşlem | Sonuç |
|
||||
| --- | --- |
|
||||
| Tabloyu aç | [Veri Izgarası](/tr/docs/data-grid) açılır |
|
||||
| Yapıyı görüntüle | Sütunlar, dizinler, yabancı anahtarlar, tetikleyiciler ve DDL sekmeleri açılır |
|
||||
| Tablo yapısını düzenle | [Tablo Yapısı Düzenleyici](/tr/docs/table-structure) açılır |
|
||||
| DDL'i görüntüle | Veritabanının ya da sürücünün ürettiği nesne tanımını okur |
|
||||
| Kaynağı aç | Görünüm, yordam, işlev, tetikleyici ya da diğer kaynağı bir yan panelde veya düzenleyicide gösterir |
|
||||
| Sorgu nesnesini bul | Düzenleyicideki imlecin bulunduğu tabloyu bulur ya da tablo/sütun başvurularını SQL'e sürükler |
|
||||
| Özel nesneyi aç | Redis, MongoDB, vektör, HBase, MQ, etcd, ZooKeeper ya da Nacos çalışma alanlarını açar |
|
||||
|
||||
Tablo, nesne ve veri sekmeleri ayrı kimlikler kullanır; böylece aynı adlı nesneler yanlışlıkla aynı veri sekmesini yeniden kullanmaz.
|
||||
|
||||
## Bağlam Menüleri ve Toplu İşlemler
|
||||
|
||||
Bağlam menüleri düğüm türünden ve veritabanı yeteneklerinden üretilir. Yaygın işlemler şunlardır:
|
||||
|
||||
- Veritabanı ve şema oluşturma, yeniden adlandırma ya da silme; desteklenen açıklamaları, karakter kümelerini veya collation'ları düzenleme
|
||||
- Tablo oluşturma, kopyalama, yapıştırma, yeniden adlandırma, truncate etme ya da silme
|
||||
- Hedef sürücü destekliyorsa tablo yapısını veya verisini veritabanları arasında kopyalayıp yapıştırma
|
||||
- Veri, yapı, DDL, kaynak, ER diyagramı, alan soy ağacı, şema karşılaştırma ve veritabanı araması açma
|
||||
- Veri içe aktarma, veri aktarma, SQL dosyaları çalıştırma, veritabanı dışa aktarma ya da desteklenen dosya veritabanlarını yedekleme
|
||||
- `SELECT`, `INSERT`, `UPDATE`, `DELETE` ve diğer SQL şablonlarını üretme
|
||||
- Dizinleri, tetikleyicileri, yordamları, uzantıları, kullanıcıları, işleri ve veritabanına özgü nesneleri yönetme
|
||||
- Panoları, işlemleri/oturumları ya da özel yönetim sayfalarını açma
|
||||
|
||||
Yıkıcı işlemler daha belirgin biçimde gruplanır; salt okunur duruma, üretim kapsamına ve veritabanı yeteneğine göre görünür ya da onay ister.
|
||||
|
||||
## Kopyalama, Yapıştırma ve Sürükleme
|
||||
|
||||
- Bağlantı, veritabanı, şema, tablo, sütun ya da seçili tablo adlarını kopyalayın
|
||||
- Desteklenen yerlerde veritabanı/şema nitelemesini ve tanımlayıcı tırnaklamasını seçin
|
||||
- Başvuru üretmek için tabloları ya da sütunları SQL düzenleyicisine sürükleyin
|
||||
- Yapı ya da veri aktarımını başlatmak için bir tabloyu kopyalayıp uyumlu bir hedefe yapıştırın
|
||||
- Yerel dosya veritabanlarını işletim sisteminin dosya yöneticisinde gösterin
|
||||
|
||||
Veritabanları arası kopyalama; tür eşlemesini, varsayılanları, kısıtları ve kimlik anlamını içerir. Önce [Veri Aktarımı](/tr/docs/data-transfer) sayfasını ve üretilen SQL'i inceleyin.
|
||||
|
||||
## Veritabanına Özgü Hiyerarşiler
|
||||
|
||||
DBX her sistemi ilişkisel bir ağaca zorlamaz. Örneğin:
|
||||
|
||||
- SQL Server bağlı sunucuları ve veritabanı nesnelerini gösterebilir
|
||||
- Doris / StarRocks dış katalogları ve dış tablolar için üç parçalı adları destekler
|
||||
- MongoDB koleksiyonları, dizinleri ve GridFS'i gösterir
|
||||
- Elasticsearch / Easysearch / Meilisearch dizinleri birinci sınıf nesne olarak modeller
|
||||
- Dameng, Oracle, PostgreSQL ve diğerleri yordamları, işleri, uzantıları ya da yönetim nesnelerini gösterebilir
|
||||
- etcd, Nacos, mesaj kuyrukları ve vektör veritabanları ağaç düğümlerinden özel çalışma alanları açar
|
||||
|
||||
## Güvenlik ve Başarım Sınırları
|
||||
|
||||
- Ağaç yalnızca geçerli hesabın görebildiği nesneleri gösterir; eksik nesneler çoğunlukla veritabanı yetkilerine işaret eder
|
||||
- Büyük şemalar tembel yükleme, önbellekleme ve sunucu tarafında filtreleme kullanır; amaçsızca her şeyi genişletmekten kaçının
|
||||
- Sistem şemaları, nesne sayıları ve ek meta veri istek hacmini artırır ve kapatılabilir
|
||||
- Silme, truncate, veritabanları arası yapıştırma ve yönetim işlemleri geri alınamayabilir; önce yedekleri ve kapsamı inceleyin
|
||||
- Salt okunur bağlantılar birçok değişiklik giriş noktasını gizler ya da reddeder, ancak son sınır veritabanı yetkileridir
|
||||
|
||||
<Cards>
|
||||
<Card title="Tüm nesnelere gözatın" href="/tr/docs/object-browser">
|
||||
Tablolar, görünümler, yordamlar ve istatistikler için liste ya da ızgara görünümlerini kullanın.
|
||||
</Card>
|
||||
<Card title="Tablo yapısını düzenleyin" href="/tr/docs/table-structure">
|
||||
Sütunları ve dizinleri değiştirin, çalıştırmadan önce DDL'i inceleyin.
|
||||
</Card>
|
||||
<Card title="Veritabanında arayın" href="/tr/docs/object-browser">
|
||||
Büyük veritabanlarında nesneleri türe, ada ve meta veriye göre bulun.
|
||||
</Card>
|
||||
<Card title="Özel sistemleri yönetin" href="/tr/docs/specialized-workspaces">
|
||||
Redis, MongoDB, vektör, MQ, etcd, ZooKeeper ve Nacos çalışma alanlarını açın.
|
||||
</Card>
|
||||
</Cards>
|
||||
@@ -0,0 +1,211 @@
|
||||
---
|
||||
title: Şema ve Veri Karşılaştırma
|
||||
description: Şemaları ya da tablo verisini karşılaştırın; farkları, tür eşlemelerini, etkiyi ve eşitleme SQL'ini inceleyip hedef ortama dağıtın.
|
||||
---
|
||||
|
||||
DBX iki karşılaştırma iş akışı sunar:
|
||||
|
||||
- **Şema Karşılaştırma**, nesneleri ve DDL'i karşılaştırır ve kaynaktan hedefe bir dağıtım betiği üretir
|
||||
- **Veri Karşılaştırma**, bir ya da daha çok tablodaki satırları anahtar sütunlara göre karşılaştırır ve seçilebilir ekleme, güncelleme ve silme SQL'i üretir
|
||||
|
||||
İkisi de kaynağı istenen durum, hedefi ise incelenecek ya da eşitlenecek ortam olarak görür. Yönü ters çevirmek karşıt işlemleri üretir.
|
||||
|
||||
<Callout type="warn">Karşılaştırma sonuçları ve üretilen SQL insan incelemesi gerektirir. Nesne silmeleri, satır silmeleri, tür dönüşümleri, lehçeler arası eşlemeler ve toplu eşitleme geri alınamayabilir. Önce üretimi yedekleyin ve geri dönüş planını hazırlayın.</Callout>
|
||||
|
||||
## Şema Karşılaştırma İş Akışı
|
||||
|
||||
<Steps>
|
||||
<Step>
|
||||
### Bir yapılandırma seçin ya da oluşturun
|
||||
|
||||
Son kullanılan bir yapılandırmayı seçin ya da yeni bir tane oluşturun, yeniden adlandırın veya çoğaltın. Yapılandırmalar; kaynağı, hedefi ve seçenekleri yeniden kullanmak için JSON olarak içe/dışa aktarılabilir.
|
||||
|
||||
</Step>
|
||||
<Step>
|
||||
### Kaynağı ve hedefi seçin
|
||||
|
||||
Her iki taraf için bağlantıyı, veritabanını ve şemayı seçin. Bunları yer değiştirebilirsiniz, ancak sonrasında dağıtım yönünü yeniden gözden geçirmelisiniz.
|
||||
|
||||
</Step>
|
||||
<Step>
|
||||
### Karşılaştırma kapsamını yapılandırın
|
||||
|
||||
Tabloları, birincil anahtarları, yabancı anahtarları, benzersiz anahtarları, check kısıtlarını, görünümleri, işlevleri, dizinleri, dizileri, tetikleyicileri, kuralları, sahipleri ve desteklenen diğer nesneleri seçin. Seçenekler veritabanı türüne bağlıdır.
|
||||
|
||||
</Step>
|
||||
<Step>
|
||||
### Karşılaştırın ve nesneleri seçin
|
||||
|
||||
DBX meta veriyi ve DDL'i okur, bir nesne ağacı oluşturur ve oluşturmaları, silmeleri, değişiklikleri ve bağımlılıkları işaretler. Gerçekten dağıtılacak nesneleri seçin.
|
||||
|
||||
</Step>
|
||||
<Step>
|
||||
### DDL'i ve etkiyi inceleyin
|
||||
|
||||
Kaynak/hedef DDL'i, alan eşlemelerini, dağıtım betiğini, bağımlılıkları, olası çakışmaları ve etki raporunu inceleyin.
|
||||
|
||||
</Step>
|
||||
<Step>
|
||||
### Dışa aktarın ya da dağıtın
|
||||
|
||||
`.sql` dosyasını kopyalayın/dışa aktarın ya da son onaydan sonra hedefe dağıtın. Desteklendiğinde bir işlem kullanın ve ifade düzeyindeki ilerleme ile sonuçları inceleyin.
|
||||
|
||||
</Step>
|
||||
</Steps>
|
||||
|
||||
## Şema Fark Türleri
|
||||
|
||||
| Durum | Anlamı | Tipik betik |
|
||||
| --- | --- | --- |
|
||||
| Kaynakta eklenmiş | Hedefte nesne yok | `CREATE` ya da sütun/dizin/kısıt ekleme |
|
||||
| Hedefte fazladan | Kaynakta nesne yok | `DROP` ya da sütun/dizin/kısıt kaldırma |
|
||||
| Değişmiş nesne | Tanımlar farklı | `ALTER`, yeniden oluşturma ya da kaynağı değiştirme |
|
||||
| Yeniden adlandırma adayı | Adlar farklı ama yapılar benzer | İnceleme gerektiren, benzerliğe dayalı yeniden adlandırma önerisi |
|
||||
| Uyumluluk çakışması | Kaynak tür ya da özellik hedefe doğrudan eşlenemiyor | Alan eşlemesi, düşürme ya da elle göç |
|
||||
|
||||
Nesne ağacında filtreleyin ve seçin. Bir nesne yalnızca hedefte fazladan olduğu için otomatik silinmez; yine seçim ve son onay gerektirir.
|
||||
|
||||
## Karşılaştırma Seçenekleri
|
||||
|
||||
### Nesne Kapsamı
|
||||
|
||||
Veritabanına bağlı olarak karşılaştırma şunları içerebilir:
|
||||
|
||||
- Tablolar, sütunlar, sütun sırası ve birincil anahtarlar
|
||||
- Benzersiz anahtarlar, yabancı anahtarlar, check ve exclusion kısıtları
|
||||
- Dizinler, görünümler, işlevler, diziler, tetikleyiciler ve kurallar
|
||||
- Sahipler ve dizilerin geçerli değerleri
|
||||
|
||||
Seçenekler lehçeye özgü varsayılanları yükler. Güvenilir meta verisi ya da eşitleme SQL'i olmayan nesneler gizlenir veya yalnızca fark olarak gösterilir.
|
||||
|
||||
### Tablo Filtreleri
|
||||
|
||||
- Dâhil etme ve hariç tutma desenleri
|
||||
- Her ikisi de eşleştiğinde öncelik
|
||||
- Toplu mod ve tablo adı desenleri
|
||||
- Sistem nesnelerinin görünürlüğü
|
||||
|
||||
Filtreleme, yetkileri değil karşılaştırma kapsamını denetler. Geçerli hesabın okuyamadığı nesneler görünmez.
|
||||
|
||||
### Yeniden Adlandırma Algılama
|
||||
|
||||
Sütun ya da tablo yeniden adlandırma algılamasını etkinleştirin ve bir benzerlik eşiği belirleyin. Öneriler yapısal benzerliğe dayanır ve iş anlamını bilmez; veriyi, kısıtları, uygulama kodunu ve bağımlılıkları doğrulayın.
|
||||
|
||||
### Lehçeler Arası Alan Eşlemesi
|
||||
|
||||
Kaynak ve hedef türler farklı olduğunda kaynak lehçeyi, hedef lehçeyi, uyumluluk eşiğini ve alan eşlemelerini yapılandırın:
|
||||
|
||||
- `VARCHAR(255)` içindeki uzunluk gibi parametreleri koruma
|
||||
- Uyumsuz parametreleri kaldırma
|
||||
- Özel hedef parametreleri verme
|
||||
|
||||
Motorlar arası karşılaştırma yalnızca elden gelenin en iyisi olan uyumlu bir betik üretebilir. Karakter kümesi, collation, identity, diziler, bölümleme, depolama motorları, işlevler ve yetkiler çoğunlukla elle göç tasarımı gerektirir.
|
||||
|
||||
## DDL, Bağımlılıklar ve Dağıtım İncelemesi
|
||||
|
||||
Seçili nesneler için şunları inceleyin:
|
||||
|
||||
- Kaynak ve hedef DDL
|
||||
- Nesne başına dağıtım SQL'i
|
||||
- Seçili tüm nesneler için betiğin tamamı
|
||||
- Bağımlılıklar ve ters bağımlılıklar
|
||||
- Alan eşlemeleri ve uyumluluk uyarıları
|
||||
- Oluşturma, değiştirme, silme sayıları ve etki özeti
|
||||
- Etkinleştirildiğinde ve üretilebildiğinde isteğe bağlı geri alma SQL'i
|
||||
|
||||
Son dağıtım sayfası; hedef sunucuyu, veritabanını, şemayı, veritabanı sürümünü ve ifade sayısını yineler. Üretim koruması, çalıştırmadan önce açık onay ister.
|
||||
|
||||
<Callout type="info">İşlem içinde çalıştırma, yalnızca hedef veritabanı ve ifadeler işlemsel DDL'i destekliyorsa tam geri alma sağlar. MySQL ve bazı veritabanları DDL'i örtük olarak uygular.</Callout>
|
||||
|
||||
## Lehçe Anlamı
|
||||
|
||||
DBX her şeyi genel DDL'e indirgemek yerine veritabanına özgü anlamı korumaya çalışır:
|
||||
|
||||
- PostgreSQL/openGauss şemaları, dizileri, sahipleri, kuralları ve dizin özellikleri
|
||||
- MySQL uyumlu karakter kümesi, collation, identity ve dizin sözdizimi
|
||||
- Oracle, Dameng, GaussDB, KingbaseES ve benzeri tür ile niteleme davranışı
|
||||
- Doris/StarRocks, ClickHouse, Elasticsearch/Easysearch ve diğerleri yalnızca güvenilir biçimde desteklenen yapı kapsamında
|
||||
|
||||
Desteklenen bir bağlantı, her nesnenin karşılaştırılabileceği ya da dağıtılabileceği anlamına gelmez. [Veritabanı Desteği](/tr/docs/databases) sayfasını ve sonuçtaki yetenek iletilerini kullanın.
|
||||
|
||||
## Veri Karşılaştırma
|
||||
|
||||
Veri Karşılaştırma, Şema Karşılaştırma'dan ayrıdır ve kaynak ile hedef tablolar arasındaki satırları karşılaştırır.
|
||||
|
||||
<Steps>
|
||||
<Step>
|
||||
### Kaynak ve hedef tabloları seçin
|
||||
|
||||
Bağlantıyı, veritabanını, şemayı ve tabloyu seçin. Toplu mod, birden çok kaynak tablo seçip bunları aynı adlı hedeflere eşleyebilir.
|
||||
|
||||
</Step>
|
||||
<Step>
|
||||
### Anahtar sütunları seçin
|
||||
|
||||
Satırları benzersiz olarak belirleyen bir birincil ya da iş anahtarı seçin. Yanlış anahtarlar, güncellemeleri görünüşte ekleme ve silmeye dönüştürebilir.
|
||||
|
||||
</Step>
|
||||
<Step>
|
||||
### Karşılaştırmayı çalıştırın
|
||||
|
||||
DBX iki tarafı da okur ve yalnızca kaynakta, yalnızca hedefte ve değişmiş satırları işaretler. Toplu mod; geçerli tabloyu, ilerlemeyi ve tablo başına hataları gösterir.
|
||||
|
||||
</Step>
|
||||
<Step>
|
||||
### Farkları seçin
|
||||
|
||||
Eklemeleri, kaldırmaları ve değişiklikleri filtreleyin ve eşitlenecek satırları ya da alanları seçin. Bir ayrıntı önizleme sınırı, gösterilen veri hacmini denetler.
|
||||
|
||||
</Step>
|
||||
<Step>
|
||||
### Eşitleme SQL'ini üretin ve çalıştırın
|
||||
|
||||
DBX, hedef lehçesinde `INSERT`, `UPDATE` ve `DELETE` ifadeleri üretir. Çalıştırmadan önce ifade sayısını ve hedefi inceleyin.
|
||||
|
||||
</Step>
|
||||
</Steps>
|
||||
|
||||
### Veri Farkı Yönü
|
||||
|
||||
| Durum | Anlamı | Hedefe eşitleme |
|
||||
| --- | --- | --- |
|
||||
| Eklenmiş | Satır yalnızca kaynakta var | `INSERT` üretilir |
|
||||
| Kaldırılmış | Satır yalnızca hedefte var | `DELETE` üretilir |
|
||||
| Değişmiş | Aynı anahtar, farklı anahtar dışı sütunlar | `UPDATE` üretilir |
|
||||
| Aynı | Satırlar eşleşiyor | İfade üretilmez |
|
||||
|
||||
Silme eşitlemesi en yüksek riskli seçenektir. Hedefte yerele özgü veriye izin veriliyorsa kaldırmaları seçmeyin.
|
||||
|
||||
## Karşılaştırma Öncesi Denetim Listesi
|
||||
|
||||
- Kaynak ve hedef yönü doğru
|
||||
- Hesaplar eksiksiz meta veriyi, DDL'i ya da tablo verisini okuyabiliyor
|
||||
- Filtreler ve nesne seçimi gerekli bağımlılıkları içeriyor
|
||||
- Anahtar sütunlar benzersiz ve `NULL` durumunu doğru ele alıyor
|
||||
- Lehçeler arası eşlemeler duyarlığı ve anlamı koruyor
|
||||
- Hedefteki salt okunur ve üretim ayarları doğru
|
||||
- Yedekler var ve betikler bir test ortamında doğrulandı
|
||||
|
||||
## Bilinen Sınırlar
|
||||
|
||||
- Dinamik SQL, yordam davranışı, uygulama kodu ve dış ETL şema karşılaştırmasının dışındadır
|
||||
- Yeniden adlandırma algılaması bir benzerlik önerisidir, kesin bir sonuç değildir
|
||||
- Biçimlendirme farkları, anlamı aynı olan metin değişiklikleri üretebilir
|
||||
- Veri karşılaştırma seçili kapsamı okur ve filtrelenmemiş çok büyük tablolar için uygun değildir
|
||||
- İşlem geri alma hedef veritabanına bağlıdır
|
||||
- Yapılandırmalar bağlantı kimliklerini ve kapsamı içerir, veritabanı parolalarını içermez
|
||||
|
||||
<Cards>
|
||||
<Card title="Tek bir tabloyu düzenleyin" href="/tr/docs/table-structure">
|
||||
Sütunları, dizinleri, yabancı anahtarları ve tetikleyicileri görsel olarak düzenleyin.
|
||||
</Card>
|
||||
<Card title="Veritabanını yedekleyin" href="/tr/docs/database-backup">
|
||||
Riskli eşitlemeden önce elle ya da zamanlanmış mantıksal yedekler oluşturun.
|
||||
</Card>
|
||||
<Card title="Veri aktarın" href="/tr/docs/data-transfer">
|
||||
Amaç satırları karşılaştırmak değil de tabloların tamamını taşımaksa bunu kullanın.
|
||||
</Card>
|
||||
<Card title="Üretim güvenliği" href="/tr/docs/production-safety">
|
||||
Dağıtım ve veri eşitlemesi için üretim onayını inceleyin.
|
||||
</Card>
|
||||
</Cards>
|
||||
@@ -0,0 +1,154 @@
|
||||
---
|
||||
title: Özel Çalışma Alanları
|
||||
description: DBX'te Redis, MongoDB, arama ve vektör veritabanlarını, HBase'i, mesaj kuyruklarını, etcd'yi, ZooKeeper'ı, Nacos'u ve Consul KV'yi yönetin.
|
||||
---
|
||||
|
||||
SQL düzenleyicinin ve veri ızgarasının yanı sıra DBX, belirli bağlantı türleri için özel çalışma alanları açar. Bu arayüzler her sistemin kendi nesne modelini ve yönetim API'lerini kullanır: Redis anahtarları, MongoDB belgeleri, vektör koleksiyonları, mesaj kuyruğu konuları, etcd anahtarları, ZooKeeper ZNode'ları, Nacos yapılandırmaları ve Consul KV girdileri.
|
||||
|
||||
<Callout type="info">Özel yetenekler; veritabanı türüne, sunucu sürümüne, sürücüye ve hesap yetkilerine göre dinamik olarak etkinleşir. Bir giriş noktası görünmüyorsa [Veritabanı Desteği](/tr/docs/databases) sayfasını, bağlantı testi sonucunu ve sunucu yetkilerini denetleyin.</Callout>
|
||||
|
||||
## Çalışma Alanlarına Genel Bakış
|
||||
|
||||
| Kategori | Bağlantı türleri | Başlıca giriş noktaları |
|
||||
| --- | --- | --- |
|
||||
| Anahtar/değer ve belge | Redis, MongoDB | Anahtar ya da belge gözatma, filtreleme, düzenleme, komutlar ve toplama akışları |
|
||||
| Arama ve belge dizinleri | Elasticsearch, Easysearch, Meilisearch, Manticore Search | Dizin/belge gözatma ve motora özgü istekler |
|
||||
| Vektör veritabanları | Qdrant, Milvus, Weaviate, ChromaDB | Koleksiyon gözatma, vektör arama, upsert, silme ve istek önizlemesi |
|
||||
| Geniş sütun ve sütun ailesi | HBase | Ad alanları, tablo yapısı, sütun aileleri ve satır verisi |
|
||||
| Mesaj kuyrukları | Pulsar, Kafka, RocketMQ, RabbitMQ | Konular, abonelikler ya da tüketiciler, mesajlar, izleme, yetkiler, politikalar ve yönetim API'leri |
|
||||
| Kayıt ve yapılandırma | etcd, ZooKeeper, Nacos, Consul | Anahtarlar/ZNode'lar, küme durumu, erişim denetimi, yapılandırma, servisler ve örnekler |
|
||||
| Çalışma zamanı durumu | MySQL, PostgreSQL, Redis, etcd, Nacos ve diğerleri | Panolar, işlemler ya da oturumlar, metrikler ve veritabanına özgü yönetim görünümleri |
|
||||
|
||||
## Redis ve MongoDB
|
||||
|
||||
Redis ve MongoDB için ayrı kılavuzlar vardır:
|
||||
|
||||
<Cards>
|
||||
<Card title="Redis Gezgini" href="/tr/docs/redis">
|
||||
Anahtarlara gözatın ve arayın, birden çok veri türünü düzenleyin, komut çalıştırın, istatistikleri ve Slowlog'u inceleyin.
|
||||
</Card>
|
||||
<Card title="MongoDB Gezgini" href="/tr/docs/mongodb">
|
||||
Koleksiyonlara ve belgelere gözatın, filtreleyin, sayfalayın, düzenleyin, dizinleri yönetin ve GridFS verisiyle çalışın.
|
||||
</Card>
|
||||
</Cards>
|
||||
|
||||
Bir bağlantı salt okunur olduğunda DBX; Redis, MongoDB ve GridFS değişikliklerini devre dışı bırakır ya da reddeder. Tehlikeli Redis komutları ayrıca ayrı bir komut güvenliği sınıflandırıcısından geçer.
|
||||
|
||||
## Arama ve Belge Dizinleri
|
||||
|
||||
Elasticsearch, Easysearch, Meilisearch ve Manticore Search dizin ve belge odaklı gözatma kullanır. DBX, sürücü meta verisinden dizinleri ya da koleksiyonları gösterir ve belgelere gözatmak, sorgulamak ve incelemek için giriş noktaları sunar.
|
||||
|
||||
Şu sınırları göz önünde bulundurun:
|
||||
|
||||
- Elasticsearch, Easysearch ve Meilisearch, geleneksel veritabanı TCP portları yerine HTTP/HTTPS uç noktalarına bağlanır
|
||||
- Meilisearch, DBX'in yerleşik Rust HTTP sürücüsünü kullanır; API anahtarı bağlantının parola alanında saklanır ve varsayılan port `7700`'dür
|
||||
- TLS, proxy kullanımı ve kimlik doğrulama; bağlantı türüne ve sunucu yapılandırmasına bağlıdır
|
||||
- Belge sorguları ve değişiklikleri sürücüye, sunucu sürümüne ve hesap yetkilerine göre değişir
|
||||
- Şema karşılaştırma ya da SQL dosyası çalıştırma gibi SQL iş akışları, yalnızca motor bunları güvenilir biçimde desteklediğinde görünür
|
||||
|
||||
## Vektör Veritabanları
|
||||
|
||||
Qdrant, Milvus, Weaviate ve ChromaDB bir vektör koleksiyonu çalışma alanı açar. Motora bağlı olarak şunları yapabilir:
|
||||
|
||||
- Koleksiyonlara ve kayıtlara gözatma
|
||||
- Boyut ya da şema ayrıntılarını gösterme
|
||||
- Bir girdi vektörüyle Top K benzerlik araması çalıştırma
|
||||
- Ham isteği önizleme ya da düzenleme
|
||||
- Vektörleri, yükleri/meta veriyi ya da belgeleri upsert etme
|
||||
- Kayıtları kimliğe ya da istek koşuluna göre silme
|
||||
|
||||
Ürünler farklı API'ler, koleksiyon modelleri ve arama parametreleri kullanır. DBX motora özgü bir istek şablonu üretir; ancak boyutlar, alan adları, uzaklık ölçütleri ve dizin ayarları hedef veritabanıyla eşleşmelidir.
|
||||
|
||||
<Callout type="warn">Vektör upsert ve silme işlemleri birer yazma işlemidir. Üretim bağlantıları; veritabanı yetkilerini, DBX salt okunur/üretim korumasını ve insan tarafından istek incelemesini birlikte kullanmalıdır.</Callout>
|
||||
|
||||
## HBase
|
||||
|
||||
HBase çalışma alanı; ad alanları, tablolar, sütun aileleri ve satır anahtarları çevresinde düzenlenmiştir. Agent ve sunucu yeteneklerine bağlı olarak tablo yapısına ve satırlara gözatabilir; yazılabilir bağlantılarda oluşturma, değiştirme, truncate etme ya da silme işlemlerini sunabilir.
|
||||
|
||||
Tarama aralıkları ve filtreler sunucu yükünü doğrudan etkiler. Büyük tablolarda tam taramayı sıradan bir ilişkisel veri ızgarası gibi görmek yerine satır anahtarı aralıklarını, sayfa boyutunu ve döndürülen sütunları sınırlayın.
|
||||
|
||||
## Mesaj Kuyrukları
|
||||
|
||||
Pulsar, Kafka, RocketMQ ve RabbitMQ ortak mesaj kuyruğu konsol çerçevesini paylaşır, ancak her sistem yalnızca kendi yeteneklerinin desteklediği panelleri gösterir. Ortak alanlar şunlardır:
|
||||
|
||||
- Konular ile ad alanları, kiracılar ya da sanal sunucular
|
||||
- Abonelikler, tüketici grupları, üreticiler ve istemciler
|
||||
- Mesaj sorgulama, gönderme ve izleme
|
||||
- Broker ya da küme izleme
|
||||
- Yetkiler, politikalar, kotalar ve ilgili yönetim
|
||||
- Sürücünün sunduğu ham API istekleri
|
||||
|
||||
Pulsar; kiracıları, ad alanlarını ve abonelikleri öne çıkarır. Kafka konuları, tüketici gruplarını ve broker'ları kullanır. RocketMQ mesaj ve iz akışlarını ekler. RabbitMQ sanal sunucuları, değiş tokuşları/kuyrukları, bağlantıları, politikaları ve yetkileri kullanır.
|
||||
|
||||
<Callout type="info">Mesaj kuyruğu panelleri yetenek odaklıdır. Sunucu sürümleri, yönetim API'leri, hesap yetkileri ya da eksik bir yönetim portu, tek tek sekmeleri kullanılamaz kılabilir.</Callout>
|
||||
|
||||
## etcd, ZooKeeper, Nacos ve Consul
|
||||
|
||||
### etcd
|
||||
|
||||
etcd; bir anahtar gezgini, küme panosu ve erişim denetimi çalışma alanı sunar. Kullanılabilir özellikler arasında önek gözatma, değer düzenleme, kira bilgisi, üye ve sağlık durumu, metrikler ile kullanıcı/rol yönetimi bulunur.
|
||||
|
||||
### ZooKeeper
|
||||
|
||||
ZooKeeper hiyerarşik veriyi bir ZNode ağacı olarak gösterir. Yollara gözatıp düğüm içeriğini inceleyebilir, yetkiler ve bağlantı durumu izin verdiğinde düğüm oluşturabilir, güncelleyebilir ya da silebilirsiniz.
|
||||
|
||||
### Nacos
|
||||
|
||||
Nacos çalışma alanı yapılandırmayı ve servisleri kapsar; ayrıca ad alanlarını da yönetebilir. Bağlantıya ve konsol API'sine bağlı olarak şunları içerir:
|
||||
|
||||
- Yapılandırma oluşturma, düzenleme, silme ve tam metin arama
|
||||
- Yapılandırma geçmişi, sürüm karşılaştırması ve geri alma
|
||||
- Toplu içe/dışa aktarma ve ad alanları arası kopyalama
|
||||
- Servisler, örnekler, ağırlıklar ve sağlık verisi
|
||||
- Pano ve Ham API erişimi
|
||||
|
||||
Yapılandırma geçmişi ek bir konsol URL'si ve kimlik bilgileri gerektirebilir. Bağlantı çalışıyor ama geçmiş kullanılamıyorsa bağlantı formundaki konsol ayarlarını denetleyin.
|
||||
|
||||
### Consul
|
||||
|
||||
Consul çalışma alanı; bağımsız olarak yüklenen Genel Bakış, KV, Servisler, Sağlık, Oturumlar, ACL, Kapsam, Service Mesh, Araçlar ve Operator alanlarına ayrılmıştır. Yetenek yoklamaları; desteklenen, desteklenmeyen, yasak ve bilinmeyen uç noktaları ayırt eder; böylece bir alandaki yetki hatası başka bir alanın yüklediği veriyi silmez.
|
||||
|
||||
Bağlantılar; bir HTTP veya HTTPS API adresi, ACL Belirteci, Veri merkezi, Ad alanı, Yönetim Bölümü, okuma tutarlılığı, CA sertifikası, mTLS kimliği, sertifika doğrulama geçersiz kılması, zaman aşımı ve DBX Taşıma Katmanı kabul eder. Agent Servis ve Denetim yazmaları ayrıca doğrulanmış ve açık bir Agent hedefi gerektirir; bir yük dengeleyici hedefi belirsizleştiriyorsa DBX bu yazmaları reddeder.
|
||||
|
||||
KV; özyinelemeli aramayı, sürümlü önek dışa aktarmayı, değişmez içe aktarma önizlemesini, CAS çakışma işlemeyi, işlemleri, atomik yeniden adlandırma/kopyalamayı, sınırlı işlemsel önek silmeyi ve iptal edilebilir engelleyici sorgu İzleme'yi destekler. Consul işlemleri 64 işlemle sınırlıdır; daha büyük içe aktarmalar ve silmeler belirlenimci biçimde bölünür ve gruplar arasında atomik olmadığı açıkça bildirilir. Bağlantılar arası ya da veri merkezleri arası göç, yerel Consul çoğaltması değil, bir DBX istemci okuma/yazma iş akışıdır.
|
||||
|
||||
Katalog ve Sağlık salt okunur keşif görünümleri olarak kalır. Agent Servis/Denetim, Oturum/Kilit, ACL Belirteci/Politikası/Rolü, Enterprise Ad Alanı/Bölümü ve Service Mesh kaynakları alana özgü DTO'lar ve onaylar kullanır. ACL gizli bilgileri ve peering belirteçleri tek seferlik hassas değerler olarak ele alınır; Consul ön yüz önbelleğinde ya da normal dışa aktarma biçimlerinde saklanmaz.
|
||||
|
||||
Prepared Query, Event ve Coordinate, Araçlar altında bulunur. Operator okumaları ve anlık görüntü indirme deneyseldir. Anlık görüntü geri yükleme, Autopilot güncellemeleri, Raft değişiklikleri, Keyring değişiklikleri ve Lisans güncellemeleri varsayılan olarak kapalıdır ve ayrı özellik anahtarlarına sahiptir; birini açmak diğerini açmaz.
|
||||
|
||||
<Callout type="warn">Consul'da anahtar başına geçmiş API'si ve yerel bir veri merkezleri arası KV çoğaltma API'si yoktur. `ModifyIndex`, engelleyici dizinler ve anlık görüntüler Anahtar geçmişi olarak sunulmaz. Enterprise ve Operator kullanılabilirliği; Consul sürümüne, edisyonuna, Agent rolüne, ACL politikasına ve açıkça etkinleştirilmiş DBX güvenlik ayarlarına bağlıdır.</Callout>
|
||||
|
||||
## Panolar ve Yönetim Görünümleri
|
||||
|
||||
Bazı bağlantılar, nesne ağacından ya da bir sekmeden çalışma zamanı durum sayfaları sunar:
|
||||
|
||||
- MySQL ve PostgreSQL panoları ya da işlem/oturum görünümleri
|
||||
- Redis örnek bilgisi, istatistikleri ve Slowlog
|
||||
- etcd üyeleri, veritabanı boyutu ve Raft/kira ile ilgili metrikler
|
||||
- Nacos ad alanı, yapılandırma, servis ve örnek istatistikleri
|
||||
- Mesaj kuyruğu broker, konu, istemci ve tüketim durumu
|
||||
|
||||
Bu sayfalar inceleme ve sorun giderme içindir; uzun vadeli izleme için değildir. Uyarılara, geçmiş eğilimlere ve kapasite planlamasına ihtiyacınız olduğunda Prometheus, Grafana ya da bir üreticinin izleme platformunu kullanın.
|
||||
|
||||
## Güvenlik ve Uyumluluk Sınırları
|
||||
|
||||
- Özel çalışma alanları bağlantının salt okunur durumuna uyar; MCP'ye açılan özel komutlar da genel MCP politikasını izler.
|
||||
- Üretim koruması, DBX'in tanıdığı yazmalar için geçerli olmayı sürdürür; son sınır veritabanı yetkileridir.
|
||||
- Sürücüler yalnızca güvenilir biçimde uygulayabildikleri yetenekleri sunar, bu yüzden aynı kategori içinde bile sekmeler farklılaşabilir.
|
||||
- Yönetim API'leri ve veri protokolleri farklı portlar kullanabilir; örneğin RabbitMQ Yönetim API'si ya da Nacos konsol API'si.
|
||||
- Docker/Web'de dosya yolları ve ağ erişilebilirliği tarayıcının çalıştığı bilgisayara değil sunucu ortamına aittir.
|
||||
|
||||
<Cards>
|
||||
<Card title="Veritabanı matrisini inceleyin" href="/tr/docs/databases">
|
||||
Bağlantı türlerini, varsayılan portları, sürücü mimarisini ve gelişmiş özellik kapsamını denetleyin.
|
||||
</Card>
|
||||
<Card title="Sürücüleri yapılandırın" href="/tr/docs/driver-management">
|
||||
Agent/JDBC sürücülerini kurun ya da güncelleyin, çalışma zamanı bağımlılıklarını yönetin.
|
||||
</Card>
|
||||
<Card title="Yazma korumasını ayarlayın" href="/tr/docs/production-safety">
|
||||
Salt okunur bağlantıları, üretim korumasını ve MCP yetkilerini yapılandırın.
|
||||
</Card>
|
||||
<Card title="Bağlantı sorunlarını giderin" href="/tr/docs/ssh-tunnel">
|
||||
TLS, SSH, SOCKS5, HTTP proxy ya da HTTP tünelleri yapılandırın.
|
||||
</Card>
|
||||
</Cards>
|
||||
@@ -0,0 +1,123 @@
|
||||
---
|
||||
title: SQL Dosyası Çalıştırma
|
||||
description: Bir veya daha fazla SQL dosyasını sırayla önizleyip çalıştırın; dosya başına istatistik, ifade ilerlemesi ve hata bildirimi alın.
|
||||
---
|
||||
|
||||
SQL Dosyası Çalıştırma; başlangıç betiklerini, veritabanı dışa aktarımlarını, veri yamalarını ve göçleri çalıştırır. DBX önce kısaltılmış bir önizleme gösterir, ardından dosyaları seçim sırasına, ifadeleri betik sırasına göre çalıştırır.
|
||||
|
||||
<Callout type="warn">SQL dosyaları çok miktarda veri ve şema oluşturabilir, değiştirebilir ya da kaldırabilir. Önizleme dosyanın tamamı değildir ve bir betiğin güvenli olduğunu kanıtlayamaz. Çalıştırmadan önce hedef bağlantıyı, veritabanını, dosya sırasını ve kaynağı doğrulayın.</Callout>
|
||||
|
||||
## Masaüstü ve Docker/Web
|
||||
|
||||
| Çalışma zamanı | Dosya konumu ve işlenişi |
|
||||
| --- | --- |
|
||||
| Masaüstü | Bir veya daha fazla yerel `.sql` dosyasını doğrudan seçer ve yerel dosya adı ya da yol bilgisini gösterebilir |
|
||||
| Docker/Web | Tarayıcıdan seçilen dosyaları geçici DBX sunucu deposuna yükler; arayüz sunucudaki UUID yolları yerine seçili adları gösterir |
|
||||
|
||||
Docker/Web'de okuma ve çalıştırma sunucuda gerçekleşir. Geçici kaynaklar işlemden sonra serbest bırakılır. Sunucu, tarayıcının çalıştığı bilgisayardaki rastgele yolları doğrudan açamaz.
|
||||
|
||||
## İş Akışı
|
||||
|
||||
<Steps>
|
||||
<Step>
|
||||
### Bir veya Daha Fazla Dosya Seçin
|
||||
|
||||
Dosyalar seçim sırasında kalır. Çoklu dosya modu bir yan liste gösterir; önizleme bölmesini değiştirmek için bir öğe seçin.
|
||||
|
||||
</Step>
|
||||
<Step>
|
||||
### Önizlemeyi ve Dosya Ayrıntılarını İnceleyin
|
||||
|
||||
Her dosya adını, boyutunu, önizleme satırlarını ve kısaltılma durumunu bildirir. Büyük dosyalarda yalnızca sınırlı bir önizleme okunur; çalıştırma yine de içeriğin tamamını akış hâlinde işler.
|
||||
|
||||
</Step>
|
||||
<Step>
|
||||
### Bağlantı ve Veritabanı Seçin
|
||||
|
||||
Normalde bir hedef veritabanı gereklidir. Betik, örneğin daha önce tanınan bir `USE` ile veritabanı bağlamını kendisi kuruyorsa, DBX desteklenen yollarda önceden seçilmiş bir veritabanı olmadan da çalıştırmaya izin verebilir.
|
||||
|
||||
</Step>
|
||||
<Step>
|
||||
### Hata Politikasını Seçin ve Onaylayın
|
||||
|
||||
Çalıştırma varsayılan olarak ilk hatada durur. Hatada devam et seçeneği hataları kaydeder ve sonraki ifadelere ve dosyalara geçer. Korumalı üretim bağlamları, çalıştırmadan önce yeni bir onay ister.
|
||||
|
||||
</Step>
|
||||
<Step>
|
||||
### Çalıştırın ve Sonuçları İnceleyin
|
||||
|
||||
İlerleme; geçerli dosyayı, ifade dizinini, başarı ve hata sayılarını, etkilenen satırları, geçen süreyi, ifade özetini ve hatayı içerir. Çoklu dosya çalıştırmaları, dosya başına istatistikler ve toplamlarla biter.
|
||||
|
||||
</Step>
|
||||
</Steps>
|
||||
|
||||
## Çoklu Dosya Oturum Anlamı
|
||||
|
||||
Seçili dosyalar tek bir yürütme görevi oluşturur ve liste sırasına göre çalışır. MySQL uyumlu yollar, toplu işin tamamında sabitlenmiş tek bir bağlantıyı yeniden kullanır; bu yüzden önceki bir dosyanın kurduğu durum sonraki dosyaları etkileyebilir:
|
||||
|
||||
- `USE database`
|
||||
- Geçici tablolar
|
||||
- Oturum değişkenleri ve ayarları
|
||||
- Açık işlemler
|
||||
|
||||
Bu, bölünmüş başlangıç ve geri yükleme betiklerini destekler ama sırayı önemli kılar. Oturum durumu birbirine sızabilecekse ilgisiz betikleri aynı toplu işte çalıştırmayın.
|
||||
|
||||
## İfade Bölme ve İçe Aktarma Yardımcıları
|
||||
|
||||
DBX dosyaları akış olarak okur ve her noktalı virgülde bölmek yerine veritabanı farkındalıklı bölme kullanır:
|
||||
|
||||
- Dizelerin, satır yorumlarının ve blok yorumlarının içindeki noktalı virgüller bir ifadeyi sonlandırmaz
|
||||
- PostgreSQL dolar işaretiyle tırnaklanmış işlev gövdeleri bozulmaz
|
||||
- Tek başına duran SQL Server `GO` satırları toplu işleri böler
|
||||
- MySQL yordamlarındaki `DELIMITER` iş akışları tanınır
|
||||
- MySQL çalıştırılabilir yorumları uyumlu hedefler için açılır, diğer hedefler için atlanır
|
||||
- `ENABLE/DISABLE KEYS`, `LOCK/UNLOCK TABLES` ve belirli oturum durumu geri yükleme yönergeleri gibi içe aktarma yardımcıları, yürütücü politikasına göre işlenir ya da atlanır
|
||||
|
||||
Veritabanı lehçeleri ve betik üreticileri birbirinden çok farklıdır. Karmaşık betikleri, özellikle özel ayırıcılar, yalnızca istemcide çalışan komutlar ya da yönetim araçlarının ürettiği meta komutlar içerenleri önce test edin.
|
||||
|
||||
## Hata Politikası
|
||||
|
||||
### Hatada Dur
|
||||
|
||||
Varsayılan davranış, ilk başarısız ifadeden sonra görevi sonlandırır. DBX tamamlanan istatistikleri, başarısız ifadenin özetini ve veritabanı hatasını saklar.
|
||||
|
||||
### Hatada Devam Et
|
||||
|
||||
Etkinleştirildiğinde DBX bir hata kaydeder ve devam eder. Çoklu dosya görevleri ayrıca sonraki dosyaya geçer ve her dosya için başarı sayısını, hata sayısını, etkilenen satırları ve geçen süreyi bildirir.
|
||||
|
||||
<Callout type="info">Hatada devam et yalnızca görev denetim akışını değiştirir. İşlem durumunu onarmaz. Bazı veritabanları bir işlem hatasından sonra açık bir rollback ister, bu yüzden sonraki ifadeler de başarısız olmayı sürdürebilir.</Callout>
|
||||
|
||||
## İptal ve İşlemler
|
||||
|
||||
İptal, sonraki ifadeleri durdurur; ancak zaten gönderilmiş ya da uygulanmış ifadeler otomatik olarak geri alınmaz. Betiğin atomik olması gerekiyorsa işlemleri açıkça yönetin ve hedef motorun, DDL'in ve içe aktarma ifadelerinin istediğiniz anlamı sağladığını doğrulayın.
|
||||
|
||||
Ortak bir çoklu dosya oturumunda açık bir işlem dosya sınırlarını aşarak sürebilir. İletişim kutusunu kapatmanın commit ya da rollback yapacağına güvenmek yerine açık `BEGIN`, `COMMIT` veya `ROLLBACK` ifadeleri kullanın.
|
||||
|
||||
## Veritabanı Kapsamı
|
||||
|
||||
Bu işlem, sürücünün `sqlFileExecution` yeteneğini izler. SQL odaklı sürücülerin çoğu bunu etkinleştirir. Redis, MongoDB, arama, vektör, HBase, yapılandırma merkezi ve mesaj kuyruğu çalışma alanları ilişkisel SQL dosyalarını çalıştırmaz.
|
||||
|
||||
Sorgu çalıştırma desteği, her istemci betik diliyle uyumluluğu garanti etmez. `psql`, `mysql`, `sqlcmd` ya da başka bir istemciye özgü meta komutların, veritabanı sunucusunun doğrudan kabul ettiği SQL'e dönüştürülmesi gerekebilir.
|
||||
|
||||
## Çalıştırmadan Önce
|
||||
|
||||
- Dosya sırasını ve veritabanı bağlamını doğrulayın
|
||||
- Önizlemelerin kısaltılıp kısaltılmadığını denetleyin ve dosyaların tamamını bir düzenleyicide inceleyin
|
||||
- `DROP`, `TRUNCATE`, koşulsuz `UPDATE` / `DELETE`, yetki değişiklikleri ya da yapılandırma değişikliklerini arayın
|
||||
- Hatada devam etmenin kritik bir hatayı gizleyip gizlemeyeceğine karar verin
|
||||
- Hedefteki salt okunur ve üretim korumasını denetleyin
|
||||
- Uygun olduğunda önce bir [Veritabanı Dışa Aktarma](/tr/docs/database-export) ya da [Veritabanı Yedekleme](/tr/docs/database-backup) yapın
|
||||
|
||||
## İlgili Özellikler
|
||||
|
||||
<Cards>
|
||||
<Card title="Veritabanı Dışa Aktarma" href="/tr/docs/database-export">
|
||||
Yapı, veri ve nesne SQL dosyaları üretin.
|
||||
</Card>
|
||||
<Card title="Veritabanı Yedekleme" href="/tr/docs/database-backup">
|
||||
Masaüstü'nde MySQL ve PostgreSQL yedeklerini zamanlayın.
|
||||
</Card>
|
||||
<Card title="Üretim Güvenliği" href="/tr/docs/production-safety">
|
||||
Çalıştırma öncesi onayı, salt okunur korumayı ve yetki sınırlarını öğrenin.
|
||||
</Card>
|
||||
</Cards>
|
||||
@@ -0,0 +1,113 @@
|
||||
---
|
||||
title: SQL Biçimlendirme
|
||||
description: Bir seçimi ya da düzenleyicinin tamamını veritabanı farkındalıklı sözdizimiyle biçimlendirin, ardından geçerli biçimlendirici seçeneklerini ve JSON yapılandırmasını yönetin.
|
||||
---
|
||||
|
||||
DBX, biçimlendirici lehçesini etkin bağlantıdan seçer ve sonucu sorgu düzenleyicisine geri yazar. Metin seçiliyse yalnızca o aralık biçimlendirilir; aksi hâlde DBX düzenleyicinin tamamını biçimlendirir.
|
||||
|
||||
**SQL'i Biçimlendir** araç çubuğu düğmesini ya da [Klavye Kısayolları](/tr/docs/keyboard-shortcuts) sayfasında belgelenen yapılandırılabilir biçimlendirme komutunu kullanın.
|
||||
|
||||
<Callout type="info">
|
||||
Biçimlendirme yalnızca metni yeniden yazar, hiçbir zaman SQL çalıştırmaz. Desteklenmeyen sözdizimi hata döndürür ve özgün metni değiştirmeden bırakır. Tek bir biçimlendirme işlemi en fazla `1.000.000` karakter kabul eder.
|
||||
</Callout>
|
||||
|
||||
## Lehçe Seçimi
|
||||
|
||||
DBX şu an şu diller için özel biçimlendirici gramerleri kullanır:
|
||||
|
||||
| Bağlantı türü | Biçimlendirici lehçesi |
|
||||
| --- | --- |
|
||||
| MySQL | MySQL |
|
||||
| PostgreSQL, openGauss, GaussDB, KingbaseES, Redshift ve ilgili profiller | PostgreSQL |
|
||||
| SQLite, Turso, rqlite ve Cloudflare D1 | SQLite |
|
||||
| SQL Server | Transact-SQL |
|
||||
| ClickHouse | ClickHouse |
|
||||
| Diğer SQL veritabanları | Genel SQL; gerektiğinde bir kez PostgreSQL grameriyle yeniden denenir |
|
||||
|
||||
MongoDB sorgu düzenleyicisi bu SQL lehçesi eşlemesi yerine ayrı bir Mongo Shell biçimlendiricisi kullanır.
|
||||
|
||||
## Biçimlendirme Seçeneklerini Yapılandırma
|
||||
|
||||
**Ayarlar → SQL Biçimlendirici** bölümünü açın. Form modu şunları sunar:
|
||||
|
||||
| Seçenek | Değerler veya davranış |
|
||||
| --- | --- |
|
||||
| Anahtar sözcük, veri türü, işlev ve tanımlayıcı harf durumu | `upper`, `lower` veya `preserve` |
|
||||
| Girinti biçemi | `standard`, `tabularLeft` veya `tabularRight` |
|
||||
| Girinti | Boşluk veya sekme |
|
||||
| Sekme genişliği | `2` veya `4` |
|
||||
| Mantıksal işleçte satır sonu | İşleçten önce veya sonra |
|
||||
| İfade genişliği | `50`, `80` veya `120` |
|
||||
| Sorgular arası satır sayısı | `0`, `1` veya `2` |
|
||||
| Sık işleçler | İşleçlerin çevresindeki boşlukları azaltır |
|
||||
| Noktalı virgülden önce satır sonu | İfadeyi sonlandıran noktalı virgülü yeni satıra koyar |
|
||||
| Parametre türleri | Konumsal, numaralı, adlandırılmış, tırnaklı veya özel regex parametrelerini tanır |
|
||||
|
||||
**Varsayılanları Geri Yükle**, geçerli DBX derlemesinde tanımlı biçimlendirici ayarlarını geri getirir. Değişiklikleri kalıcı kılmak için ayarlar iletişim kutusunda **Uygula**'ya tıklayın.
|
||||
|
||||
## JSON Modu ve İçe / Dışa Aktarma
|
||||
|
||||
JSON modu; biçimlendirici ayarlarını tam olarak düzenlemek, kopyalamak ya da taşımak için kullanışlıdır. Geçerli dosya yalnızca `version`, `formatter` ve `options` alanlarını içerir:
|
||||
|
||||
```json
|
||||
{
|
||||
"version": 1,
|
||||
"formatter": "sql-formatter",
|
||||
"options": {
|
||||
"keywordCase": "upper",
|
||||
"dataTypeCase": "preserve",
|
||||
"functionCase": "preserve",
|
||||
"identifierCase": "preserve",
|
||||
"indentStyle": "standard",
|
||||
"useTabs": false,
|
||||
"tabWidth": 2,
|
||||
"logicalOperatorNewline": "before",
|
||||
"expressionWidth": 50,
|
||||
"linesBetweenQueries": 1,
|
||||
"denseOperators": false,
|
||||
"newlineBeforeSemicolon": false,
|
||||
"paramTypes": null
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
JSON düzenleyici taslağı sürekli doğrular. DBX şu durumlarda uygulamayı veya içe aktarmayı engeller:
|
||||
|
||||
- metin geçerli JSON değilse;
|
||||
- `version` değeri `1` değilse;
|
||||
- `formatter` değeri `sql-formatter` değilse;
|
||||
- `options` bilinmeyen bir alan içeriyorsa; ya da
|
||||
- bir değer geçerli derlemenin kabul ettiği aralığın dışındaysa.
|
||||
|
||||
**Yapılandırmayı Dışa Aktar**, `dbx-sql-formatter.json` dosyasını indirir. İçe aktarma yalnızca SQL biçimlendirici seçeneklerini değiştirir; bağlantıları, düzenleyici kısayollarını ya da diğer DBX ayarlarını değiştirmez. Daha geniş bir ayar taşıması gerektiğinde [Yapılandırma Bulut Eşitlemesi](/tr/docs/cloud-sync) kullanın.
|
||||
|
||||
## Parametre Tanıma
|
||||
|
||||
Biçimlendirici varsayılanlarını kullanmak için `paramTypes` değerini `null` yapın. Ek parametre sözdizimini şuna benzer bir nesneyle yapılandırın:
|
||||
|
||||
```json
|
||||
{
|
||||
"positional": true,
|
||||
"numbered": ["?", "$"],
|
||||
"named": [":", "@", "$"],
|
||||
"quoted": [":", "@", "$"],
|
||||
"custom": [
|
||||
{ "regex": "@\\{[^}]+\\}" }
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
- `numbered` yalnızca `?`, `:` ve `$` kabul eder.
|
||||
- `named` ve `quoted` yalnızca `:`, `@` ve `$` kabul eder.
|
||||
- Her `custom` öğesi yalnızca boş olmayan, geçerli bir `regex` içerebilir.
|
||||
|
||||
DBX her zaman `${ad}` ve `#{ad}` değişkenleri için tanıma ekler; böylece bu şablonlar biçimlendirici ayrıştırma hatasına yol açmaz. `null` olmayan eski `params` seçeneği artık metin değiştirme için kullanılmaz; bunun yerine `paramTypes` değerini yapılandırın.
|
||||
|
||||
<Cards>
|
||||
<Card title="Sorgu Düzenleyici" href="/tr/docs/query-editor">
|
||||
Biçimlendirmenin, sıkıştırmanın, yürütme kapsamının ve tamamlamanın nasıl çalıştığını öğrenin.
|
||||
</Card>
|
||||
<Card title="SQL Parçacıkları" href="/tr/docs/sql-snippets">
|
||||
Sekmeyle gezilen yer tutucularla yeniden kullanılabilir SQL şablonları oluşturun.
|
||||
</Card>
|
||||
</Cards>
|
||||
@@ -0,0 +1,72 @@
|
||||
---
|
||||
title: SQL Hızlı İşlemleri
|
||||
description: Bir tablo adı seçip kısayola basarak düzenleyiciden özel SQL şablonlarını çalıştırın.
|
||||
---
|
||||
|
||||
SQL Hızlı İşlemleri, sorgu düzenleyicisinde seçtiğiniz metin üzerinde yeniden kullanılabilir SQL şablonlarını çalıştırmanızı sağlar. Önce bir tablo tanımlayıcısı seçin, ardından **Ayarlar → Kısayollar** bölümünde yapılandırdığınız kısayola basın.
|
||||
|
||||
Bu, tamamlama yoluyla imlecin bulunduğu yere şablon ekleyen [SQL Parçacıkları](/tr/docs/sql-snippets) özelliğinden farklıdır. Hızlı İşlemler, geçerli seçimden SQL üretir ve bunu normal yürütme yolundan geçirir.
|
||||
|
||||
## Hızlı İşlemleri Yönetme
|
||||
|
||||
**Ayarlar → Kısayollar** bölümünü açıp **SQL Hızlı İşlemleri** başlığına gidin. Her işlem şunları içerir:
|
||||
|
||||
| Alan | Amacı |
|
||||
| --- | --- |
|
||||
| Etiket | Ayarlar listesinde görünen ad. |
|
||||
| Kısayol | İşlemi çalıştıran tuş bileşimi. |
|
||||
| Durum | İşlemi silmeden etkinleştirir veya devre dışı bırakır. |
|
||||
| SQL Şablonu | `${table}` ifadesi seçili metinle değiştirildikten sonra çalıştırılan SQL. |
|
||||
|
||||
İşlem ekleyebilir, düzenleyebilir, etkinleştirebilir, devre dışı bırakabilir veya silebilirsiniz. Değişiklikler işlem iletişim kutusundan hemen kaydedilir ya da ayarlar penceresinde **Uygula**'ya tıkladığınızda geçerli olur.
|
||||
|
||||
<Callout type="info">
|
||||
`Mod` içeren kısayollar önerilir (macOS'ta `Cmd`, Windows/Linux'ta `Ctrl`). Bunların, `Shift+U` gibi yalın harf tuşlarına göre normal yazmayı engelleme olasılığı daha düşüktür.
|
||||
</Callout>
|
||||
|
||||
## Hızlı İşlem Çalıştırma
|
||||
|
||||
1. SQL düzenleyicisinde bir tablo adı ya da nitelikli tanımlayıcı seçin, örneğin `orders` veya `public.users`.
|
||||
2. Yapılandırdığınız kısayola basın.
|
||||
3. DBX her `${table}` belirtecini kırpılmış seçimle değiştirir ve genişletilmiş SQL'i çalıştırır.
|
||||
|
||||
Örnek şablon:
|
||||
|
||||
```sql
|
||||
SELECT COUNT(*) FROM ${table}
|
||||
```
|
||||
|
||||
`orders` seçiliyken DBX şunu çalıştırır:
|
||||
|
||||
```sql
|
||||
SELECT COUNT(*) FROM orders
|
||||
```
|
||||
|
||||
Hiçbir şey seçili değilse kısayol çalışmaz ve normal düzenleyici girişi devam eder.
|
||||
|
||||
## Kısayol Çakışmaları
|
||||
|
||||
DBX, Hızlı İşlem kısayollarını şunlara karşı denetler:
|
||||
|
||||
- Listenizdeki diğer Hızlı İşlemler
|
||||
- **Ayarlar → Kısayollar** bölümünde gösterilen yerleşik düzenleyici ve genel kısayollar
|
||||
|
||||
Çakışan atamalar vurgulanır ve siz çözene kadar **Uygula**'yı engeller.
|
||||
|
||||
## Saklama, Eşitleme ve Güvenlik
|
||||
|
||||
Hızlı İşlemler, geçerli DBX çalışma zamanında saklanan düzenleyici ayarlarıdır. Masaüstünde [Yapılandırma Bulut Eşitlemesi](/tr/docs/cloud-sync) bunları diğer düzenleyici ayarlarınızla birlikte eşitleyebilir. [Bağlantı Yapılandırması Taşıma](/tr/docs/config-export) yalnızca veritabanı bağlantılarını taşır ve Hızlı İşlemleri içermez.
|
||||
|
||||
Bir Hızlı İşlem yalnızca SQL üretir; veritabanı yetkilerini veya DBX üretim korumasını atlamaz. Yazma ya da DDL içeren şablonları çalıştırmadan önce tümüyle genişletilmiş ifadeyi inceleyin ve [Üretim Güvenliği](/tr/docs/production-safety) yönergelerini izleyin.
|
||||
|
||||
<Cards>
|
||||
<Card title="SQL Parçacıkları" href="/tr/docs/sql-snippets">
|
||||
Düzenleyici tamamlaması yoluyla imlecin bulunduğu yere yeniden kullanılabilir şablonlar ekleyin.
|
||||
</Card>
|
||||
<Card title="Klavye Kısayolları" href="/tr/docs/keyboard-shortcuts">
|
||||
Yerleşik düzenleyici kısayollarını ve çakışma kurallarını inceleyin.
|
||||
</Card>
|
||||
<Card title="Sorgu Düzenleyici" href="/tr/docs/query-editor">
|
||||
Yürütme kapsamının, sonuç sekmelerinin ve seçimin birlikte nasıl çalıştığını öğrenin.
|
||||
</Card>
|
||||
</Cards>
|
||||
@@ -0,0 +1,78 @@
|
||||
---
|
||||
title: SQL Parçacıkları
|
||||
description: Düzenleyici tamamlaması için yeniden kullanılabilir SQL şablonlarını, tetikleyici öneklerini ve sekmeyle gezilen yer tutucuları yönetin.
|
||||
---
|
||||
|
||||
SQL parçacıkları düzenleyicide tamamlama adayı olarak görünür. Eşleşen bir tetikleyiciyi kabul ederek şablonu imlecin bulunduğu yere ekleyin, ardından düzenlenebilir yer tutucular arasında gezinmek için `Tab` ve `Shift+Tab` tuşlarını kullanın.
|
||||
|
||||
## Parçacıkları Yönetme
|
||||
|
||||
**Ayarlar → Parçacıklar** bölümünü açın. Her parçacık şunları içerir:
|
||||
|
||||
| Alan | Amacı |
|
||||
| --- | --- |
|
||||
| Etiket | Tamamlama listesinde görünen ad. Etiket boşsa DBX öneki kullanır. |
|
||||
| Önek | Tamamlama adayıyla eşleşen metin. Zorunludur ve geçerli parçacık listesinde benzersiz olmalıdır. |
|
||||
| Durum | Parçacığı silmeden etkinleştirir veya devre dışı bırakır. |
|
||||
| SQL Gövdesi | Tamamlamayı kabul ettiğinizde düzenleyiciye eklenen şablon. |
|
||||
|
||||
Parçacık ekleyebilir, düzenleyebilir, etkinleştirebilir, devre dışı bırakabilir veya silebilirsiniz. **Varsayılanları Geri Yükle**, geçerli taslağı DBX'in yerleşik parçacıklarıyla değiştirir; değişikliklerinizi kalıcı kılmak için ayarlar iletişim kutusunda **Uygula**'ya tıklayın.
|
||||
|
||||
<Callout type="info">
|
||||
DBX; `sel`, `ins`, `upd`, `cte` ve `join` gibi yaygın parçacıklarla gelir. Bazı yerleşik şablonlar etkin veritabanına uyum sağlar; örneğin uygun satır sınırı ya da `ALTER TABLE` sözdizimini seçer. Özel parçacıklar tam olarak yazıldığı gibi eklenir.
|
||||
</Callout>
|
||||
|
||||
## Bir Parçacığı Genişletme
|
||||
|
||||
1. SQL düzenleyicisinde `sel` gibi bir önek yazın.
|
||||
2. Tamamlama listesinde etiketi ve gövde önizlemesini doğrulayın.
|
||||
3. Kabul etmek için `Tab` ya da `Enter` tuşuna basın veya adaya tıklayın.
|
||||
4. Şablonda yer tutucular varsa ileri gitmek için `Tab`, geri gitmek için `Shift+Tab` tuşuna basın.
|
||||
|
||||
Hiçbir aday görünmüyorsa parçacığın etkin olduğunu, önekin geçerli metinle eşleştiğini ve düzenleyici otomatik tamamlamasının açık olduğunu doğrulayın.
|
||||
|
||||
## Yer Tutucu Sözdizimi
|
||||
|
||||
DBX, CodeMirror parçacık sözdizimini kullanır:
|
||||
|
||||
| Sözdizimi | Amacı |
|
||||
| --- | --- |
|
||||
| `${}` | Boş, düzenlenebilir bir alan oluşturur. |
|
||||
| `${ad}` | Varsayılan metni `ad` olan bir alan oluşturur; aynı adlı alanlar birlikte düzenlenir. |
|
||||
| `${1}` | Açık bir alan sırası belirler. |
|
||||
| `${1:varsayılanMetin}` | Sırayı belirler ve varsayılan metin sağlar. |
|
||||
| `#{ad}` | `${ad}` biçiminin alternatifi. |
|
||||
|
||||
Numaralı alanlar sayısal sırayı izler. Numarasız alanlar şablondaki metin sırasını izler. Yer tutucu olarak ayrıştırılmaması gereken açma veya kapama süslü parantezini ters eğik çizgiyle kaçırın.
|
||||
|
||||
Örneğin:
|
||||
|
||||
```sql
|
||||
SELECT ${1:columns}
|
||||
FROM ${2:table}
|
||||
WHERE ${3:condition}
|
||||
ORDER BY ${4:column};
|
||||
```
|
||||
|
||||
Birden çok konumu birlikte düzenlemek için bir alanı yeniden kullanın:
|
||||
|
||||
```sql
|
||||
SELECT ${1:column}, COUNT(*) AS cnt
|
||||
FROM ${2:table}
|
||||
GROUP BY ${1:column};
|
||||
```
|
||||
|
||||
## Saklama, Eşitleme ve Güvenlik
|
||||
|
||||
Parçacıklar, geçerli DBX çalışma zamanında saklanan düzenleyici ayarlarıdır. Masaüstünde [Yapılandırma Bulut Eşitlemesi](/tr/docs/cloud-sync) parçacıkları diğer düzenleyici ayarlarınızla birlikte eşitleyebilir. [Bağlantı Yapılandırması Taşıma](/tr/docs/config-export) yalnızca veritabanı bağlantılarını taşır ve parçacıkları içermez.
|
||||
|
||||
Bir parçacık yalnızca SQL üretir; veritabanı yetkilerini veya DBX üretim korumasını atlamaz. Yazma ya da DDL içeren şablonları çalıştırmadan önce tümüyle genişletilmiş ifadeyi inceleyin ve [Üretim Güvenliği](/tr/docs/production-safety) yönergelerini izleyin.
|
||||
|
||||
<Cards>
|
||||
<Card title="Sorgu Düzenleyici" href="/tr/docs/query-editor">
|
||||
Tamamlama, yürütme kapsamı, geçmiş ve SQL dosyalarının birlikte nasıl çalıştığını öğrenin.
|
||||
</Card>
|
||||
<Card title="Klavye Kısayolları" href="/tr/docs/keyboard-shortcuts">
|
||||
Tamamlamayı kabul etme, biçimlendirme ve çalıştırma için geçerli kısayolları inceleyin.
|
||||
</Card>
|
||||
</Cards>
|
||||
@@ -0,0 +1,183 @@
|
||||
---
|
||||
title: Tünel / Proxy
|
||||
description: Özel veritabanlarına SSH tünelleri, HTTP tünelleri, SOCKS5 proxy'leri ya da HTTP proxy'leri üzerinden bağlanın.
|
||||
---
|
||||
|
||||
<Callout type="info">DBX, doğrudan erişilemeyen veritabanları için bağlantı katmanları açabilir. Bunları bağlantı iletişim kutusundaki **Tünel / Proxy** sekmesinden yapılandırın.</Callout>
|
||||
|
||||
<Callout type="warning">
|
||||
Tüneller, DBX arka ucunun çalıştığı yerde çalışır. Masaüstü'nde yerel yollar ve geçici dinleyiciler sizin bilgisayarınıza aittir. Docker/Web'de yollar, ağ çıkışı ve geçici dinleyiciler tarayıcının çalıştığı bilgisayara değil sunucuya ya da kapsayıcıya aittir.
|
||||
</Callout>
|
||||
|
||||
DBX üç tünel / proxy türünü destekler:
|
||||
|
||||
| Tür | Ne zaman kullanılır |
|
||||
| ----------- | ------------------------------------------------------------------------ |
|
||||
| SSH tüneli | Bir bastion sunucusuna ya da veritabanı sunucusuna SSH erişiminiz varsa. |
|
||||
| Proxy | Ağınız SOCKS5 ya da HTTP CONNECT proxy erişimi gerektiriyorsa. |
|
||||
| HTTP tüneli | Veritabanına yalnızca bir web sunucusu erişebiliyorsa ve SSH/VPN kullanılamıyorsa. |
|
||||
|
||||
Ağ veritabanları için DBX, geçerli çalışma zamanında geçici bir port açar ve veritabanı sürücüsünü bu porta yönlendirir. Tünel / proxy katmanı protokol baytlarını gerçek hedefe iletir. Bir bağlantı birden çok taşıma katmanını birleştirebilir; DBX bunları bağlantı iletişim kutusunda gösterilen sırayla kurar.
|
||||
|
||||
## Bağlantıya Özel ve Ortak Profiller
|
||||
|
||||
Bir katmanı doğrudan bağlantının **Tünel / Proxy** sekmesinden yapılandırın ya da **Ayarlar → Tüneller** altında yeniden kullanılabilir profiller oluşturun:
|
||||
|
||||
- Ortak profiller; SSH, SOCKS5 / HTTP CONNECT proxy'leri ve HTTP tünellerini destekler.
|
||||
- Birden çok veritabanı bağlantısı aynı profile başvurabilir.
|
||||
- Bir profili düzenlemek, ona başvuran her bağlantıyı bir sonraki bağlanışında etkiler.
|
||||
- SSH testi erişilebilirliği ve kimlik doğrulamayı doğrular. Proxy testi bir proxy el sıkışması yapar ve isteğe bağlı bir hedef `sunucu:port` kullanabilir.
|
||||
- HTTP tünelleri yalnızca gerçek hedef trafiği başladığında tembel olarak açılır, bu yüzden bağımsız bir HTTP tüneli profil testi yoktur.
|
||||
|
||||
Bir bağlantı farklı kimlik bilgilerine ya da özel bir katman sırasına ihtiyaç duyduğunda profili o bağlantıdan ayırın.
|
||||
|
||||
## SSH Tüneli
|
||||
|
||||
SSH tünelleri yerleşiktir. Elle terminal port yönlendirmesi oluşturmanız gerekmez.
|
||||
|
||||
| Alan | Açıklama |
|
||||
| --------------- | ----------------------------------------------------------------------------- |
|
||||
| SSH Sunucusu | SSH sunucusunun ana makine adı ya da IP'si |
|
||||
| SSH Portu | SSH portu (varsayılan: 22) |
|
||||
| SSH Kullanıcısı | SSH kimlik doğrulaması için kullanıcı adı |
|
||||
| Bağlantı Zaman Aşımı | DBX'in SSH bağlantısını açarken bekleyeceği en uzun süre; varsayılan 5 saniyedir |
|
||||
|
||||
<Tabs groupId="ssh-auth" items={['Özel Anahtar (Önerilen)', 'Özel Anahtar + Parola', 'Parola', 'Kimlik Bilgisi Yok']}>
|
||||
<Tab value="Özel Anahtar (Önerilen)">
|
||||
DBX arka ucunun okuyabileceği bir özel anahtar dosyası girin, örneğin `~/.ssh/id_rsa` ya da `~/.ssh/id_ed25519`:
|
||||
|
||||
- **Anahtar Yolu** — Masaüstü yerel dosyalara gözatabilir. Web, elle girilen bir sunucu ya da kapsayıcı yolunu gerektirir.
|
||||
- **Anahtar Parolası** — Anahtarınız şifreliyse parolayı girin.
|
||||
|
||||
Anahtar kimlik doğrulaması parola kimlik doğrulamasından daha güvenlidir.
|
||||
|
||||
</Tab>
|
||||
<Tab value="Özel Anahtar + Parola">
|
||||
Birincil kimlik bilgisi olarak özel anahtarı, yedek olarak parolayı kullanın. DBX önce anahtar kimlik doğrulamasını dener; sunucu anahtarı reddeder ve parola kimlik doğrulamasını sunmayı sürdürürse otomatik olarak parolaya döner.
|
||||
|
||||
- **Anahtar Yolu** — Anahtar dosyanıza gözatıp seçin.
|
||||
- **Anahtar Parolası** — Anahtarınız şifreliyse parolayı girin.
|
||||
- **Parola** — Yedek olarak SSH parolanızı girin.
|
||||
|
||||
Bu; bir anahtarın geçici olarak geri alınmış olabileceği ya da çok atlamalı bir tünelde farklı atlamaların farklı yöntemler gerektirdiği durumlarda kullanışlıdır.
|
||||
</Tab>
|
||||
<Tab value="Parola">
|
||||
SSH parolanızı doğrudan girin. Bu, parola kimlik doğrulamasına izin veren sunucularda çalışır.
|
||||
</Tab>
|
||||
<Tab value="Kimlik Bilgisi Yok">
|
||||
Yalnızca SSH `none` kimlik doğrulamasını kullanır; parola ya da özel anahtar göndermez. Kimlik bilgisiz girişe açıkça izin veren SSH proxy'leri ya da özel ağ geçitleri içindir. Reddedilme başka bir yönteme dönmez.
|
||||
</Tab>
|
||||
</Tabs>
|
||||
|
||||
### Sunucu Anahtarı Doğrulaması
|
||||
|
||||
DBX, bir kimlik bilgisi göndermeden önce SSH sunucu anahtarını doğrular. Güvenilen anahtarlar; sistemin `known_hosts` dosyalarından ve veri dizinindeki DBX'e ait `known_hosts` dosyasından gelir:
|
||||
|
||||
- Bilinmeyen bir sunucu, parmak izini incelemenizi ve açıkça kabul etmenizi ister.
|
||||
- Yalnızca geçerli bağlantı için güvenebilir ya da DBX'in `known_hosts` dosyasında hatırlayabilirsiniz.
|
||||
- DBX, daha önce bilinen bir sunucu için değişmiş bir anahtarı reddeder.
|
||||
- Onay arayüzü kullanılamıyorsa, zaman aşımına uğrarsa ya da anahtar reddedilirse bağlantı parola veya özel anahtar gönderilmeden başarısız olur.
|
||||
|
||||
### Tüneli Yerel Ağa Açma
|
||||
|
||||
<Callout type="warn">Yerel ağa açmak, SSH dinleyicisini `127.0.0.1` yerine `0.0.0.0` yapar. Bu, DBX çalışma zamanının saldırı yüzeyini genişletir ve yalnızca uygun güvenlik duvarı kurallarıyla güvenilir ağlarda kullanılmalıdır.</Callout>
|
||||
|
||||
Masaüstü'nde bu, geçici portu bilgisayarınız üzerinden erişilebilir yapabilir. Docker/Web'de dinleyici sunucunun ya da kapsayıcının içindedir; dışarıdan erişilebilirlik yine yayımlanan portlara, kapsayıcı ağına ve ana makine güvenlik duvarına bağlıdır.
|
||||
|
||||
## Proxy
|
||||
|
||||
Ortamınız SSH yerine giden bir proxy gerektirdiğinde proxy katmanını kullanın.
|
||||
|
||||
DBX şunları destekler:
|
||||
|
||||
- SOCKS5 proxy
|
||||
- HTTP CONNECT proxy
|
||||
- İsteğe bağlı proxy kullanıcı adı ve parolası
|
||||
|
||||
Ortak bir proxy profili `mysql.internal:3306` gibi isteğe bağlı bir test hedefi içerebilir. Hedef verilmezse test yalnızca proxy uç noktasını ve kimlik bilgilerini doğrular. Rotanın tamamını doğrulamak için veritabanı bağlantı testini kullanın.
|
||||
|
||||
## HTTP Tüneli
|
||||
|
||||
<Callout type="info">Bu özellik bir HTTP tünelidir. DBX'in şu anda sağladığı betik `dbx_tunnel.php` olduğu için dağıtım dosyası PHP'ye özgüdür, ancak DBX'teki bağlantı türü HTTP tünelidir.</Callout>
|
||||
|
||||
Veritabanı özel bir ağın içindeyken o ağdaki bir web sunucusu ona erişebiliyorsa HTTP tünelini kullanın. Bu; yalnızca HTTP/HTTPS'in kullanılabildiği, SSH tünel yetkilerinin fazla geniş ya da erişilemez olduğu ortamlara uyar.
|
||||
|
||||
### Betiği Dağıtma
|
||||
|
||||
`deploy/dbx_tunnel.php` dosyasını, veritabanına erişebilen bir PHP web sunucusuna yükleyin.
|
||||
|
||||
PHP sunucusunda şu ortam değişkenlerini yapılandırın:
|
||||
|
||||
| Değişken | Zorunlu | Açıklama |
|
||||
| -------------------------------- | -------- | --------------------------------------------------------------------------- |
|
||||
| `DBX_TUNNEL_TOKEN` | Evet | Ortak belirteç. DBX'e aynı değeri girin. |
|
||||
| `DBX_TUNNEL_ALLOWED_HOSTS` | Hayır | Virgülle ayrılmış hedef sunucu izin listesi. Kesinlikle önerilir. |
|
||||
| `DBX_TUNNEL_DIR` | Hayır | Oturum kuyruğu dizini. Varsayılan olarak geçici bir dizindir. |
|
||||
| `DBX_TUNNEL_MAX_SESSION_SECONDS` | Hayır | En uzun oturum ömrü. Varsayılan `3600`. |
|
||||
| `DBX_TUNNEL_PHP` | Hayır | PHP-FPM `fastcgi_finish_request` kullanılamadığında kullanılan PHP CLI yolu. |
|
||||
|
||||
DBX'te bir **HTTP Tüneli** katmanı ekleyin ve şunları doldurun:
|
||||
|
||||
| Alan | Açıklama |
|
||||
| ----------------- | ------------------------------------------------------------------ |
|
||||
| Tünel Betiği URL'si | `dbx_tunnel.php` adresinin URL'si, örneğin `https://example.com/dbx_tunnel.php` |
|
||||
| Tünel Belirteci | `DBX_TUNNEL_TOKEN` değeri |
|
||||
| Tünel Zaman Aşımı | HTTP tünelini ve hedef veritabanı bağlantısını açma zaman aşımı |
|
||||
|
||||
Veritabanı sunucusu ve portu, dizüstü bilgisayarınızdan değil PHP sunucusundan görüldüğü hâliyle girilmelidir.
|
||||
|
||||
### HTTP Tüneli Akışı
|
||||
|
||||
```text
|
||||
DBX veritabanı sürücüsü
|
||||
-> 127.0.0.1:<yerel geçici port>
|
||||
-> DBX HTTP tünel istemcisi
|
||||
-> HTTP POST istekleri
|
||||
-> web sunucusundaki dbx_tunnel.php
|
||||
-> PHP'den özel veritabanına TCP bağlantısı
|
||||
-> veritabanı
|
||||
```
|
||||
|
||||
İstek protokolü kısa HTTP yoklamasıdır:
|
||||
|
||||
1. DBX, geçerli çalışma zamanında bir TCP dinleyicisi başlatır.
|
||||
2. Veritabanı sürücüsü bu yerel porta bağlanır.
|
||||
3. DBX; oturum kimliği, hedef sunucu, hedef port ve bağlantı zaman aşımıyla `dbx_tunnel.php` adresine `open` gönderir.
|
||||
4. PHP betiği belirteci ve izin listesini doğrular, ardından veritabanına TCP soketi açan bir işçi başlatır.
|
||||
5. Veritabanı sürücüsünden gelen baytlar betiğe `write` ile gönderilir.
|
||||
6. DBX betiği `read` ile yoklar; yanıt baytları yerel veritabanı sürücüsü bağlantısına geri yazılır.
|
||||
7. Bağlantı bittiğinde DBX `close` gönderir ve PHP işçisi veritabanı soketini kapatır.
|
||||
|
||||
Bu, DBX Web'i gerektirmez ve WebSocket kullanmaz.
|
||||
|
||||
### Güvenlik ve Sınırlar
|
||||
|
||||
- Betik URL'si için HTTPS kullanın.
|
||||
- Uzun ve rastgele bir `DBX_TUNNEL_TOKEN` belirleyin.
|
||||
- Betiğin genel bir iç TCP aktarıcısına dönüşmemesi için `DBX_TUNNEL_ALLOWED_HOSTS` ayarlayın.
|
||||
- Mümkün olduğunda betik yoluna herkese açık erişimi kısıtlayın.
|
||||
- HTTP tüneli kullanışlıdır, ancak baytları HTTP yoklaması ve sunucu tarafındaki bir kuyruk üzerinden ilettiği için genellikle doğrudan TCP, VPN ya da SSH'tan yavaştır.
|
||||
- Diğer katmanlarla birleştirilirse HTTP tüneli ilk tünel / proxy katmanı olmalıdır, çünkü en dıştaki ağ sınırıdır.
|
||||
- Betik, özel ağdan hedef sunuculara erişebilir. Onu [Üretim Güvenliği](/tr/docs/production-safety) sayfasındaki en az açıklık ve kimlik bilgisi yönergeleriyle dağıtın ve işletin.
|
||||
|
||||
## Dosya Veritabanları
|
||||
|
||||
Access bağlantıları dosya tabanlıdır ve tünel / proxy katmanlarını kullanmaz. DuckDB de genellikle yerel bir dosya kullanır, bu yüzden tünel / proxy katmanlarını yalnızca seçili sürücü profili bir ağ uç noktası kullandığında yapılandırın.
|
||||
|
||||
SQLite de bir dosya veritabanıdır. Yerel bir SQLite dosyası yine TCP tüneli kullanmaz. Masaüstü uygulamasında, bir Linux amd64/arm64 makinesindeki **uzak SQLite dosyasını** açmak için bir SQLite bağlantısına SSH atlamaları ekleyebilirsiniz. DBX ardından **son SSH atlamasında** kısa ömürlü bir worker başlatır ve o worker ile konuşur; `.db` dosyasını dizüstü bilgisayarınıza kopyalamaz. Yol alanı, yerel bir dosya seçicisi değil, o dosya sunucusundaki mutlak bir yoldur.
|
||||
|
||||
Worker'ı yükleyecek olan ilk Test ya da Bağlan işlemi onay ister ve hedef yolu ile özeti gösterir. Worker'ı yalnızca oturum için tutabilir (bağlantıyı kestiğinizde silinir), `~/.cache/dbx/sqlite-worker/<digest>` altında kalıcı kılabilir ya da önceden yerleştirilmiş bir ikili dosyayı gösterebilirsiniz. Masaüstü, **SQLite SSH Worker**'ı Sürücü Yöneticisi'nden hem Linux x64 hem Linux ARM64 ikili dosyalarını içeren tek bir paket olarak kurar, ardından dosya sunucusuna uyanı yükler. SQLCipher, yüklenebilir uzantılar ve eklenmiş veritabanları bu uzak yolda v1'de desteklenmez. Yedekleme, bir SQLite anlık görüntüsünü dizüstü bilgisayarınıza kaydeder; geri yükleme yerel bir SQLite dosyasını yükler ve dosya sunucusunda uygular.
|
||||
|
||||
Oracle TNS tanımlayıcıları birden çok yük devretme adresi içerebilir. DBX bu tanımlayıcıyı tek bir geçici uç nokta üzerinden yeniden yazmadığı için TNS modu SSH, proxy ya da HTTP tünel katmanlarıyla birleştirilemez. Tünel gerektiğinde Servis Adı ya da SID modunu kullanın.
|
||||
|
||||
<Cards>
|
||||
<Card title="Bağlantı Oluşturma" href="/tr/docs/getting-started">
|
||||
Veritabanı profilini, tünel / proxy katmanlarını, SSL'i ve bağlantı rengini birlikte yapılandırın.
|
||||
</Card>
|
||||
<Card title="Veritabanı Desteği" href="/tr/docs/databases">
|
||||
Hangi veritabanı profillerinin dosya tabanlı, yerel, uyumluluk tabanlı ya da eklenti destekli olduğunu denetleyin.
|
||||
</Card>
|
||||
<Card title="Üretim Güvenliği" href="/tr/docs/production-safety">
|
||||
En az yetkiyi, ağ açıklığını, salt okunur korumayı ve üretim yazmalarını planlayın.
|
||||
</Card>
|
||||
</Cards>
|
||||
@@ -0,0 +1,137 @@
|
||||
---
|
||||
title: Tablo İçe Aktarma
|
||||
description: CSV, TSV, metin, JSON, Excel ya da SQL verisini adım adım bir akışla mevcut bir tabloya aktarın veya toplu olarak yeni tablolar oluşturun.
|
||||
---
|
||||
|
||||
Tablo İçe Aktarma, dosya verisini veritabanı tablolarına yazar. DBX önce kaynağı ayrıştırıp önizler, ardından herhangi bir satır yazılmadan önce ayrıştırma seçeneklerini, hedefi, sütun eşlemelerini ve çalıştırma ayarlarını gözden geçirmenizi ister.
|
||||
|
||||
<Callout type="warn">İçe aktarma gerçek veritabanı yazmaları yapar. Bağlantının salt okunur koruması işlemi engeller, ancak son sınır veritabanı yetkileridir. Üretime aktarmadan önce hedef bağlantıyı, hedef tabloyu ve yedekleme planınızı doğrulayın.</Callout>
|
||||
|
||||
## Hedef Modları
|
||||
|
||||
| Hedef modu | Davranış | Tipik kullanım |
|
||||
| --- | --- | --- |
|
||||
| Mevcut tablo | Hedef sütunları yükler ve kaynak alanları eşler; ekleme ya da truncate edip içe aktarma destekler | Geriye dönük doldurma, test verisi geri yükleme ve örnek veri değiştirme |
|
||||
| Yeni tablo oluştur | Sütun türlerini önizleme verisinden çıkarır; tablo adını, sütun adlarını ve türleri düzenlemenize izin verir | Hızlı dosyadan tabloya akışlar, elektronik tablo göçü ve çoklu dosya içe aktarma |
|
||||
|
||||
Tablo oluşturma modu aynı anda birden çok dosya kabul eder. Excel çalışma kitapları, çalışma sayfası başına ayrı görevlere açılır. DBX her dosya ya da sayfa için bir tablo adı önerir ve son adların benzersiz olmasını ister. Görevler sırayla çalışır; her biri kendi önizlemesini, eşlemesini ve tür ayarlarını korur.
|
||||
|
||||
## Desteklenen Dosyalar
|
||||
|
||||
| Biçim | Ayrıntılar |
|
||||
| --- | --- |
|
||||
| CSV | Varsayılan olarak virgülle ayrılmış; başlık satırı, satır aralığı ve kodlama yapılandırılabilir |
|
||||
| TSV | Sekmeyle ayrılmış metin |
|
||||
| Ayırıcılı metin | Özel bir ayırıcı kullanan `.txt` gibi dosyalar |
|
||||
| JSON | Tek bir nesne, nesne satırları ya da dizi satırları; yapı açıkça seçilebilir |
|
||||
| Excel | Çalışma sayfası seçimiyle `.xlsx`, `.xlsm` ve `.xls` |
|
||||
| SQL | Tek bir tablo için birebir `INSERT INTO ... VALUES` ifadeleri içeren `.sql` betikleri |
|
||||
|
||||
SQL içe aktarma yalnızca birebir `INSERT INTO ... VALUES` satırlarını kabul eder. İfadeler, `REPLACE`, `INSERT IGNORE`, `INSERT ... SELECT` ve kayıpsız yeniden yazılamayacak diğer yapılar reddedilir; böylece veri ve ifade anlamı korunur.
|
||||
|
||||
SQL içe aktarma betiğin tamamını akış dışı yoldan okur, bu yüzden her `.sql` dosyası 100 MB ile sınırlıdır; daha büyük dosyalar açık bir hatayla reddedilir. `TO_DATE` ve `TO_TIMESTAMP` gibi tarih işlevleriyle yazılan değerler, ilk argümanlarının metni olarak içe aktarılır ve hedef sütunun bu biçimi ayrıştırabilmesi gerekir.
|
||||
|
||||
Masaüstü, seçilen yerel dosyaları doğrudan okur. Docker/Web, tarayıcıdan seçilen dosyaları geçici sunucu deposuna yükler ve önizleme ile içe aktarma bittikten sonra hazırlanan kaynağı serbest bırakır.
|
||||
|
||||
## İçe Aktarma Sihirbazı
|
||||
|
||||
<Steps>
|
||||
<Step>
|
||||
### Dosyaları ve Hedef Modunu Seçin
|
||||
|
||||
İşlemi bir tablodan açmak o tabloyu önceden seçer. Bunun yerine yeni bir tablo oluşturup bir ya da daha fazla dosya seçebilirsiniz.
|
||||
|
||||
</Step>
|
||||
<Step>
|
||||
### Ayrıştırmayı Yapılandırın
|
||||
|
||||
Kodlamayı, başlık satırını, veri aralığını, çalışma sayfasını, JSON yapısını, boş dize davranışını ve boşluk kırpmayı gözden geçirin.
|
||||
|
||||
</Step>
|
||||
<Step>
|
||||
### Sütun Eşlemesini İnceleyin
|
||||
|
||||
Kaynak alanları mevcut bir tabloya eşleyin ya da yeni bir tablo için çıkarsanan adları ve veri türlerini inceleyin. Gerçek değerleri doğrulamak için veri önizlemesini kullanın.
|
||||
|
||||
</Step>
|
||||
<Step>
|
||||
### Planı İnceleyin
|
||||
|
||||
Bağlantıyı, veritabanını, şemayı, tablo adını, içe aktarma modunu, eşleme sayısını, tahmini satır sayısını ve toplu iş boyutunu onaylayın.
|
||||
|
||||
</Step>
|
||||
<Step>
|
||||
### Çalıştırın ve Sonuçları İnceleyin
|
||||
|
||||
Çalıştırma görünümü; okuma ve yazma aşamalarını, içe aktarılan satırları, bayt ilerlemesini, geçen süreyi, hataları ve iptal durumunu bildirir.
|
||||
|
||||
</Step>
|
||||
</Steps>
|
||||
|
||||
## Ayrıştırma Seçenekleri
|
||||
|
||||
### Metin Kodlaması
|
||||
|
||||
CSV, TSV, ayırıcılı metin ve SQL betikleri otomatik algılamayı, UTF-8, GBK, UTF-16 LE ve UTF-16 BE kodlamalarını destekler. Algılama yanlışsa elle bir kodlama seçip önizlemeyi yeniden denetleyin.
|
||||
|
||||
### Satır Aralığı
|
||||
|
||||
- **Başlık satırı**, alan adları için kullanılacak satırı seçer
|
||||
- **Veri başlangıç satırı**, baştaki notları ya da boş satırları atlar
|
||||
- **Son veri satırı** içe aktarmayı sınırlar; `0` dosya sonuna kadar okur
|
||||
- **Önizleme satırları** yalnızca eşleme önizlemesini denetler, son içe aktarma boyutunu değil
|
||||
|
||||
### Değer İşleme
|
||||
|
||||
- **Değerleri kırp**, metin değerlerinin çevresindeki boşlukları kaldırır
|
||||
- **Boş dizeyi NULL say** varsayılan olarak açıktır; boş dizeleri korumak için kapatın
|
||||
- **JSON yapısı** otomatik algılanabilir ya da nesne satırları veya dizi satırları olarak zorlanabilir
|
||||
- **Çalışma sayfası**, bir Excel sayfasını seçer; toplu oluşturma modu her sayfa için bağımsız bir görev oluşturur
|
||||
|
||||
## Eşleme ve Tablo Oluşturma
|
||||
|
||||
Mevcut tablolarda DBX önce tam adları, sonra normalleştirilmiş adları eşleştirir. Normalleştirme; harf durumunu ve boşluk, alt çizgi ile tire farklarını yok sayar.
|
||||
|
||||
- Kaynak sütunlar atlanabilir
|
||||
- Bir hedef sütun birden çok kez eşlenemez
|
||||
- En az bir sütun eşlenmelidir
|
||||
- Eşlenmemiş zorunlu sütunların bir varsayılanı, otomatik üretim davranışı ya da boş bırakılabilir tanımı olmalıdır
|
||||
|
||||
Yeni tablolarda kaynak sütunlar başlangıçta aynı adlı hedeflere eşlenir ve DBX önizleme değerlerinden veritabanına özgü türler önerir. Öneriler yalnızca bir başlangıç noktasıdır; çalıştırmadan önce tarihleri, duyarlığı, uzun metni, JSON'u, ikili değerleri ve motora özgü türleri inceleyin.
|
||||
|
||||
## Modlar ve Toplu İşler
|
||||
|
||||
| Seçenek | Davranış |
|
||||
| --- | --- |
|
||||
| Ekle | Mevcut satırları korur ve yenilerini ekler |
|
||||
| Truncate edip içe aktar | Desteklenen yollarda, dosya verisini yazmadan önce hedef tabloyu temizler |
|
||||
| Toplu iş boyutu | Grup başına yazılan satır sayısını denetler; varsayılan 500'dür |
|
||||
|
||||
Yeni tablo ve çoklu dosya içe aktarımları her zaman ekleme kullanır, çünkü her hedef geçerli görev tarafından oluşturulur. Truncate edip içe aktarma yıkıcıdır ve işlem ya da `TRUNCATE` anlamı veritabanına göre değişir. Tamamlanan her işlemin sonraki bir hatadan sonra geri alınacağını varsaymayın.
|
||||
|
||||
## Veritabanı Kapsamı
|
||||
|
||||
DBX, Tablo İçe Aktarma'yı sürücü yetenek bildirimi üzerinden sunar. Yalnızca sütun keşfi, tablo oluşturma ya da yazma ve gereken tür dönüşümünü uygulayan bağlantılar bu işlemi etkinleştirir. Özel Redis, MongoDB, arama, vektör, mesaj kuyruğu ve yapılandırma merkezi çalışma alanları bu ilişkisel tablo içe aktarıcısı yerine kendi akışlarını kullanır.
|
||||
|
||||
Bağlanabilmek Tablo İçe Aktarma desteği anlamına gelmez. İşlem görünmüyorsa bunu bir yetki sorunu saymadan önce veritabanı türünü, sürücü modunu ve DBX sürümünü denetleyin.
|
||||
|
||||
## Hata ve İptal
|
||||
|
||||
- Ayrıştırma hataları genellikle yanlış bir kodlamayı, ayırıcıyı, başlık satırını, JSON yapısını ya da çalışma sayfası ayarını gösterir
|
||||
- Yazma hataları genellikle tür uyuşmazlıklarından, zorunlu sütunlardan, anahtar çakışmalarından, yetkilerden ya da hedef şema farklarından kaynaklanır
|
||||
- İptal sonraki grupları durdurur, ancak uygulanmış grupların geri alınacağı garanti edilmez
|
||||
- Toplu oluşturma görevleri sırayla çalışır; başarısız bir görev hata durumunu korur, daha önce tamamlanan tablolar otomatik olarak kaldırılmaz
|
||||
|
||||
## İlgili Özellikler
|
||||
|
||||
<Cards>
|
||||
<Card title="Veri Aktarımı" href="/tr/docs/data-transfer">
|
||||
Tablo verisini bağlantılar, veritabanları ya da motorlar arasında kopyalayın.
|
||||
</Card>
|
||||
<Card title="Veritabanı Dışa Aktarma" href="/tr/docs/database-export">
|
||||
Yapıyı, veriyi ve desteklenen nesneleri SQL olarak dışa aktarın.
|
||||
</Card>
|
||||
<Card title="Üretim Güvenliği" href="/tr/docs/production-safety">
|
||||
Salt okunur korumayı, üretim korumasını ve veritabanı yetki sınırlarını öğrenin.
|
||||
</Card>
|
||||
</Cards>
|
||||
@@ -0,0 +1,144 @@
|
||||
---
|
||||
title: Tablo Yapısı Düzenleyici
|
||||
description: Sütunları, dizinleri, yabancı anahtarları ve tetikleyicileri inceleyip düzenleyin; çalıştırmadan önce lehçeye özgü DDL'i gözden geçirin.
|
||||
---
|
||||
|
||||
Tablo yapısı düzenleyici, tek tablo meta verisini ve bir değişiklik taslağını kalıcı bir sekmede tutar. DBX yalnızca etkin veritabanı yeteneğinin güvenilir biçimde üretebildiği işlemleri etkinleştirir ve kaydetmeden önce son DDL'i gösterir.
|
||||
|
||||
## Düzenleyiciyi Açma
|
||||
|
||||
- Bir tabloya sağ tıklayıp **Yapıyı görüntüle** ya da **Yapıyı düzenle** seçin
|
||||
- Bir sütun düğümünden açın ve o sütuna odaklanın
|
||||
- Bir dizin düğümünden açın ve o dizine odaklanın
|
||||
- Veri ızgarasındaki tablo bilgisinden açın
|
||||
- Aynı tabloyu Nesne Gezgini'nden ya da bir DDL işleminden açın
|
||||
|
||||
Düzenleyici; yapı ile veri arasında geçiş yaparken etkin sekmeyi, kaydırma konumunu, sütun genişliklerini ve yerel sütun sırasını korur.
|
||||
|
||||
## Yapı Sekmeleri
|
||||
|
||||
| Sekme | Başlıca içerik |
|
||||
| --- | --- |
|
||||
| Sütunlar | Ad, tür, uzunluk/duyarlık, boş olabilirlik, varsayılan, birincil anahtar, identity, karakter kümesi, collation, açıklama |
|
||||
| Dizinler | Ad, sütunlar, tür, benzersizlik durumu, dâhil edilen sütunlar, filtre, açıklama ve yeniden oluşturma işlemi |
|
||||
| Yabancı anahtarlar | Yerel sütunlar, hedef tablo/sütunlar, `ON DELETE` ve `ON UPDATE` |
|
||||
| Tetikleyiciler | Tetikleyici meta verisi, kaynağı ve desteklenen oluşturma/düzenleme/silme işlemleri |
|
||||
| DDL | Geçerli tablo tanımı ya da sürücünün ürettiği yapı SQL'i |
|
||||
|
||||
Veritabanı bir meta veri sınıfı sağlamıyorsa ilgili sekme gizlenir, salt okunur olur ya da bir yetenek açıklaması gösterir.
|
||||
|
||||
## Sütun Düzenleme
|
||||
|
||||
Veritabanı yeteneğine bağlı olarak şunları yapabilirsiniz:
|
||||
|
||||
- Sütun ekleme ya da geçerli seçimin ardına ekleme
|
||||
- Sütunları silme, yeniden adlandırma ve değiştirme
|
||||
- Türü, uzunluğu, duyarlığı, ölçeği ve veritabanına özgü uzunluk birimlerini değiştirme
|
||||
- `NULL`, varsayılan, birincil anahtar, identity, karakter kümesi, collation ve açıklamayı değiştirme
|
||||
- Yaygın varsayılan değerler için hızlı seçimleri kullanma
|
||||
- Sırayı değiştirmek için sütunları sürükleme
|
||||
|
||||
Sütunları yeniden sıralamanın iki anlamı vardır:
|
||||
|
||||
- MySQL ve fiziksel sütun sırası DDL'i olan diğer veritabanları gerçek bir yeniden sıralama üretir
|
||||
- Bazı veritabanlarında yalnızca DBX'teki yerel görüntüleme sırası kaydedilir, fiziksel yapı değişmez
|
||||
|
||||
Yeni tablo oluşturmada; yaygın birincil anahtarlar, zaman damgaları ya da denetim sütunları için ayarlardaki hazır alanlar kullanılabilir.
|
||||
|
||||
## Dizinler, Yabancı Anahtarlar ve Tetikleyiciler
|
||||
|
||||
Dizin yetenekleri lehçeye göre değişir ve şunları içerebilir:
|
||||
|
||||
- Bir dizini oluşturma, silme ya da yeniden oluşturma
|
||||
- Standart, benzersiz ve veritabanına özgü dizin türleri
|
||||
- PostgreSQL, SQL Server ve benzeri veritabanlarında dâhil edilen sütunlar ya da filtreler
|
||||
- Desteklenen yerlerde dizin açıklamaları
|
||||
- Yeni dizinler için düzenlenebilir otomatik adlar
|
||||
|
||||
Yabancı anahtar düzenleme, sütun eşlemelerini ve güncelleme/silme işlemlerini kapsar. Tetikleyici düzenleme, kaynağın alınabilmesine ve güvenli DDL üretimine bağlıdır; desteklenmeyen veritabanları yine de kaynağı ya da kopyalanabilir DDL'i gösterebilir.
|
||||
|
||||
## DDL Önizlemesi
|
||||
|
||||
Düzenlemeler veritabanını hemen değiştirmez. Kaydetmeden önce DBX, vurgulanmış ve lehçeye özgü SQL üretir:
|
||||
|
||||
- `ALTER TABLE ... ADD/DROP/RENAME/MODIFY COLUMN`
|
||||
- Varsayılan, `NULL`, birincil anahtar ve açıklama değişiklikleri
|
||||
- `CREATE INDEX`, `DROP INDEX` ve yeniden oluşturma işlemleri
|
||||
- Yabancı anahtar ve tetikleyici DDL'i
|
||||
- SQLite gerektirdiğinde tablo yeniden oluşturma adımları
|
||||
|
||||
Kod incelemesi ya da bir göç aracıyla çalıştırmak için DDL'in tamamını kopyalayın.
|
||||
|
||||
<Callout type="warn">Sütun silme, tür dönüştürme, `NULL` kısıtını sıkılaştırma, birincil anahtar değiştirme, fiziksel yeniden sıralama ve tablo yeniden oluşturma; tabloları kilitleyebilir ya da veri kaybına yol açabilir. Üretimde çalıştırma etkisini, yedekleri ve geri dönüş planlarını gözden geçirin.</Callout>
|
||||
|
||||
## Kaydetme İş Akışı
|
||||
|
||||
<Steps>
|
||||
<Step>
|
||||
### En güncel yapıyı okuyun
|
||||
|
||||
Sütunların, dizinlerin, yabancı anahtarların ve tetikleyicilerin yüklendiğini doğrulayın. Başka bir istemci tabloyu yakın zamanda değiştirdiyse önce yenileyin.
|
||||
|
||||
</Step>
|
||||
<Step>
|
||||
### Yerel bir taslak oluşturun
|
||||
|
||||
Nesne ekleyin, düzenleyin, kaldırın ya da yeniden sıralayın. Silmeler bekleyen olarak kalır ve henüz çalıştırılmaz.
|
||||
|
||||
</Step>
|
||||
<Step>
|
||||
### DDL'i inceleyin
|
||||
|
||||
Nitelemeyi, türleri, varsayılanları, kısıtları, dizinleri ve ifade sırasını doğrulayın.
|
||||
|
||||
</Step>
|
||||
<Step>
|
||||
### Çalıştırın ve yenileyin
|
||||
|
||||
İncelemeden sonra çalıştırın. Üretim kapsamı yeniden üretim yazma onayına girer; DBX başarıdan sonra yapıyı yeniden yükler.
|
||||
|
||||
</Step>
|
||||
</Steps>
|
||||
|
||||
## Lehçe ve Yetenek Farkları
|
||||
|
||||
| Lehçe/veritabanı | Tipik davranış |
|
||||
| --- | --- |
|
||||
| MySQL / MariaDB uyumlu | Geniş sütun özellikleri, fiziksel yeniden sıralama, birincil anahtar, dizin, yabancı anahtar ve açıklama kapsamı |
|
||||
| PostgreSQL / Gauss uyumlu | Lehçe farkındalıklı tür/varsayılan/null/açıklama, dâhil edilen/filtreli dizinler, yabancı anahtarlar ve ilgili DDL |
|
||||
| SQLite | Bazı karmaşık sütun değişiklikleri güvenli bir tablo yeniden oluşturma stratejisi kullanır |
|
||||
| DuckDB | Yaygın sütun ve dizin işlemlerini SQLite'tan farklı bir davranışla destekler |
|
||||
| SQL Server | Varsayılanlar, dâhil edilen sütunlar ve filtreli dizinler için özel sözdizimiyle sütun ve dizin değişiklikleri |
|
||||
| Oracle / Dameng ve benzerleri | Oracle biçemli sütun, açıklama ve dizin DDL'i; ilgisiz tam sayı uzunluğu denetimleri kapatılır |
|
||||
| ClickHouse / Manticore / InfluxDB ve diğerleri | Yalnızca doğrulanmış ve uygulanmış alt küme etkinleştirilir |
|
||||
| JDBC/Agent | Tanınan bir lehçeye eşlenir; lehçe güvenilir biçimde belirlenemezse salt okunur kalır |
|
||||
|
||||
Bir veritabanına bağlanılabiliyor diye her DDL özelliğinin düzenlenebilir olduğunu varsaymayın. Güncel doğruluk kaynağı olarak [Veritabanı Desteği](/tr/docs/databases) sayfasını ve düzenleyicideki gerçek denetimleri kullanın.
|
||||
|
||||
## Eşzamanlılık ve Kurtarma
|
||||
|
||||
- Taslaklar, düzenleyici açıldığında okunan meta veriye dayanır ve dışarıdaki şema değişikliklerini otomatik birleştirmez
|
||||
- Çalıştırma başarısız olursa daha önceki ifadeler zaten başarılı olmuş olabilir
|
||||
- SQLite yeniden oluşturmalarının ve çoklu ifadeli DDL'in atomikliği veritabanı ile sürücü davranışına bağlıdır
|
||||
- Yenileme yapıyı yeniden yükler ve kaydedilmemiş bir taslaktan vazgeçmeyi gerektirebilir
|
||||
- Salt okunur bağlantılar kaydetmeyi engeller; üretim yazmaları her seferinde açık onay ister
|
||||
|
||||
## Öneriler
|
||||
|
||||
- Düzenleyiciyi odaklı, tek tablolu değişiklikler için kullanın
|
||||
- Kopyalanan DDL'i sürüm denetimine koyun ve daha büyük göçler için inceleyin
|
||||
- Ortamları hizalamak için [Şema Karşılaştırma](/tr/docs/schema-diff) özelliğini kullanın
|
||||
- Riskli değişikliklerden önce [Veritabanı Dışa Aktarma](/tr/docs/database-export) ya da [Zamanlanmış Veritabanı Yedekleri](/tr/docs/database-backup) kullanın
|
||||
- Önemli sütunları değiştirmeden önce [Alan Soy Ağacı](/tr/docs/field-lineage) ile uygulama kodu aramasını birlikte kullanın
|
||||
|
||||
<Cards>
|
||||
<Card title="Şema karşılaştırma" href="/tr/docs/schema-diff">
|
||||
Ortamları karşılaştırın ve dağıtım betikleri üretin.
|
||||
</Card>
|
||||
<Card title="Alan soy ağacı" href="/tr/docs/field-lineage">
|
||||
Yabancı anahtarlardan, görünümlerden ve sorgu geçmişinden ilişkileri inceleyin.
|
||||
</Card>
|
||||
<Card title="Üretim güvenliği" href="/tr/docs/production-safety">
|
||||
Salt okunur bağlantıları ve üretim DDL onayını yapılandırın.
|
||||
</Card>
|
||||
</Cards>
|
||||
@@ -0,0 +1,349 @@
|
||||
---
|
||||
title: Web API Başvurusu
|
||||
description: DBX Web ve Docker arayüzünün kullandığı iç HTTP API'leri; kimlik doğrulama, sorgular, arka plan işleri, yüklemeler ve indirmeler dâhil.
|
||||
---
|
||||
|
||||
<Callout type="warn">Bu API; DBX Web arayüzünü ve MCP Web arka ucu gibi iç araçları çalıştırır. Ayrı, herkese açık bir tümleştirme sözleşmesi değildir. Uç noktalar ve yükler sürümler arasında değişebilir. Betik ve agent iş akışları için mümkün olduğunda [@dbx-app/cli](/tr/docs/cli) ya da [@dbx-app/mcp-server](/tr/docs/mcp) tercih edin.</Callout>
|
||||
|
||||
## Temel URL
|
||||
|
||||
DBX Web varsayılan olarak `4224` portunu dinler:
|
||||
|
||||
```text
|
||||
http://localhost:4224
|
||||
```
|
||||
|
||||
Bir ters proxy alt yolunun arkasında dağıtıldığında `DBX_PUBLIC_BASE_PATH` ayarlayın ve her rotaya önek ekleyin. Örneğin `/dbx` ile:
|
||||
|
||||
```text
|
||||
https://example.com/dbx/api/auth/check
|
||||
```
|
||||
|
||||
Tüm API rotaları `/api` altındadır.
|
||||
|
||||
## Kimlik Doğrulama
|
||||
|
||||
Korumalı rotalar `dbx_session` adlı bir oturum çerezi gerektirir.
|
||||
|
||||
### Kimlik Doğrulama Durumunu Denetleme
|
||||
|
||||
```http
|
||||
GET /api/auth/check
|
||||
```
|
||||
|
||||
Örnek yanıt:
|
||||
|
||||
```json
|
||||
{
|
||||
"authenticated": false,
|
||||
"required": true,
|
||||
"setup_required": false
|
||||
}
|
||||
```
|
||||
|
||||
| Alan | Anlamı |
|
||||
| --- | --- |
|
||||
| `required` | Parola koruması etkin |
|
||||
| `setup_required` | İlk çalıştırmada parola kurulumu hâlâ gerekli |
|
||||
| `authenticated` | Geçerli isteğin zaten geçerli bir oturumu var |
|
||||
|
||||
### İlk Çalıştırma Kurulumu
|
||||
|
||||
```http
|
||||
POST /api/auth/setup
|
||||
Content-Type: application/json
|
||||
|
||||
{
|
||||
"password": "your-password"
|
||||
}
|
||||
```
|
||||
|
||||
### Giriş
|
||||
|
||||
```http
|
||||
POST /api/auth/login
|
||||
Content-Type: application/json
|
||||
|
||||
{
|
||||
"password": "your-password"
|
||||
}
|
||||
```
|
||||
|
||||
Başarılı olduğunda yanıt `Set-Cookie: dbx_session=...` başlığını ayarlar. Sonraki isteklerde bu çerezi yeniden kullanın.
|
||||
|
||||
Arka arkaya beş başarısız giriş, yaklaşık 60 saniyelik bir kilitlenmeyi tetikler. Oturumlar geçerli Web işleminde tutulur ve yeniden başlatmadan sonra yeniden giriş gerektirir. Çerez `HttpOnly` özelliklidir, `SameSite=Lax` kullanır ve yolu için `DBX_PUBLIC_BASE_PATH` değerini izler.
|
||||
|
||||
### Çıkış
|
||||
|
||||
```http
|
||||
POST /api/auth/logout
|
||||
Cookie: dbx_session=...
|
||||
```
|
||||
|
||||
### Ortam Değişkenleri
|
||||
|
||||
| Değişken | Amacı |
|
||||
| --- | --- |
|
||||
| `DBX_PASSWORD` | Kapsayıcı açılışında başlangıç parolası belirler |
|
||||
| `DBX_DISABLE_PASSWORD=1` | Parola korumasını tümüyle kapatır |
|
||||
| `DBX_PORT` | Dinleme portunu değiştirir (varsayılan `4224`) |
|
||||
| `DBX_DATA_DIR` | `dbx.db` dosyasını içeren veri dizini |
|
||||
| `DBX_PUBLIC_BASE_PATH` | DBX'i `/dbx` gibi bir alt yolda sunar |
|
||||
| `DBX_MAX_UPLOAD_MB` | Genel istek ve yüklenen dosya sınırını geçersiz kılar; varsayılan 1024 MB. Multipart rotaları sabit protokol yükü ayırır (4 GiB'lık bir dosya için en az `4096` verin) |
|
||||
| `DBX_AGENT_DIR` | Web Agent/sürücü dizinini geçersiz kılar; varsayılan olarak veri dizini altındaki `agents` |
|
||||
| `DBX_STATIC_DIR` | Web statik varlık dizinini geçersiz kılar |
|
||||
|
||||
## İstek Biçimi
|
||||
|
||||
- Alan adlandırması her Rust istek türünü izler. Bazı gövdeler `camelCase` kullanır, bağlantı yapılandırması ise hâlâ `snake_case` içerir; tek bir adlandırma kuralını API'nin tamamına uygulamayın.
|
||||
- `GET` sorgu parametreleri genellikle `connection_id` gibi `snake_case` kullanır, ancak asıl kaynak geçerli rota uygulamasıdır.
|
||||
- Hatalar genellikle bir `error` alanı içeren JSON ve bir HTTP durum kodu döndürür.
|
||||
- Uzun süren dışa aktarma, içe aktarma, aktarım, SQL dosyası ve yapay zekâ işlemleri; tek bir eşzamanlı yanıt yerine genellikle bir başlatma isteği ile SSE ilerlemesi ve iptal/indirme rotalarını kullanır.
|
||||
|
||||
Şu anda yalnızca veri ızgarası çıkarıcısı, `/api/query/data-grid-extractor-openapi.json` adresinde test edilmiş ve kapsamı belirli bir OpenAPI belgesi sunar. Bu belge DBX Web API'sinin tamamını kapsamaz ve diğer rotaları sürümlemez.
|
||||
|
||||
## Bağlantı API'leri
|
||||
|
||||
### Bağlantıları Listeleme
|
||||
|
||||
```http
|
||||
GET /api/connection/list
|
||||
Cookie: dbx_session=...
|
||||
```
|
||||
|
||||
Kayıtlı bağlantı profillerini döndürür. Parolalar gibi gizli bilgiler döndürülen JSON'dan ayrı saklanır.
|
||||
|
||||
### Bağlantıları Kaydetme
|
||||
|
||||
```http
|
||||
POST /api/connection/save
|
||||
Content-Type: application/json
|
||||
Cookie: dbx_session=...
|
||||
|
||||
{
|
||||
"configs": [
|
||||
{
|
||||
"name": "local-mysql",
|
||||
"db_type": "mysql",
|
||||
"host": "127.0.0.1",
|
||||
"port": 3306,
|
||||
"username": "root",
|
||||
"database": "app"
|
||||
}
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
### Bağlantıyı Test Etme
|
||||
|
||||
```http
|
||||
POST /api/connection/test
|
||||
Content-Type: application/json
|
||||
|
||||
{
|
||||
"config": {
|
||||
"name": "temp",
|
||||
"db_type": "mysql",
|
||||
"host": "127.0.0.1",
|
||||
"port": 3306,
|
||||
"username": "root",
|
||||
"database": "app"
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
### Bağlanma
|
||||
|
||||
Veri API'lerinin çoğu, hedef bağlantının önce etkin olmasını bekler.
|
||||
|
||||
```http
|
||||
POST /api/connection/connect
|
||||
Content-Type: application/json
|
||||
|
||||
{
|
||||
"config": {
|
||||
"id": "connection-id",
|
||||
"name": "local-mysql",
|
||||
"db_type": "mysql",
|
||||
"host": "127.0.0.1",
|
||||
"port": 3306,
|
||||
"username": "root",
|
||||
"database": "app"
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
### Sağlığı Denetleme
|
||||
|
||||
```http
|
||||
POST /api/connection/check-health
|
||||
Content-Type: application/json
|
||||
|
||||
{
|
||||
"connectionId": "connection-id"
|
||||
}
|
||||
```
|
||||
|
||||
## Şema API'leri
|
||||
|
||||
### Tabloları Listeleme
|
||||
|
||||
```http
|
||||
GET /api/schema/tables?connection_id=CONNECTION_ID&database=app&schema=
|
||||
Cookie: dbx_session=...
|
||||
```
|
||||
|
||||
### Sütunları Listeleme
|
||||
|
||||
```http
|
||||
GET /api/schema/columns?connection_id=CONNECTION_ID&database=app&schema=&table=users
|
||||
Cookie: dbx_session=...
|
||||
```
|
||||
|
||||
Diğer şema rotaları:
|
||||
|
||||
- `/api/schema/databases`
|
||||
- `/api/schema/schemas`
|
||||
- `/api/schema/indexes`
|
||||
- `/api/schema/foreign-keys`
|
||||
- `/api/schema/ddl`
|
||||
|
||||
## SQL Sorgu API'leri
|
||||
|
||||
### Tek Bir İfade Çalıştırma
|
||||
|
||||
```http
|
||||
POST /api/query/execute
|
||||
Content-Type: application/json
|
||||
|
||||
{
|
||||
"connectionId": "connection-id",
|
||||
"database": "app",
|
||||
"sql": "select id, name from users limit 10"
|
||||
}
|
||||
```
|
||||
|
||||
Örnek yanıt biçimi:
|
||||
|
||||
```json
|
||||
{
|
||||
"columns": ["id", "name"],
|
||||
"rows": [[1, "Ada"], [2, "Lin"]]
|
||||
}
|
||||
```
|
||||
|
||||
İlgili rotalar:
|
||||
|
||||
| Rota | Amacı |
|
||||
| --- | --- |
|
||||
| `/api/query/execute-multi` | Tek istekte birden çok sonuç kümesi çalıştırır |
|
||||
| `/api/query/execute-batch` | Bir ifade listesini çalıştırır |
|
||||
| `/api/query/cancel` | Çalışan bir sorguyu iptal eder |
|
||||
| `/api/query/build-table-select-sql` | Bir tabloya gözatma sorgusu oluşturur |
|
||||
|
||||
## Redis API'leri
|
||||
|
||||
Redis gezgini ve komut çalıştırma kendi rotalarını kullanır.
|
||||
|
||||
```http
|
||||
POST /api/redis/execute-command
|
||||
Content-Type: application/json
|
||||
|
||||
{
|
||||
"connectionId": "redis-id",
|
||||
"db": 0,
|
||||
"command": "GET mykey"
|
||||
}
|
||||
```
|
||||
|
||||
Diğer yaygın Redis rotaları:
|
||||
|
||||
- `/api/redis/scan-keys`
|
||||
- `/api/redis/get-value`
|
||||
- `/api/redis/set-string`
|
||||
- `/api/redis/delete-key`
|
||||
|
||||
## MongoDB API'leri
|
||||
|
||||
MongoDB rotaları JSON gövdeli `POST` uç noktalarıdır.
|
||||
|
||||
### Koleksiyonları Listeleme
|
||||
|
||||
```http
|
||||
POST /api/mongo/list-collections
|
||||
Content-Type: application/json
|
||||
|
||||
{
|
||||
"connectionId": "mongo-id",
|
||||
"database": "app"
|
||||
}
|
||||
```
|
||||
|
||||
### Belge Bulma
|
||||
|
||||
```http
|
||||
POST /api/mongo/find-documents
|
||||
Content-Type: application/json
|
||||
|
||||
{
|
||||
"connectionId": "mongo-id",
|
||||
"database": "app",
|
||||
"collection": "users",
|
||||
"skip": 0,
|
||||
"limit": 20,
|
||||
"filter": "{}"
|
||||
}
|
||||
```
|
||||
|
||||
Diğer MongoDB rotaları arasında `aggregate-documents`, `insert-documents`, `update-documents` ve `delete-documents` bulunur.
|
||||
|
||||
## MCP ve CLI Tümleştirmesi
|
||||
|
||||
Otomasyon için bu paketleri bakımı, Web API'sini doğrudan çağırmaktan genellikle daha kolaydır:
|
||||
|
||||
- MCP: [@dbx-app/mcp-server](/tr/docs/mcp)
|
||||
- CLI: [@dbx-app/cli](/tr/docs/cli)
|
||||
|
||||
MCP dağıtılmış bir Web örneğine karşı çalıştığında şunu ayarlayın:
|
||||
|
||||
```json
|
||||
{
|
||||
"env": {
|
||||
"DBX_WEB_URL": "http://localhost:4224",
|
||||
"DBX_WEB_PASSWORD": "your-password"
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
MCP sunucusu giriş ve oturum çerezlerini sizin için yönetir.
|
||||
|
||||
CLI aynı `DBX_WEB_URL` ve `DBX_WEB_PASSWORD` değişkenlerini destekler. İki tümleştirme de sunucu tarafındaki bağlantıları, sürücüleri, salt okunur korumayı, üretim korumasını ve veritabanı yetkilerini yeniden kullanır; bu da DBX yükseltmeleri boyunca kopyalanmış iç rota yüklerinden daha kolay bakım sağlar.
|
||||
|
||||
## Yazmalar, Güvenlik ve Dosya Sınırları
|
||||
|
||||
- API kimlik doğrulaması yalnızca isteğin oturum açmış bir oturuma ait olduğunu kanıtlar; veritabanı yetkilerinin yerini almaz
|
||||
- Sorgu, içe aktarma ve aktarım yolları bağlantının salt okunur korumasını uygulamayı sürdürür; üretim ve SQL risk politikası ilgili çekirdek yollarda geçerlidir
|
||||
- Tarayıcıdan seçilen tablo içe aktarma ve SQL dosyaları, rastgele istemci yollarından okunmak yerine sunucudaki geçici depoya yüklenir
|
||||
- Web dışa aktarımları geçici bir sunucu dosyası oluşturur, bunu bir indirme rotasıyla döndürür ve ardından temizler
|
||||
- Ters proxy'ler çerezleri ve SSE akışını korumalı, uygun uzun süreli zaman aşımlarına izin vermeli ve herkese açık erişimi sınırlamalıdır
|
||||
|
||||
## Örnek Betikler
|
||||
|
||||
Depodaki örneklere bakın:
|
||||
|
||||
- [examples/web-api/automation.sh](https://github.com/t8y2/dbx/tree/main/examples/web-api/automation.sh)
|
||||
- [examples/docker/docker-compose.yml](https://github.com/t8y2/dbx/tree/main/examples/docker/docker-compose.yml)
|
||||
- [examples/cli/basic-workflow.sh](https://github.com/t8y2/dbx/tree/main/examples/cli/basic-workflow.sh)
|
||||
|
||||
## Rota Grupları
|
||||
|
||||
Web arka ucu arayüz için çok daha fazla rota sunar:
|
||||
|
||||
- Dışa aktarmalar ve indirmeler için `/api/export/*`
|
||||
- Tablo içe aktarmaları için `/api/import/*`
|
||||
- Veri aktarım işleri için `/api/transfer/*`
|
||||
- Yerleşik yapay zekâ asistanı için `/api/ai/*`
|
||||
- Sürücü yönetimi için `/api/agents/*` ve `/api/jdbc/*`
|
||||
- Düzenleyici durumu için `/api/history/*` ve `/api/saved-sql/*`
|
||||
|
||||
Rotaların tam listesi için depodaki `crates/dbx-web/src/main.rs` dosyasına gözatın.
|
||||
@@ -0,0 +1,153 @@
|
||||
---
|
||||
title: DBX Nedir?
|
||||
description: DBX; 90+ veritabanı ve veri sistemi için masaüstü ve kendi sunucunuzda barındırma, yapay zekâ, CLI ve MCP desteği sunan açık kaynaklı, hafif bir çalışma alanıdır.
|
||||
---
|
||||
|
||||
DBX; veritabanları ve veri altyapısı için açık kaynaklı, hafif bir çalışma alanıdır. Bağlantı yönetimini, nesne gözatmayı, SQL düzenlemeyi, veri değişikliklerini, şema araçlarını, özel konsolları ve otomasyonu 90+ veritabanı ve veri sistemi genelinde tek bir arayüzde toplar.
|
||||
|
||||
DBX her sistemi SQL biçimli bir arayüze zorlamaz. İlişkisel veritabanları sorgu düzenleyicisini, veri ızgarasını ve şema araçlarını kullanır; Redis, MongoDB, vektör veritabanları, mesaj kuyrukları, etcd, ZooKeeper, Nacos ve benzeri sistemler ise kendi veri modellerine göre tasarlanmış çalışma alanlarını kullanır.
|
||||
|
||||
<Callout type="info">DBX'i kullanmaya hazırsanız [Hızlı Başlangıç](/tr/docs/getting-started) ile başlayın. Belirli bir motoru ya da özelliği denetlemek için [Veritabanı Desteği ve özellik matrisi](/tr/docs/databases) sayfasını kullanın.</Callout>
|
||||
|
||||

|
||||
|
||||
## DBX Ne Yapmanıza Yardımcı Olur
|
||||
|
||||
<Cards>
|
||||
<Card title="Bağlanın ve ortamları ayırın" href="/tr/docs/getting-started">
|
||||
Yerel, test, hazırlık ve üretim bağlantılarını gruplar, renkler, sabitlemeler, arama, salt okunur mod ve üretim korumasıyla yönetin.
|
||||
</Card>
|
||||
<Card title="Sorgulayın, sorun giderin ve analiz edin" href="/tr/docs/query-editor">
|
||||
Günlük SQL işleri için meta veri tamamlamasını, biçimlendirmeyi, seçili çalıştırmayı, sorgu geçmişini, çoklu sonuçları ve yürütme planlarını kullanın.
|
||||
</Card>
|
||||
<Card title="Veriye gözatın ve değiştirin" href="/tr/docs/data-grid">
|
||||
Sanallaştırılmış bir ızgarada veriyi filtreleyin, sıralayın ve düzenleyin; değişiklikleri yazmadan önce üretilen SQL'i inceleyin.
|
||||
</Card>
|
||||
<Card title="Şemaları anlayın ve değiştirin" href="/tr/docs/schema-browser">
|
||||
Veritabanı nesnelerine gözatın, tablo yapılarını düzenleyin, şemaları karşılaştırın, ER diyagramlarını ve soy ağacını inceleyin, incelenebilir DDL üretin.
|
||||
</Card>
|
||||
<Card title="Veriyi taşıyın ve değiş tokuş edin" href="/tr/docs/data-transfer">
|
||||
Tablo dosyalarını içe aktarın, bağlantılar arasında veri taşıyın, SQL dosyaları çalıştırın ve desteklenen yerlerde şemayı ve veriyi dışa aktarın.
|
||||
</Card>
|
||||
<Card title="Bağlantıları araçlara ve yapay zekâya açın" href="/tr/docs/mcp">
|
||||
Yapılandırılmış veritabanlarını terminallere, betiklere ve kodlama agent'larına bağlamak için CLI'yi, MCP'yi ya da kendi sunucunuzdaki arka ucu kullanın.
|
||||
</Card>
|
||||
</Cards>
|
||||
|
||||
## Yalnızca SQL Veritabanlarından Fazlası
|
||||
|
||||
Bağlantı seçicisi, veritabanlarını ve veri sistemlerini gerçekte nasıl kullanıldıklarına göre gruplar. Her kategori tek bir genel sorgu kutusuna düşmek yerine farklı bir çalışma alanı açabilir.
|
||||
|
||||
| Kategori | Örnek sistemler | Başlıca DBX deneyimi |
|
||||
| --- | --- | --- |
|
||||
| İlişkisel ve uyumlu protokoller | MySQL, PostgreSQL, SQLite, Oracle, SQL Server, Dameng, openGauss, GaussDB | SQL düzenleyici, veri ızgarası, nesne ağacı, tablo yapısı ve şema araçları |
|
||||
| Analitik ve veri ambarları | ClickHouse, Doris, StarRocks, Databricks, Snowflake, Trino, BigQuery | Sorgular, sonuç analizi, meta veri ve sürücünün desteklediği şema ile dışa aktarma araçları |
|
||||
| Belge, anahtar/değer ve arama | MongoDB, Redis, Elasticsearch, Easysearch, Meilisearch, HBase, Cassandra | Özel belge, anahtar, dizin ya da sütun ailesi gezginleri |
|
||||
| Grafik, vektör ve yapay zekâ verisi | Neo4j, Qdrant, Milvus, Weaviate, ChromaDB | Grafik bağlantıları ile vektör koleksiyonu gözatma, arama ve değişiklik akışları |
|
||||
| Zaman serisi | QuestDB, TDengine, IoTDB, InfluxDB | Zaman serisi sorguları ve sisteme özgü bağlantı, nesne ve veri görünümleri |
|
||||
| Mesaj kuyrukları | Pulsar, Kafka, RocketMQ, RabbitMQ | Konular, abonelikler ya da tüketiciler, mesajlar, izleme, yetkiler ve politikalar |
|
||||
| Kayıt ve yapılandırma | etcd, ZooKeeper, Nacos | Anahtar/ZNode gözatma, küme durumu, erişim denetimi, yapılandırma ve servis yönetimi |
|
||||
| Sürücü uzantıları | JDBCX, özel MySQL/PostgreSQL, isteğe bağlı JDBC eklentileri | Uyumlu protokoller ya da üreticinin JDBC sürücüleriyle kapsamı genişletin |
|
||||
|
||||
Gelişmiş özellikler sürücüye, protokole ve veritabanının kendisine bağlıdır. Doğruluk kaynağı olarak [Veritabanı Desteği](/tr/docs/databases) matrisini kullanın; ilişkisel olmayan ve altyapı arayüzleri için [Özel Çalışma Alanları](/tr/docs/specialized-workspaces) sayfasına bakın.
|
||||
|
||||
## Tek İş Akışı, Birden Çok Giriş Noktası
|
||||
|
||||
| Giriş noktası | Ne için uygundur | Yetenekler ve sınırlar |
|
||||
| --- | --- | --- |
|
||||
| Masaüstü | Günlük kişisel çalışma, yerel veritabanı dosyaları, eksiksiz tezgâh | Yerel dosyaları, SQL dosya ağacını ve SQL kitaplığını, masaüstü derin bağlantılarını ve diğer işletim sistemi tümleştirmelerini ekler |
|
||||
| Docker / Web | Bir sunucuda kendi barındırmanız ve uzak tarayıcı erişimi | Veritabanı iş akışlarının çoğunu paylaşır; yollar sunucuya aittir, bazı yerel dosya ve masaüstü tümleştirmeleri kullanılamaz |
|
||||
| CLI | Terminaller, betikler, CI ve Codex iş akışları | Bağlantıları ve şemaları listeler, tabloları tanımlar, sorgu çalıştırır, sıkı bağlam üretir ve Masaüstü'nde bir tablo açabilir |
|
||||
| MCP Sunucusu | Claude Code, Cursor, Windsurf ve diğer yapay zekâ istemcileri | Bağlantıları listeler, şemayı okur ve yerel depolamaya ya da DBX Web'e karşı politikayla denetlenen sorgular veya komutlar çalıştırır |
|
||||
|
||||
Masaüstü ve Web aynı Rust çekirdeğini kullanır, ancak her sistem tümleştirmesi için birbirinin tam karşılığı değildir. Dağıtım modunu; veritabanının ağdaki yerine, dosyaların yerel makinede mi sunucuda mı olduğuna ve masaüstü derin bağlantılarına ya da yerel SQL dosya yönetimine ihtiyacınız olup olmadığına göre seçin.
|
||||
|
||||
## Bağlantıdan Otomasyona
|
||||
|
||||
<Steps>
|
||||
<Step>
|
||||
### Bağlantı sınırını belirleyin
|
||||
|
||||
Bir veritabanı türü seçin, kimlik bilgilerini girin ve gerektiğinde TLS, SSH, SOCKS5, HTTP proxy ya da HTTP tünelleme yapılandırın. Yüksek riskli hedefler için salt okunur modu ya da üretim korumasını etkinleştirin.
|
||||
|
||||
</Step>
|
||||
<Step>
|
||||
### Önce nesneleri ve bağlamı anlayın
|
||||
|
||||
Veritabanlarını, şemaları, tabloları, sütunları, dizinleri, yabancı anahtarları ve veritabanına özgü nesneleri incelemek için kenar çubuğunu kullanın. Arama, kaynak görünümleri, ER diyagramları ve alan soy ağacı, tanımadığınız sistemlerde yardımcı olur.
|
||||
|
||||
</Step>
|
||||
<Step>
|
||||
### Sorgulayın, inceleyin ve değiştirin
|
||||
|
||||
Sorgu düzenleyicisinde SQL çalıştırın ya da veri ızgarasını, belge/anahtar-değer gezginlerini ve özel konsolları kullanın. İş akışı destekliyorsa DBX, çalıştırmadan önce SQL ya da istek içeriğini gösterir.
|
||||
|
||||
</Step>
|
||||
<Step>
|
||||
### Karşılaştırın, taşıyın ve yeniden kullanın
|
||||
|
||||
Tek seferlik işlemleri incelenebilir iş akışlarına dönüştürmek için şema karşılaştırma, tablo içe aktarma, veri aktarımı, veritabanı dışa aktarma, SQL dosyası çalıştırma, sorgu geçmişi ve SQL kitaplığını kullanın.
|
||||
|
||||
</Step>
|
||||
<Step>
|
||||
### Yapay zekâ ve otomasyon ekleyin
|
||||
|
||||
Uygulama içinde yapay zekâ Sor ya da Agent modunu kullanın; bağlantıları, şema bağlamını ve sorgu çalıştırmayı CLI ile MCP üzerinden betiklere ve kodlama agent'larına açın.
|
||||
|
||||
</Step>
|
||||
</Steps>
|
||||
|
||||
## Yetenek Haritası
|
||||
|
||||
| Görev | DBX'te uygulanan ürün yetenekleri | Dokümantasyon |
|
||||
| --- | --- | --- |
|
||||
| Bağlantı oluşturma | Bağlantı kategorileri, URL ayrıştırma, TLS, tüneller/proxy'ler, salt okunur mod, üretim koruması ve sürücü seçimi | [Hızlı Başlangıç](/tr/docs/getting-started), [Tüneller ve Proxy'ler](/tr/docs/ssh-tunnel) |
|
||||
| Sorgu yazma ve çalıştırma | CodeMirror 6, meta veri tamamlaması, biçimlendirme, yürütme hedefleri, çoklu sonuçlar, iptal ve geçmiş | [Sorgu Düzenleyici](/tr/docs/query-editor) |
|
||||
| Sonuçlara gözatma ve düzenleme | Sanal kaydırma, veritabanı tarafında filtre ve sıralama, satır içi düzenleme, SQL önizlemesi ve çeşitli dışa aktarma biçimleri | [Veri Izgarası](/tr/docs/data-grid) |
|
||||
| Şemaları anlama | Nesne ağacı ve arama, kaynak görünümleri, tablo yapısı, şema karşılaştırma, ER diyagramları ve alan soy ağacı | [Şema Gezgini](/tr/docs/schema-browser), [Şema Karşılaştırma](/tr/docs/schema-diff) |
|
||||
| İçe aktarma, taşıma ve dışa aktarma | CSV/TSV/JSON/Excel içe aktarma, bağlantılar arası aktarım, SQL dosyası çalıştırma ve veritabanı dışa aktarma | [Tablo İçe Aktarma](/tr/docs/table-import), [Veri Aktarımı](/tr/docs/data-transfer) |
|
||||
| İlişkisel olmayan sistemleri yönetme | Redis, MongoDB, arama, vektör, HBase, mesaj kuyruğu, kayıt ve yapılandırma çalışma alanları | [Özel Çalışma Alanları](/tr/docs/specialized-workspaces) |
|
||||
| Yapay zekâ ve dış araçları kullanma | Sor/Agent, CLI, MCP ve Web/Docker arka uç API'si | [Yapay Zekâ Asistanı](/tr/docs/ai-assistant), [CLI](/tr/docs/cli), [MCP](/tr/docs/mcp) |
|
||||
| Kişisel yapılandırmayı taşıma | Bağlantı içe aktarma, şifreli yapılandırma dışa aktarma, WebDAV/Gist/Gitee eşitlemesi ve SQL kitaplığı eşitlemesi | [Yapılandırma Dışa ve İçe Aktarma](/tr/docs/config-export), [Bulut Eşitleme ve Yedekleme](/tr/docs/cloud-sync) |
|
||||
|
||||
## Güvenlik Modeli
|
||||
|
||||
DBX, tek bir tehlikeli işlem onay anahtarına güvenmek yerine katmanlı denetimler kullanır:
|
||||
|
||||
- **Veritabanı hesabı yetkileri** son sınır olmayı sürdürür. Üretim için en az yetkili hesaplar kullanın.
|
||||
- **Salt okunur bağlantılar**, çekirdek sorgu yürütme yolunda tanınan yazmaları engeller ve birçok değişiklik giriş noktasını gizler ya da devre dışı bırakır.
|
||||
- **Üretim koruması** tüm bir bağlantıyı ya da seçili veritabanlarını kapsayabilir ve algılanan her yazma için yeni ve açık bir onay ister.
|
||||
- **İncelenebilir değişiklikler**; veri düzenleme, tablo yapısı, şema karşılaştırma ve benzeri akışlarda mümkün olduğunda önce SQL'i gösterir.
|
||||
- **Yapay zekâ Sor modu**, SQL çalıştırmadan yanıt döndürür. Agent, üretimde özerk yazma yetkisi almaz ve SQL'i inceleme için düzenleyiciye geri verir.
|
||||
- **MCP politikası**, bağlantı izin listesini ve Salt okunur, Veri okuma/yazma ya da Tam erişim modlarını merkezî olarak denetler. Bağlantının salt okunur durumunu, üretim korumasını ya da veritabanı yetkilerini atlayamaz.
|
||||
- **Hassas yapılandırma**, normal bağlantı JSON'undan ayrı saklanır ve yapılandırma dışa aktarımları AES-GCM şifrelemesiyle korunabilir.
|
||||
|
||||
Giriş noktaları genelinde yapılandırma ve davranış için [Üretim ve Yazma Güvenliği](/tr/docs/production-safety) sayfasına bakın.
|
||||
|
||||
## Bilinmesi Gereken Sınırlar
|
||||
|
||||
<Callout type="warn">
|
||||
DBX bir veritabanı tezgâhıdır; yönetilen bir veritabanı hizmeti değildir ve veritabanı yetkilerinin, denetimin, yedeklerin ya da değişiklik onaylarının yerini almaz. Veritabanı dışa aktarma hafif yedekleme veya göç için kullanışlıdır, ancak büyük üretim sistemleri kendi yedekleme araçlarını kullanmalıdır. Yapay zekâ çıktısı, üretilen SQL ve motorlar arası aktarımlar yine insan incelemesi gerektirir.
|
||||
</Callout>
|
||||
|
||||
- Gelişmiş özellikler her veritabanı için zorla açılmaz; güvenilir olmayan uyumluluk yolları gizlenir ya da kısıtlanır.
|
||||
- Docker/Web'de yerel yollar, tarayıcının çalıştığı bilgisayarı değil sunucunun dosya sistemini ifade eder.
|
||||
- JDBC ve Agent veritabanları ilgili sürücüyü ya da çalışma zamanını gerektirir ve yerel sürücülerden daha az özellik sunabilir.
|
||||
- [Web API](/tr/docs/web-api) öncelikle DBX Web'e ve iç tümleştirmelere hizmet eder; kararlı bir genel sözleşme değildir. Betikler ve yapay zekâ tümleştirmeleri için CLI ya da MCP'yi tercih edin.
|
||||
|
||||
## Sonraki Adımlar
|
||||
|
||||
<Cards>
|
||||
<Card title="Kurun ve bir bağlantı oluşturun" href="/tr/docs/getting-started">
|
||||
Masaüstü ya da Docker'ı seçin, ardından ilk bağlantıyı, ağ yolunu ve güvenlik ayarlarını yapılandırın.
|
||||
</Card>
|
||||
<Card title="Veritabanı desteğini denetleyin" href="/tr/docs/databases">
|
||||
Bağlantı türlerini, varsayılan portları, sürücü mimarisini ve gelişmiş özellik matrisini inceleyin.
|
||||
</Card>
|
||||
<Card title="Üretim güvenliğini yapılandırın" href="/tr/docs/production-safety">
|
||||
Salt okunur bağlantıları, üretim korumasını ve yapay zekâ ile MCP yetki sınırlarını belirleyin.
|
||||
</Card>
|
||||
<Card title="Bir otomasyon giriş noktası seçin" href="/tr/docs/cli">
|
||||
Terminal, Codex, betik ya da yapay zekâ istemcisi iş akışlarına göre CLI ile MCP arasında seçim yapın.
|
||||
</Card>
|
||||
</Cards>
|
||||
+19
-7
@@ -1,4 +1,5 @@
|
||||
import { requestJson } from "./httpJson";
|
||||
import type { DocsLang } from "@/lib/i18n";
|
||||
|
||||
export type ChangelogItem = {
|
||||
title: string;
|
||||
@@ -45,35 +46,46 @@ export type ChangelogBootstrap = {
|
||||
|
||||
const DEFAULT_BASE_URL = "https://dl.dbxio.com/changelog";
|
||||
|
||||
/**
|
||||
* Release notes are published to R2 as `releases-en.json` / `releases-cn.json`
|
||||
* only, so locales without their own feed read the English one while the page
|
||||
* chrome around them stays localized.
|
||||
*/
|
||||
export type ChangelogLang = "en" | "cn";
|
||||
|
||||
export function changelogDataLang(lang: DocsLang): ChangelogLang {
|
||||
return lang === "cn" ? "cn" : "en";
|
||||
}
|
||||
|
||||
function changelogBaseUrl() {
|
||||
return (typeof process !== "undefined" && (process.env.NEXT_PUBLIC_CHANGELOG_BASE_URL || process.env.CHANGELOG_BASE_URL)) || DEFAULT_BASE_URL;
|
||||
}
|
||||
|
||||
export function changelogUrl(lang: "en" | "cn") {
|
||||
export function changelogUrl(lang: ChangelogLang) {
|
||||
return `${changelogBaseUrl()}/releases-${lang}.json`;
|
||||
}
|
||||
|
||||
export function changelogIndexUrl(lang: "en" | "cn") {
|
||||
export function changelogIndexUrl(lang: ChangelogLang) {
|
||||
return `${changelogBaseUrl()}/index-${lang}.json`;
|
||||
}
|
||||
|
||||
export function changelogReleaseUrl(lang: "en" | "cn", tag: string) {
|
||||
export function changelogReleaseUrl(lang: ChangelogLang, tag: string) {
|
||||
return `${changelogBaseUrl()}/releases-${lang}/${tag}.json`;
|
||||
}
|
||||
|
||||
export async function fetchChangelog(lang: "en" | "cn"): Promise<ChangelogData> {
|
||||
export async function fetchChangelog(lang: ChangelogLang): Promise<ChangelogData> {
|
||||
return requestJson<ChangelogData>(changelogUrl(lang), { cache: "force-cache" });
|
||||
}
|
||||
|
||||
export async function fetchChangelogIndex(lang: "en" | "cn"): Promise<ChangelogIndex> {
|
||||
export async function fetchChangelogIndex(lang: ChangelogLang): Promise<ChangelogIndex> {
|
||||
return requestJson<ChangelogIndex>(changelogIndexUrl(lang), { cache: "force-cache" });
|
||||
}
|
||||
|
||||
export async function fetchChangelogRelease(lang: "en" | "cn", tag: string): Promise<ChangelogRelease> {
|
||||
export async function fetchChangelogRelease(lang: ChangelogLang, tag: string): Promise<ChangelogRelease> {
|
||||
return requestJson<ChangelogRelease>(changelogReleaseUrl(lang, tag), { cache: "force-cache" });
|
||||
}
|
||||
|
||||
export async function loadChangelogBootstrap(lang: "en" | "cn"): Promise<ChangelogBootstrap> {
|
||||
export async function loadChangelogBootstrap(lang: ChangelogLang): Promise<ChangelogBootstrap> {
|
||||
try {
|
||||
const index = await fetchChangelogIndex(lang);
|
||||
if (index.releases.length > 0) {
|
||||
|
||||
+21
-19
@@ -1,4 +1,6 @@
|
||||
export type InstallLang = "en" | "cn";
|
||||
import type { DocsLang } from "./i18n";
|
||||
|
||||
export type InstallLang = DocsLang;
|
||||
export type BrowserStaticArch = "x64" | "arm64";
|
||||
|
||||
export type BrowserStaticDownload = {
|
||||
@@ -38,59 +40,59 @@ const downloadArtifacts: DownloadArtifact[] = [
|
||||
{
|
||||
id: "macos-arm",
|
||||
iconId: "macos-arm",
|
||||
labels: { en: "For macOS (Apple Silicon)", cn: "适用于 macOS (Apple Silicon)" },
|
||||
labels: { en: "For macOS (Apple Silicon)", cn: "适用于 macOS (Apple Silicon)", tr: "macOS için (Apple Silicon)" },
|
||||
suffix: "arm64.dmg",
|
||||
},
|
||||
{
|
||||
id: "macos-intel",
|
||||
iconId: "macos-intel",
|
||||
labels: { en: "For macOS (Intel)", cn: "适用于 macOS (Intel)" },
|
||||
labels: { en: "For macOS (Intel)", cn: "适用于 macOS (Intel)", tr: "macOS için (Intel)" },
|
||||
suffix: "x64.dmg",
|
||||
},
|
||||
{
|
||||
id: "windows",
|
||||
iconId: "windows",
|
||||
labels: { en: "Windows 10/11 (x64)", cn: "Windows 10/11 (x64)" },
|
||||
descriptions: { en: "Standard online installer", cn: "标准在线安装包" },
|
||||
badges: { en: "Recommended", cn: "推荐" },
|
||||
labels: { en: "Windows 10/11 (x64)", cn: "Windows 10/11 (x64)", tr: "Windows 10/11 (x64)" },
|
||||
descriptions: { en: "Standard online installer", cn: "标准在线安装包", tr: "Standart çevrimiçi yükleyici" },
|
||||
badges: { en: "Recommended", cn: "推荐", tr: "Önerilen" },
|
||||
suffix: "x64-setup.exe",
|
||||
},
|
||||
{
|
||||
id: "windows-offline",
|
||||
iconId: "windows",
|
||||
labels: { en: "Windows 10 intranet environment installer", cn: "Windows10内网环境安装包" },
|
||||
descriptions: { en: "Includes WebView2 offline runtime · Does not include", cn: "内置 WebView2 离线运行库 · 不含" },
|
||||
driverLinkLabels: { en: "offline database drivers", cn: "数据库离线驱动" },
|
||||
badges: { en: "Intranet", cn: "内网" },
|
||||
labels: { en: "Windows 10 intranet environment installer", cn: "Windows10内网环境安装包", tr: "Windows 10 iç ağ ortamı yükleyicisi" },
|
||||
descriptions: { en: "Includes WebView2 offline runtime · Does not include", cn: "内置 WebView2 离线运行库 · 不含", tr: "WebView2 çevrimdışı çalışma zamanını içerir · İçermez:" },
|
||||
driverLinkLabels: { en: "offline database drivers", cn: "数据库离线驱动", tr: "çevrimdışı veritabanı sürücüleri" },
|
||||
badges: { en: "Intranet", cn: "内网", tr: "İç ağ" },
|
||||
suffix: "x64-offline-setup.exe",
|
||||
},
|
||||
{
|
||||
id: "windows-7-offline",
|
||||
iconId: "windows-legacy",
|
||||
labels: { en: "Windows 7 / Server\u00a02012\u00a0R2 package", cn: "Windows 7 / Server\u00a02012\u00a0R2 专用包" },
|
||||
descriptions: { en: "Includes WebView2 offline runtime · Does not include", cn: "内置 WebView2 离线运行库 · 不含" },
|
||||
driverLinkLabels: { en: "offline database drivers", cn: "数据库离线驱动" },
|
||||
badges: { en: "Legacy", cn: "旧系统" },
|
||||
labels: { en: "Windows 7 / Server\u00a02012\u00a0R2 package", cn: "Windows 7 / Server\u00a02012\u00a0R2 专用包", tr: "Windows 7 / Server\u00a02012\u00a0R2 paketi" },
|
||||
descriptions: { en: "Includes WebView2 offline runtime · Does not include", cn: "内置 WebView2 离线运行库 · 不含", tr: "WebView2 çevrimdışı çalışma zamanını içerir · İçermez:" },
|
||||
driverLinkLabels: { en: "offline database drivers", cn: "数据库离线驱动", tr: "çevrimdışı veritabanı sürücüleri" },
|
||||
badges: { en: "Legacy", cn: "旧系统", tr: "Eski sistem" },
|
||||
suffix: "x64-win7-server2012r2-offline-setup.exe",
|
||||
},
|
||||
{
|
||||
id: "linux",
|
||||
iconId: "linux",
|
||||
labels: { en: "For Linux x64", cn: "适用于 Linux x64" },
|
||||
labels: { en: "For Linux x64", cn: "适用于 Linux x64", tr: "Linux x64 için" },
|
||||
suffix: "amd64.AppImage",
|
||||
},
|
||||
{
|
||||
id: "linux-arm",
|
||||
iconId: "linux-arm",
|
||||
labels: { en: "For Linux ARM64", cn: "适用于 Linux ARM64" },
|
||||
labels: { en: "For Linux ARM64", cn: "适用于 Linux ARM64", tr: "Linux ARM64 için" },
|
||||
suffix: "arm64.AppImage",
|
||||
},
|
||||
{
|
||||
id: "linux-browser",
|
||||
iconId: "linux",
|
||||
labels: { en: "Linux browser package", cn: "Linux 浏览器版" },
|
||||
descriptions: { en: "For Kylin, UnionTech UOS, and other Linux distributions", cn: "适用于麒麟、统信 UOS 等 Linux 发行版" },
|
||||
badges: { en: "Guide", cn: "安装说明" },
|
||||
labels: { en: "Linux browser package", cn: "Linux 浏览器版", tr: "Linux tarayıcı paketi" },
|
||||
descriptions: { en: "For Kylin, UnionTech UOS, and other Linux distributions", cn: "适用于麒麟、统信 UOS 等 Linux 发行版", tr: "Kylin, UnionTech UOS ve diğer Linux dağıtımları için" },
|
||||
badges: { en: "Guide", cn: "安装说明", tr: "Kurulum kılavuzu" },
|
||||
suffix: "x64-browser-static.tar.gz",
|
||||
action: "instructions",
|
||||
browserStaticSuffixes: {
|
||||
|
||||
+27
-1
@@ -3,11 +3,24 @@ import { defineI18nUI } from "fumadocs-ui/i18n";
|
||||
|
||||
export const i18n = defineI18n({
|
||||
defaultLanguage: "en",
|
||||
languages: ["en", "cn"],
|
||||
languages: ["en", "cn", "tr"],
|
||||
});
|
||||
|
||||
export const i18nUI = defineI18nUI(i18n, {
|
||||
en: { displayName: "English" },
|
||||
tr: {
|
||||
displayName: "Türkçe",
|
||||
search: "Ara",
|
||||
searchNoResult: "Sonuç bulunamadı",
|
||||
toc: "İçindekiler",
|
||||
tocNoHeadings: "Başlık yok",
|
||||
lastUpdate: "Son güncelleme",
|
||||
chooseLanguage: "Dil seçin",
|
||||
nextPage: "Sonraki sayfa",
|
||||
previousPage: "Önceki sayfa",
|
||||
chooseTheme: "Tema seçin",
|
||||
editOnGithub: "GitHub'da düzenle",
|
||||
},
|
||||
cn: {
|
||||
displayName: "简体中文",
|
||||
search: "搜索",
|
||||
@@ -22,3 +35,16 @@ export const i18nUI = defineI18nUI(i18n, {
|
||||
editOnGithub: "在 GitHub 上编辑",
|
||||
},
|
||||
});
|
||||
|
||||
export type DocsLang = "en" | "cn" | "tr";
|
||||
|
||||
/**
|
||||
* Narrow an arbitrary route segment to a supported docs language.
|
||||
*
|
||||
* Pages keep their own `{ en, cn, tr }` copy objects; this replaces the
|
||||
* `lang === "cn" ? "cn" : "en"` ternary each of them used to repeat, so adding
|
||||
* a language only touches `i18n.languages` above.
|
||||
*/
|
||||
export function resolveLang(lang: string): DocsLang {
|
||||
return (i18n.languages as readonly string[]).includes(lang) ? (lang as DocsLang) : "en";
|
||||
}
|
||||
|
||||
@@ -144,8 +144,13 @@ function loadGitHubPrivateKey(config: GitHubIssueConfig): Uint8Array {
|
||||
return pem.label === "RSA PRIVATE KEY" ? wrapPkcs1AsPkcs8(pem.bytes) : pem.bytes;
|
||||
}
|
||||
|
||||
/**
|
||||
* The GitHub repository is maintained in English and Chinese, so a draft is
|
||||
* written in one of those two regardless of which locale the reader used. Any
|
||||
* other site language (Turkish included) drafts in English.
|
||||
*/
|
||||
export function normalizeIssueLanguage(value: FormDataEntryValue | null): IssueLanguage {
|
||||
return value === "en" ? "en" : "cn";
|
||||
return value === "cn" ? "cn" : "en";
|
||||
}
|
||||
|
||||
export function normalizeIssueType(value: unknown): IssueType {
|
||||
|
||||
@@ -8,11 +8,13 @@ export const DEFAULT_OG_IMAGE = "/logo.png";
|
||||
const LOCALE_MAP: Record<string, string> = {
|
||||
en: "en_US",
|
||||
cn: "zh_CN",
|
||||
tr: "tr_TR",
|
||||
};
|
||||
|
||||
const HTML_LANG_MAP: Record<string, string> = {
|
||||
en: "en",
|
||||
cn: "zh-CN",
|
||||
tr: "tr",
|
||||
};
|
||||
|
||||
export function getHtmlLang(lang: string): string {
|
||||
@@ -20,7 +22,7 @@ export function getHtmlLang(lang: string): string {
|
||||
}
|
||||
|
||||
function swapLang(path: string, to: string): string {
|
||||
return path.replace(/^\/(en|cn)/, `/${to}`);
|
||||
return path.replace(/^\/(en|cn|tr)/, `/${to}`);
|
||||
}
|
||||
|
||||
interface BuildMetadataParams {
|
||||
@@ -58,6 +60,7 @@ export function buildMetadata({
|
||||
languages: {
|
||||
en: `${SITE_URL}${swapLang(path, "en")}`,
|
||||
zh: `${SITE_URL}${swapLang(path, "cn")}`,
|
||||
tr: `${SITE_URL}${swapLang(path, "tr")}`,
|
||||
"x-default": `${SITE_URL}${swapLang(path, "en")}`,
|
||||
},
|
||||
},
|
||||
|
||||
@@ -1,8 +1,10 @@
|
||||
import { DEFAULT_DESCRIPTION, SITE_NAME, SITE_URL } from "./metadata";
|
||||
import { DEFAULT_DESCRIPTION, getHtmlLang, SITE_NAME, SITE_URL } from "./metadata";
|
||||
import type { DocsLang } from "./i18n";
|
||||
|
||||
const localizedDescription = {
|
||||
en: DEFAULT_DESCRIPTION,
|
||||
cn: "90+ 种数据库,仅 20 MB。支持桌面端、Docker 自托管、AI 助手与 MCP Server。",
|
||||
tr: "90+ veritabanı, yalnızca 20 MB. Masaüstü uygulamaları, Docker ile kendi sunucunuzda barındırma, yapay zekâ asistanı ve MCP Server.",
|
||||
} as const;
|
||||
|
||||
const localizedFeatureList = {
|
||||
@@ -22,6 +24,14 @@ const localizedFeatureList = {
|
||||
"通过 MCP Server 连接 AI 编程智能体",
|
||||
"提供结构浏览、结构对比、数据编辑、导入与导出",
|
||||
],
|
||||
tr: [
|
||||
"90+ SQL, NoSQL, vektör, zaman serisi, gömülü veritabanı ve mesaj kuyruğunu tek yerden yönetin",
|
||||
"Windows, macOS ve Linux için masaüstü uygulamaları",
|
||||
"Tarayıcıdan erişim için Docker ile kendi sunucunuzda barındırma",
|
||||
"Yapay zekâ destekli SQL üretme, açıklama, iyileştirme ve düzeltme",
|
||||
"Yapay zekâ kodlama agent'ları için MCP Server tümleştirmesi",
|
||||
"Şemaya gözatma, şema karşılaştırma, veri düzenleme, içe ve dışa aktarma",
|
||||
],
|
||||
} as const;
|
||||
|
||||
export function buildSiteStructuredData() {
|
||||
@@ -34,7 +44,7 @@ export function buildSiteStructuredData() {
|
||||
url: SITE_URL,
|
||||
description: DEFAULT_DESCRIPTION,
|
||||
publisher: { "@id": `${SITE_URL}/#organization` },
|
||||
inLanguage: ["en", "zh-CN"],
|
||||
inLanguage: ["en", "zh-CN", "tr"],
|
||||
},
|
||||
{
|
||||
"@context": "https://schema.org",
|
||||
@@ -54,8 +64,8 @@ export function buildSiteStructuredData() {
|
||||
] as const;
|
||||
}
|
||||
|
||||
export function buildSoftwareApplicationStructuredData(lang: "en" | "cn", version: string) {
|
||||
const language = lang === "cn" ? "zh-CN" : "en";
|
||||
export function buildSoftwareApplicationStructuredData(lang: DocsLang, version: string) {
|
||||
const language = getHtmlLang(lang);
|
||||
|
||||
return {
|
||||
"@context": "https://schema.org",
|
||||
|
||||
@@ -1,10 +1,14 @@
|
||||
import { readdirSync, writeFileSync } from "fs";
|
||||
import { resolve, relative } from "path";
|
||||
import { DEFAULT_LANGUAGE, LANGUAGES } from "./languages.mjs";
|
||||
|
||||
const OUT_DIR = resolve(import.meta.dirname, "../out");
|
||||
const SITE_URL = "https://dbxio.com";
|
||||
const EXCLUDE = new Set(["index.html", "404.html", "_not-found.html"]);
|
||||
const EXCLUDE_PATHS = new Set(["/en/issue", "/cn/issue"]);
|
||||
const EXCLUDE_PATHS = new Set(LANGUAGES.map((language) => `/${language}/issue`));
|
||||
// hreflang codes differ from the route segment for locales whose segment is not
|
||||
// already a language code.
|
||||
const HREFLANG = { en: "en", cn: "zh", tr: "tr" };
|
||||
|
||||
function* walkDir(dir) {
|
||||
const entries = readdirSync(dir, { withFileTypes: true });
|
||||
@@ -28,18 +32,22 @@ const htmlFiles = [...walkDir(OUT_DIR)].filter((f) => {
|
||||
return !EXCLUDE.has(basename) && !EXCLUDE_PATHS.has(pathToUrl(f));
|
||||
});
|
||||
|
||||
function emptyLanguageMap() {
|
||||
return Object.fromEntries(LANGUAGES.map((language) => [language, null]));
|
||||
}
|
||||
|
||||
const pagesByPath = new Map();
|
||||
|
||||
for (const file of htmlFiles) {
|
||||
const url = pathToUrl(file);
|
||||
const match = url.match(/^\/(en|cn)(\/.*)?$/);
|
||||
const match = url.match(new RegExp(`^/(${LANGUAGES.join("|")})(/.*)?$`));
|
||||
if (!match) {
|
||||
pagesByPath.set(url, { en: null, cn: null });
|
||||
pagesByPath.set(url, emptyLanguageMap());
|
||||
continue;
|
||||
}
|
||||
const relativePath = match[2] || "/";
|
||||
if (!pagesByPath.has(relativePath)) {
|
||||
pagesByPath.set(relativePath, { en: null, cn: null });
|
||||
pagesByPath.set(relativePath, emptyLanguageMap());
|
||||
}
|
||||
const entry = pagesByPath.get(relativePath);
|
||||
entry[match[1]] = url;
|
||||
@@ -50,19 +58,16 @@ const urls = [];
|
||||
const seen = new Set();
|
||||
|
||||
for (const [, langs] of pagesByPath) {
|
||||
const localizedPages = [langs.en, langs.cn].filter(Boolean);
|
||||
const localizedPages = LANGUAGES.map((language) => langs[language]).filter(Boolean);
|
||||
if (localizedPages.length === 0) continue;
|
||||
|
||||
const altLinks = [];
|
||||
if (langs.en) {
|
||||
altLinks.push({ lang: "en", href: `${SITE_URL}${langs.en}` });
|
||||
}
|
||||
if (langs.cn) {
|
||||
altLinks.push({ lang: "zh", href: `${SITE_URL}${langs.cn}` });
|
||||
}
|
||||
const altLinks = LANGUAGES.filter((language) => langs[language]).map((language) => ({
|
||||
lang: HREFLANG[language] ?? language,
|
||||
href: `${SITE_URL}${langs[language]}`,
|
||||
}));
|
||||
|
||||
if (altLinks.length > 1) {
|
||||
altLinks.push({ lang: "x-default", href: `${SITE_URL}${langs.en}` });
|
||||
if (altLinks.length > 1 && langs[DEFAULT_LANGUAGE]) {
|
||||
altLinks.push({ lang: "x-default", href: `${SITE_URL}${langs[DEFAULT_LANGUAGE]}` });
|
||||
}
|
||||
|
||||
for (const localizedPage of localizedPages) {
|
||||
|
||||
@@ -0,0 +1,26 @@
|
||||
// Build-script view of `lib/i18n.ts`. The Next.js config is TypeScript, so the
|
||||
// plain-JS build scripts keep their own copy; add a language in both places.
|
||||
export const DEFAULT_LANGUAGE = "en";
|
||||
export const LANGUAGES = ["en", "cn", "tr"];
|
||||
|
||||
/** Suffix a documentation page uses for a language: `faq.mdx` vs `faq.cn.mdx`. */
|
||||
export function pageSuffix(language) {
|
||||
return language === DEFAULT_LANGUAGE ? ".mdx" : `.${language}.mdx`;
|
||||
}
|
||||
|
||||
/** Navigation file for a language: `meta.json` vs `meta.cn.json`. */
|
||||
export function metaFile(language) {
|
||||
return language === DEFAULT_LANGUAGE ? "meta.json" : `meta.${language}.json`;
|
||||
}
|
||||
|
||||
/** Language a documentation file belongs to, from its filename. */
|
||||
export function languageOfFile(file) {
|
||||
const match = file.match(/\.([a-z-]+)\.mdx$/);
|
||||
const language = match?.[1];
|
||||
return language && LANGUAGES.includes(language) ? language : DEFAULT_LANGUAGE;
|
||||
}
|
||||
|
||||
/** Slug shared by every translation of a page. */
|
||||
export function slugOfFile(file) {
|
||||
return file.replace(new RegExp(`(?:\\.(?:${LANGUAGES.join("|")}))?\\.mdx$`), "");
|
||||
}
|
||||
@@ -1,6 +1,7 @@
|
||||
import fs from "node:fs";
|
||||
import path from "node:path";
|
||||
import { fileURLToPath } from "node:url";
|
||||
import { LANGUAGES, languageOfFile, metaFile, slugOfFile } from "./languages.mjs";
|
||||
|
||||
const scriptDir = path.dirname(fileURLToPath(import.meta.url));
|
||||
const docsDir = path.resolve(scriptDir, "../content/docs");
|
||||
@@ -15,17 +16,15 @@ const files = fs
|
||||
const pages = new Map();
|
||||
|
||||
for (const file of files) {
|
||||
const chinese = file.endsWith(".cn.mdx");
|
||||
const slug = file.replace(/\.cn\.mdx$|\.mdx$/, "");
|
||||
const slug = slugOfFile(file);
|
||||
const page = pages.get(slug) ?? {};
|
||||
page[chinese ? "cn" : "en"] = file;
|
||||
page[languageOfFile(file)] = file;
|
||||
pages.set(slug, page);
|
||||
}
|
||||
|
||||
for (const [slug, page] of pages) {
|
||||
if (!page.cn || !page.en) {
|
||||
errors.push(`${slug}: missing ${page.cn ? "English" : "Chinese"} page`);
|
||||
}
|
||||
const missing = LANGUAGES.filter((language) => !page[language]);
|
||||
if (missing.length > 0) errors.push(`${slug}: missing ${missing.join(", ")} page`);
|
||||
}
|
||||
|
||||
function navigationPages(file) {
|
||||
@@ -33,13 +32,10 @@ function navigationPages(file) {
|
||||
return navigation.pages.filter((entry) => !entry.startsWith("---"));
|
||||
}
|
||||
|
||||
const chineseNavigation = navigationPages("meta.cn.json");
|
||||
const englishNavigation = navigationPages("meta.json");
|
||||
const navigationByLanguage = new Map(LANGUAGES.map((language) => [language, navigationPages(metaFile(language))]));
|
||||
|
||||
for (const [name, entries] of [
|
||||
["meta.cn.json", chineseNavigation],
|
||||
["meta.json", englishNavigation],
|
||||
]) {
|
||||
for (const [language, entries] of navigationByLanguage) {
|
||||
const name = metaFile(language);
|
||||
const duplicates = entries.filter((entry, index) => entries.indexOf(entry) !== index);
|
||||
for (const slug of new Set(duplicates)) errors.push(`${name}: duplicate page ${slug}`);
|
||||
|
||||
@@ -52,8 +48,11 @@ for (const [name, entries] of [
|
||||
}
|
||||
}
|
||||
|
||||
if (JSON.stringify(chineseNavigation) !== JSON.stringify(englishNavigation)) {
|
||||
errors.push("Chinese and English navigation page order differs");
|
||||
const referenceNavigation = JSON.stringify(navigationByLanguage.get("en"));
|
||||
for (const [language, entries] of navigationByLanguage) {
|
||||
if (JSON.stringify(entries) !== referenceNavigation) {
|
||||
errors.push(`${metaFile(language)}: navigation page order differs from meta.json`);
|
||||
}
|
||||
}
|
||||
|
||||
const knownSlugs = new Set(pages.keys());
|
||||
@@ -61,7 +60,7 @@ const knownSlugs = new Set(pages.keys());
|
||||
for (const file of files) {
|
||||
const fullPath = path.join(docsDir, file);
|
||||
const content = fs.readFileSync(fullPath, "utf8");
|
||||
const expectedLanguage = file.endsWith(".cn.mdx") ? "cn" : "en";
|
||||
const expectedLanguage = languageOfFile(file);
|
||||
const frontmatter = content.match(/^---\n([\s\S]*?)\n---/);
|
||||
|
||||
if (!frontmatter) {
|
||||
@@ -78,9 +77,10 @@ for (const file of files) {
|
||||
if (count > 1) errors.push(`${file}: duplicate heading "${heading}"`);
|
||||
}
|
||||
|
||||
const languagePattern = LANGUAGES.join("|");
|
||||
const links = [
|
||||
...content.matchAll(/\]\(\/(cn|en)\/docs\/([^)#?]+)(?:#[^)]*)?\)/g),
|
||||
...content.matchAll(/href="\/(cn|en)\/docs\/([^"#?]+)(?:#[^"]*)?"/g),
|
||||
...content.matchAll(new RegExp(`\\]\\(/(${languagePattern})/docs/([^)#?]+)(?:#[^)]*)?\\)`, "g")),
|
||||
...content.matchAll(new RegExp(`href="/(${languagePattern})/docs/([^"#?]+)(?:#[^"]*)?"`, "g")),
|
||||
];
|
||||
|
||||
for (const link of links) {
|
||||
@@ -163,4 +163,4 @@ if (errors.length > 0) {
|
||||
process.exit(1);
|
||||
}
|
||||
|
||||
console.log(`Verified ${pages.size} bilingual documentation pages.`);
|
||||
console.log(`Verified ${pages.size} documentation pages across ${LANGUAGES.length} languages.`);
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
import { readdir, readFile } from "node:fs/promises";
|
||||
import { extname, join, relative, sep } from "node:path";
|
||||
import { fileURLToPath } from "node:url";
|
||||
import { LANGUAGES } from "./languages.mjs";
|
||||
|
||||
const outputDirectory = fileURLToPath(new URL("../out/", import.meta.url));
|
||||
const scannedExtensions = new Set([".html", ".js", ".txt"]);
|
||||
@@ -37,9 +38,14 @@ if (violations.length > 0) {
|
||||
|
||||
console.log(`Static export verified: ${files.length} files contain no GitHub API endpoints.`);
|
||||
|
||||
// `<html lang>` uses BCP 47, which is not always the route segment.
|
||||
const HTML_LANG = { en: "en", cn: "zh-CN", tr: "tr" };
|
||||
|
||||
const requiredContent = [
|
||||
{ file: "en.html", includes: ['<html lang="en"', '"@type":"SoftwareApplication"'] },
|
||||
{ file: "cn.html", includes: ['<html lang="zh-CN"', '"@type":"SoftwareApplication"'] },
|
||||
...LANGUAGES.map((language) => ({
|
||||
file: `${language}.html`,
|
||||
includes: [`<html lang="${HTML_LANG[language] ?? language}"`, '"@type":"SoftwareApplication"'],
|
||||
})),
|
||||
{ file: "llms.txt", includes: ["90+ database", "20 MB", "Apache-2.0"] },
|
||||
];
|
||||
|
||||
@@ -61,7 +67,7 @@ console.log("Static export metadata verified for language, software schema, and
|
||||
const localizedHtmlFiles = files.filter(
|
||||
(file) =>
|
||||
extname(file) === ".html" &&
|
||||
["en", "cn"].some(
|
||||
LANGUAGES.some(
|
||||
(lang) => file === join(outputDirectory, `${lang}.html`) || file.startsWith(`${join(outputDirectory, lang)}${sep}`),
|
||||
),
|
||||
);
|
||||
@@ -80,23 +86,23 @@ for (const file of localizedHtmlFiles) {
|
||||
console.log(`Static export semantics verified for ${localizedHtmlFiles.length} localized pages.`);
|
||||
|
||||
const sitemap = await readFile(join(outputDirectory, "sitemap.xml"), "utf8");
|
||||
for (const localizedHome of ["https://dbxio.com/en", "https://dbxio.com/cn"]) {
|
||||
for (const localizedHome of LANGUAGES.map((language) => `https://dbxio.com/${language}`)) {
|
||||
if (!sitemap.includes(`<loc>${localizedHome}</loc>`)) {
|
||||
throw new Error(`sitemap.xml is missing localized URL: ${localizedHome}`);
|
||||
}
|
||||
}
|
||||
|
||||
for (const privateRoute of ["https://dbxio.com/en/issue", "https://dbxio.com/cn/issue"]) {
|
||||
for (const privateRoute of LANGUAGES.map((language) => `https://dbxio.com/${language}/issue`)) {
|
||||
if (sitemap.includes(`<loc>${privateRoute}</loc>`)) {
|
||||
throw new Error(`sitemap.xml must not advertise direct-only route: ${privateRoute}`);
|
||||
}
|
||||
}
|
||||
|
||||
for (const issuePage of ["en/issue.html", "cn/issue.html"]) {
|
||||
for (const issuePage of LANGUAGES.map((language) => `${language}/issue.html`)) {
|
||||
const content = await readFile(join(outputDirectory, issuePage), "utf8");
|
||||
if (!content.includes('<meta name="robots" content="noindex, nofollow, nocache"')) {
|
||||
throw new Error(`${issuePage} must remain excluded from search indexing.`);
|
||||
}
|
||||
}
|
||||
|
||||
console.log("Static export sitemap verified with independent English and Chinese URLs.");
|
||||
console.log(`Static export sitemap verified with independent URLs for ${LANGUAGES.join(", ")}.`);
|
||||
|
||||
Reference in New Issue
Block a user