Giter Club home page Giter Club logo

ravendb / ravendb Goto Github PK

View Code? Open in Web Editor NEW
3.4K 157.0 818.0 699.62 MB

ACID Document Database

Home Page: https://ravendb.net

License: Other

C# 83.54% PowerShell 0.20% Shell 0.14% HTML 2.35% CSS 0.01% JavaScript 3.20% TypeScript 9.09% Batchfile 0.01% Smalltalk 0.01% Lua 0.01% Dockerfile 0.01% Python 0.19% C 0.07% TSQL 0.01% Less 0.81% Makefile 0.01% ANTLR 0.02% Handlebars 0.01% SCSS 0.35%
ravendb c-sharp document-database nosql nosql-databases nosql-data-storage database

ravendb's Introduction

RavenDB - An ACID NoSQL Document Database

This repository contains source code for the RavenDB document database. With a RavenDB database you can set up a NoSQL data architecture or add a NoSQL layer to your current relational database.

RavenDB Studio

Supported Platforms

  • Windows
  • Linux
  • Docker
  • MacOS
  • Raspberry Pi

Grab Your License and Download Latest Version

Request your license.

Download the latest version of RavenDB.

Getting Started

Install and set up your database.

Learn RavenDB Quickly

RavenDB Bootcamp is a free, self-directed learning course. In just three units you will learn how to use RavenDB to create fully-functional, real-world programs with NoSQL Databases. If you are unfamiliar with NoSQL, it’s okay. We will provide you with all the information you need.

Stay Updated on New Developments

We keep adding new features to improve your RavenDB experience. Check out our latest improvements, updated weekly.

Documentation

Access full documentation for RavenDB. Like our database, it is easy to use.

Where to Ask for Help

If you have any questions, or need further assistance, you can contact us directly.

Report an Issue

Please check where to report an issue in our contribution guidelines.

RavenDB Developer Community Group

If you have any questions please visit our discussions page or check Google community group archive. The solutions for the most common challenges are available. You are welcome to join!

Pull Requests

Please check how to submit a Pull Request in our contribution guidelines.

Setup & Run

First please review and set up prerequisites.

Launch RavenDB:

Running locally:

<path/to/ravendb>/Server/Raven.Server

Registering as service in Windows using rvn utility available in the package Server directory:

<path\to\ravendb>\rvn.exe windows-service register --service-name RavenDB4

Hello World (.NET)

Server Side

  • Launch a RavenDB server instance as follows:
<path/to/ravendb>/Server/Raven.Server --ServerUrl=http://localhost:8080
  • Open a web browser and enter http://localhost:8080

  • Click on Databases in the menu on the left-hand side, and then create a new database named SampleDataDB

  • Click on Settings and then on Create Sample Data in the left menu. Now Click on Create

Client Side

mkdir HelloWorld
cd HelloWorld
dotnet new console
  • Add the RavenDB Client package:
   dotnet add package RavenDB.Client --version 6.0.0-*
  • Replace the content of Program.cs with the following:
using System;
using Raven.Client.Documents;

namespace HelloWorld
{
    class Shippers
    {
        public string Name;
        public string Phone;
    }
    
    class Program
    {
        static void Main(string[] args)
        {
            using (var store = new DocumentStore
            {
                Urls = new string[] {"http://localhost:8080"},
                Database = "SampleDataDB"
            })
            {
                store.Initialize();

                using (var session = store.OpenSession())
                {
                    var shipper = session.Load<Shippers>("shippers/1-A");
                    Console.WriteLine("Shipper #1 : " + shipper.Name + ", Phone: " + shipper.Phone);
                }
            }
        }
    }
}
  • Type:
dotnet restore
dotnet build
dotnet run

SAST Tools

Enjoy :)

ravendb's People

Contributors

arekpalinski avatar aviv86 avatar aviviadi avatar ayende avatar bennage avatar danieldar avatar danielle9897 avatar davidfowl avatar efratshenhar avatar garayx avatar gregolsky avatar grisha-kotler avatar haludi avatar iftahbe avatar jamesnk avatar kalczur avatar karmeli87 avatar kwiato avatar lastav5 avatar maciejaszyk avatar maximburyak avatar ml054 avatar myarichuk avatar ppekrol avatar ravendb-bot avatar redknightlois avatar samueldjack avatar shaharhikri avatar shiranshalom avatar synhershko avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

ravendb's Issues

JSON editor corrupts document

Put this in the raw json format
{"name":"ayende","email":"[email protected]","projects":[{"name":"raven"}]}

Move to the json editor, try to open the projects node, see that you see nothing, switch back to raw json, and you see the projects are gone.

Disable indexes that have more than 10% failure rate

If an index cause more than 10% failures (exceptions on indexes), it probably means that it is faulty, and we should disable it.
Disabled indexes cannot be queried and would require re-definition to be of use.

Query by document id

Should be able to POST a list of document ids to the server and get back their content.

Implement DTC support

One of the comments that I heard was that DTC support would be important for several key scenarios (such as using Raven with Rhino Service Bus, or any queuing implementation).
We should implement a DTC support using System.Transactions.

Merge tasks

When a task is added, should look for existing tasks of the same type on the same index/view and merge it with them.
Should increase perf some.

Keep track of indexing errors

Simple numbers:
Number of total indexed documents (including re-indexing).
Number of failed indexing attempts (threw an exception)

HTML UI for the DB

Allow to see documents, see queries, execute queries, add queries , update queries, remove queries, edit documents.
Should be self contained as a simple HTML + JS app working against the server.

Security

Allow to define meta data about a document (using headers)
Saying who are the users/groups allows to see it

This requires us to have user/groups
And requires us to have authentication

Provide more stats

number of requests
number of puts, gets, deletes
number of queries
avg request time
longest request url

where longest means took the most time
biggest request url, where biggest means the db sent the most data

Batching PUT & DELETE

Not a RESTful operation, but required.

The simplest is to create
Put( Doc [] docs)

And then to have something like;

/bulkdocs - where post accepts an array of documents and save them in a single transaction The format could be;

[ { method: "PUT", data: { the actual doc }, metadata: { meta }, key: key }, { method: "DELETE", key: key } }

Update queries

So we can support "migration" style queries like:

from doc in docs
where doc.type == "post"
select new
{
type = doc.type,
content = doc.content,
posted_at = doc.posted_at,
categories = new [] { doc.category }
}

Should run at the server side, not client side, and the output overwrite the current document.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    πŸ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. πŸ“ŠπŸ“ˆπŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❀️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.